UNPKG

@sixbell-telco/sdk

Version:

A collection of reusable components designed for use in Sixbell Telco Angular projects

59 lines (58 loc) 1.76 kB
export interface FilterOption { value: string; label: string; } export interface PaginatedFilterOptions { results: FilterOption[]; total: number; hasMore: boolean; } export type FilterType = 'text' | 'numberRange' | 'multiSelect' | 'multiSelectCombobox'; export interface FilterMetadataBase { type: FilterType; label: string; } export interface TextFilterMetadata extends FilterMetadataBase { type: 'text'; } export interface NumberRangeFilterMetadata extends FilterMetadataBase { type: 'numberRange'; min?: number; max?: number; } export interface MultiSelectFilterMetadata extends FilterMetadataBase { type: 'multiSelect'; options: FilterOption[]; searchable?: boolean; } export interface MultiSelectComboboxFilterMetadata extends FilterMetadataBase { type: 'multiSelectCombobox'; pageSize?: number; } export type FilterMetadata = TextFilterMetadata | NumberRangeFilterMetadata | MultiSelectFilterMetadata | MultiSelectComboboxFilterMetadata; export type AllFilterMetadata = Record<string, FilterMetadata>; export interface TextFilterState { value: string | null; } export interface NumberRangeFilterState { min: number | null; max: number | null; } export interface MultiSelectFilterState { values: string[]; } export type ColumnFilterState = TextFilterState | NumberRangeFilterState | MultiSelectFilterState; export type FiltersState = Record<string, ColumnFilterState>; export interface DataTablePagination { id: string; currentPage: number; itemsPerPage: number; search: string; sortColumn: string | null; sortDirection: 'asc' | 'desc' | null; filters: FiltersState; } export interface BackendPagination<T> { total: number; results: T[]; }