@ebay/ebayui-core
Version:
Collection of core eBay components; considered to be the building blocks for all composite structures, pages & apps.
83 lines (82 loc) • 3.07 kB
TypeScript
import { DropdownUtil } from "../../common/dropdown";
import { MenuUtils, type BaseMenuInput, type MenuState } from "../../common/menu-utils";
import type { MenuEvent } from "../ebay-menu/component";
import type { Input as EbayButtonInput, ButtonEvent } from "../ebay-button/index.marko";
import { WithNormalizedProps } from "../../global";
export interface MenuButtonEvent {
el?: Element;
originalEvent?: Event;
indexes?: number[];
checked?: number[];
checkedValues?: string[];
/** @deprecated in v5 */
index?: number;
}
interface MenuButtonInput extends Omit<BaseMenuInput, "variant">, Omit<Marko.HTML.Span, `on${string}`> {
"collapse-on-select"?: boolean;
"prefix-id"?: string;
variant?: "overflow" | "form" | "button" | "icon" | "filter";
borderless?: boolean;
partiallyDisabled?: EbayButtonInput["partiallyDisabled"];
priority?: "primary" | "secondary" | "tertiary" | "delete" | "none";
size?: EbayButtonInput["size"];
transparent?: boolean;
"a11y-text"?: Marko.HTMLAttributes["aria-label"];
disabled?: boolean;
split?: string;
"no-toggle-icon"?: boolean;
label?: Marko.AttrTag<{
renderBody?: Marko.Body;
}>;
"prefix-label"?: string;
icon?: Marko.AttrTag<{
renderBody?: Marko.Body;
}>;
"footer-button"?: Marko.AttrTag<EbayButtonInput>;
"on-footer-button-click"?: (event: ButtonEvent<MouseEvent>) => void;
status?: Marko.AttrTag<{
renderBody?: Marko.Body<[number, Boolean[]]>;
}>;
text?: string;
reverse?: boolean;
strategy?: "absolute" | "fixed";
flip?: boolean;
"fix-width"?: boolean;
"on-expand"?: (event: MenuButtonEvent) => void;
"on-collapse"?: (event: MenuButtonEvent) => void;
"on-change"?: (event: MenuButtonEvent) => void;
"on-select"?: (event: MenuButtonEvent) => void;
"on-mousedown"?: (event: MenuButtonEvent) => void;
}
export interface Input extends WithNormalizedProps<MenuButtonInput> {
}
export default class extends MenuUtils<Input, MenuState> {
expander: any;
isExpanded?: boolean;
dropdownUtil: DropdownUtil;
onCreate(): void;
toggleItemChecked(index: number, itemEl: Element | undefined, originalEvent?: Event): void;
handleItemClick(index: number, e: Event, itemEl?: Element): void;
handleMenuKeydown({ el, originalEvent, index }: MenuEvent): void;
focus(): void;
handleButtonEscape(): void;
handleExpand(): void;
handleCollapse(): void;
handleMenuChange({ el, originalEvent, index }: MenuEvent): void;
handleMenuSelect({ el, originalEvent, index }: MenuEvent): void;
handleMousedown(originalEvent: MouseEvent, el: HTMLSpanElement): void;
emitComponentEvent({ eventType, el, originalEvent, index, }: {
eventType: string;
el?: Element;
originalEvent?: Event;
index?: number;
}): void;
onInput(input: Input): void;
onRender(): void;
onMount(): void;
onUpdate(): void;
onDestroy(): void;
_setupMakeup(): void;
_cleanupMakeup(): void;
}
export {};