@public-ui/components
Version:
Contains all web components that belong to KoliBri - The accessible HTML-Standard.
55 lines (54 loc) • 2.45 kB
TypeScript
import type { Generic } from 'adopted-style-sheets';
import type { PropLabel, StatefulPropTableCallbacks, PropTableData, PropTableDataFoot, PropTableSelection } from '../props';
import type { KoliBriTableDataType, KoliBriTableHeaderCell, Stringified, KoliBriSortDirection, KoliBriTableSelection } from '../types';
import type { KoliBriPaginationProps } from './pagination';
import type { PropPaginationPosition } from '../props/pagination-position';
export type KoliBriTableSelectedHead = {
key: string;
label: string;
sortDirection: KoliBriSortDirection;
};
type KoliBriTableSort = <T>(data: T[]) => T[];
export type KoliBriSortFunction = (data: KoliBriTableDataType[]) => KoliBriTableDataType[];
export type KoliBriDataCompareFn = (a: KoliBriTableDataType, b: KoliBriTableDataType) => number;
export type KoliBriTableHeaderCellWithLogic = KoliBriTableHeaderCell & {
compareFn?: KoliBriDataCompareFn;
sort?: KoliBriTableSort;
sortDirection?: KoliBriSortDirection;
};
export type KoliBriTableHeaders = {
horizontal?: KoliBriTableHeaderCellWithLogic[][];
vertical?: KoliBriTableHeaderCellWithLogic[][];
};
export type KoliBriTablePaginationProps = Generic.Element.Members<{
page: number;
}, KoliBriPaginationProps>;
type KoliBriTablePaginationStates = Generic.Element.Members<{
page: number;
max: number;
}, KoliBriPaginationProps>;
type RequiredProps = {
headers: Stringified<KoliBriTableHeaders>;
} & PropTableData & PropLabel;
type OptionalProps = {
allowMultiSort: boolean;
minWidth: string;
pagination: boolean | Stringified<KoliBriTablePaginationProps>;
} & PropTableDataFoot & PropPaginationPosition & PropTableSelection & StatefulPropTableCallbacks;
type RequiredStates = {
allowMultiSort: boolean;
data: KoliBriTableDataType[];
dataFoot: KoliBriTableDataType[];
headers: KoliBriTableHeaders;
pagination: KoliBriTablePaginationStates;
sortedData: KoliBriTableDataType[];
} & PropLabel & PropPaginationPosition;
type OptionalStates = {
minWidth: string;
sortDirection: KoliBriSortDirection;
selection: KoliBriTableSelection;
} & StatefulPropTableCallbacks;
export type TableProps = Generic.Element.Members<RequiredProps, OptionalProps>;
export type TableStates = Generic.Element.Members<RequiredStates, OptionalStates>;
export type TableAPI = Generic.Element.ComponentApi<RequiredProps, OptionalProps, RequiredStates, OptionalStates>;
export {};