@ebay/ebayui-core
Version:
Collection of core eBay components; considered to be the building blocks for all composite structures, pages & apps.
64 lines (63 loc) • 2.34 kB
TypeScript
import { WithNormalizedProps } from "../../global";
import { CheckboxEvent } from "../ebay-checkbox/component-browser";
export type TableSort = "asc" | "desc" | "none";
export interface TableHeader extends Omit<Marko.HTML.TH, `on${string}`> {
"column-type"?: "normal" | "numeric" | "layout" | "icon-action";
"row-header"?: boolean;
name?: string;
sort?: TableSort | boolean;
href?: Marko.HTML.A["href"];
renderBody: Marko.Body;
}
export interface TableCell extends Omit<Marko.HTML.TD & Marko.HTML.TH, `on${string}`> {
}
export interface TableRow extends Omit<Marko.HTML.TR, `on${string}`> {
name?: string;
selected?: boolean;
cell?: Marko.AttrTag<TableCell>;
}
export interface TableInput extends Omit<Marko.HTML.Div, `on${string}`> {
header: Marko.AttrTag<WithNormalizedProps<TableHeader>>;
mode?: "none" | "selection";
"body-state"?: "loading" | "none";
"all-selected"?: Marko.HTMLAttributes["aria-checked"];
row?: Marko.AttrTag<TableRow>;
"frozen-header"?: boolean;
density?: "compact" | "relaxed" | "none";
"a11y-loading-text"?: string;
"a11y-select-all-text"?: string;
"a11y-select-row-text"?: string;
"on-select"?: (event: {
selected: Record<string, boolean>;
allSelected?: Marko.HTMLAttributes["aria-checked"];
}) => void;
"on-sort"?: (event: {
sorted: Record<string, TableSort>;
}) => void;
}
export interface Input extends WithNormalizedProps<TableInput> {
}
interface State {
selected: Record<string, boolean>;
sorted: Record<string, TableSort | undefined>;
allSelected: Marko.HTMLAttributes["aria-checked"];
}
export default class EbayTable extends Marko.Component<Input, State> {
disabledItems: Set<HTMLElement>;
tbody: HTMLElement;
animationFrame: number;
onCreate(): void;
onMount(): void;
onInput(input: Input): void;
onUpdate(): void;
onRender(): void;
onDestroy(): void;
getSelectedRowStateFromInput(input: Input): Record<string, boolean>;
getSortedColStateFromInput(input: Input): Record<string, TableSort>;
getAllSelectedState(input: Input): Marko.HTMLAttributes["aria-checked"];
headerSelect(): void;
rowSelect(name: string, { checked }: CheckboxEvent): void;
setLoading(): void;
sortColumn(name: string): void;
}
export {};