@circe/table
Version:
Circe Components for Angular :: Table Component
110 lines (109 loc) • 3.83 kB
TypeScript
import { NpaIconOld, NpaId, NpaOption, NpaStatuses } from '@circe/core';
import { SelectConfig } from '@circe/select';
import { NpaActionConfig } from './table-actions/table-actions.types';
import { Observable } from 'rxjs';
import { NpaDropdownConfig } from '@circe/dropdown';
export declare type NpaTableColumnType = 'date' | 'radio' | 'select' | 'checkbox' | 'link' | 'badge' | 'icon' | 'action';
export declare type NpaTableRowValue<T> = {
npaTableDataSource: T;
[key: string]: any;
};
export declare type NpaTableLinkAction<T> = (row: NpaTableRowValue<T>) => void;
export declare type NpaActionConfigSource<T> = (row: NpaTableRowValue<T>) => NpaActionConfig<T>[];
export declare type NpaTableIconSource<T> = (row: NpaTableRowValue<T>) => NpaIconOld;
export declare type NpaTableStatusSource<T> = (row: NpaTableRowValue<T>) => NpaStatuses;
export declare type NpaTableSortSource<T> = (sortType: 'asc' | 'desc', columnId: NpaId, rows: NpaTableRowValue<T>[]) => Observable<NpaTableRowValue<T>[]>;
export declare type NpaTableSortType = 'asc' | 'desc';
export declare type NpaTableActionType = 'button' | 'iconButton' | 'link';
export interface NpaTableConfigModel<T> {
keyColumnParam: string;
columns: NpaTableColumnConfigurationModel<T>[];
actionsConfig?: NpaTableActionsConfigurationModel<T>;
defaultActionColumnId?: string;
hoverRows?: boolean;
showHeader?: boolean;
sortTable?: boolean;
truncateTexts?: boolean;
tableHeight?: number;
minColumnWidth?: number;
initialSort?: NpaTableSort;
sortSource?: NpaTableSortSource<T>;
emitOnScroll?: boolean;
}
export interface NpaTableActionsConfigurationModel<T> {
actionsType: NpaTableActionType;
dropdownConfig?: NpaDropdownConfig;
defaultActionId?: NpaId;
columnName?: string;
showOnHover?: boolean;
columnWidth?: number;
group?: boolean;
hideColumn?: boolean;
actions?: NpaActionConfig<T>[] | NpaActionConfigSource<T>;
}
export interface NpaTableColumnConfigurationModel<T> {
id?: NpaId;
sortable?: boolean;
defaultActionColumn?: boolean;
columnName?: string;
param?: string;
type?: NpaTableColumnType;
columnWidth?: number;
typeConfig?: NpaRadioColumnConfig | NpaCheckboxColumnConfig | NpaSelectColumnConfig | NpaLinkColumnConfig<T> | NpaIconColumnConfig<T> | NpaBadgeColumnConfig<T> | NpaDateColumnConfig;
}
export interface NpaRadioColumnConfig {
label?: string;
defaultValue?: number;
}
export interface NpaCheckboxColumnConfig {
label?: string;
checkboxInHeader?: boolean;
defaultValue?: boolean;
}
export interface NpaSelectColumnConfig {
options: NpaOption[];
multilevel?: boolean;
multilevelButtonLabel?: string;
placeholder?: string;
defaultValue?: NpaId[];
selectConfig?: SelectConfig;
}
export interface NpaLinkColumnConfig<T> {
label: string;
linkAction?: NpaTableLinkAction<T>;
}
export interface NpaIconColumnConfig<T> {
icon: NpaIconOld | NpaTableIconSource<T>;
onlyIcon?: boolean;
}
export interface NpaBadgeColumnConfig<T> {
type?: NpaStatuses | NpaTableStatusSource<T>;
}
export interface NpaDateColumnConfig {
dateMask?: string;
}
export interface NpaTableColumn<T> extends Omit<NpaTableColumnConfigurationModel<T>, 'type'> {
type?: NpaTableColumnType | 'action';
rowId?: NpaId;
value?: any;
icon?: string;
onlyIcon?: boolean;
badgeType?: string;
dateMask?: string;
selectConfig?: SelectConfig;
actions?: NpaActionConfig<T>[];
}
export interface NpaTableSort {
columnId: NpaId;
sortType: NpaTableSortType;
}
export interface NpaTableFilter {
columns: NpaId[];
value: any;
searchExactly?: boolean;
}
export interface NpaTableCheckboxSelection {
checkAll: boolean;
checkNone: boolean;
model: boolean;
}