@ebay/ebayui-core
Version:
Collection of core eBay components; considered to be the building blocks for all composite structures, pages & apps.
46 lines (45 loc) • 1.45 kB
TypeScript
import { createLinear } from "makeup-roving-tabindex";
import type { WithNormalizedProps } from "../../global";
export interface Panel extends Omit<Marko.HTML.Div, `on${string}`> {
}
export interface Tab extends Omit<Marko.HTML.Div, `on${string}`> {
disabled?: Marko.HTML.Button["disabled"];
}
export interface TabsEvent {
selectedIndex: number;
}
interface TabsInput extends Omit<Marko.HTML.Div, `on${string}`> {
tab?: Marko.AttrTag<Tab>;
panel?: Marko.AttrTag<Panel>;
activation?: "auto" | "manual";
size?: "large" | "regular";
fake?: boolean;
"selected-index"?: number | string;
"on-select"?: (event: TabsEvent) => void;
}
export interface Input extends WithNormalizedProps<TabsInput> {
}
export interface State {
selectedIndex: number;
tab: Tab[];
panel: Panel[];
}
declare class Tabs extends Marko.Component<Input, State> {
_linearRovingTabindex: ReturnType<typeof createLinear>;
/**
* Handle a11y for heading
* https://ebay.gitbooks.io/mindpatterns/content/disclosure/tabs.html
*/
handleHeadingKeydown(dataIndex: number, event: KeyboardEvent): void;
handleHeadingClick(selectedIndex: number): void;
onCreate(): void;
onInput(input: Input): void;
onMount(): void;
onUpdate(): void;
onRender(): void;
onDestroy(): void;
_setIndex(selectedIndex: number): void;
_setupMakeup(): void;
_cleanupMakeup(): void;
}
export default Tabs;