UNPKG

@happy-table/vue3

Version:

A high-performance Vue 3 table component for B2B systems with TypeScript support

93 lines (92 loc) 3.21 kB
import { TableRow, TableColumn } from '../types'; import { getNestedValue } from './common'; export { getNestedValue }; export type FilterOperator = 'equals' | 'notEquals' | 'contains' | 'notContains' | 'startsWith' | 'endsWith' | 'greaterThan' | 'lessThan' | 'greaterThanOrEqual' | 'lessThanOrEqual' | 'between' | 'in' | 'notIn' | 'isEmpty' | 'isNotEmpty' | 'regex'; export interface FilterCondition { column: string; operator: FilterOperator; value: unknown; caseSensitive?: boolean; } export interface FilterGroup { conditions: (FilterCondition | FilterGroup)[]; operator: 'and' | 'or'; } export interface SearchConfig { text: string; columns?: string[]; caseSensitive?: boolean; regex?: boolean; highlight?: boolean; } export interface FilterResult { data: TableRow[]; highlightInfo?: Map<string, HighlightInfo[]>; } export interface HighlightInfo { column: string; matches: Array<{ start: number; end: number; text: string; }>; } /** * Get value from nested object path */ /** * Convert value to string for comparison */ export declare function valueToString(value: any): string; /** * Apply a single filter condition to a row */ export declare function applyFilterCondition(row: TableRow, condition: FilterCondition): boolean; /** * Apply filter group (complex filtering with AND/OR logic) */ export declare function applyFilterGroup(row: TableRow, group: FilterGroup): boolean; /** * Simple text search across multiple columns */ export declare function applyTextSearch(data: TableRow[], searchConfig: SearchConfig, columns: TableColumn[]): FilterResult; /** * Apply complex filtering with conditions and groups */ export declare function applyComplexFilter(data: TableRow[], filterGroup: FilterGroup): TableRow[]; /** * Combine multiple filters (search + complex filters) */ export declare function applyAllFilters(data: TableRow[], searchConfig?: SearchConfig, filterGroup?: FilterGroup, columns?: TableColumn[]): FilterResult; /** * Create a simple filter condition */ export declare function createFilterCondition(column: string, operator: FilterOperator, value: any, caseSensitive?: boolean): FilterCondition; /** * Create a filter group */ export declare function createFilterGroup(conditions: (FilterCondition | FilterGroup)[], operator?: 'and' | 'or'): FilterGroup; /** * Validate filter condition */ export declare function validateFilterCondition(condition: FilterCondition, columns: TableColumn[]): boolean; /** * Validate filter group recursively */ export declare function validateFilterGroup(group: FilterGroup, columns: TableColumn[]): boolean; /** * Get filterable columns from column configuration */ export declare function getFilterableColumns(columns: TableColumn[]): TableColumn[]; /** * Extract unique values from a column for filter options */ export declare function getColumnUniqueValues(data: TableRow[], columnKey: string, limit?: number): any[]; /** * Highlight text matches in a string */ export declare function highlightMatches(text: string, matches: Array<{ start: number; end: number; text: string; }>, highlightClass?: string): string;