UNPKG

@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
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 {};