UNPKG

@shopify/app-bridge-core

Version:

**[Join our team and work on libraries like this one.](https://www.shopify.ca/careers)**

107 lines (106 loc) 4.22 kB
import { Action as AppBridgeRedirectAction } from '../Navigation/Redirect'; import { ClientApplication } from '../../client'; import { ActionSetWithChildren } from '../ActionSet'; import { Button, Payload as ButtonPayload } from '../Button'; import { ButtonGroup, Payload as ButtonGroupPayload } from '../ButtonGroup'; import { ActionSetProps, ClickAction, Group, MetaAction } from '../types'; export declare enum Action { UPDATE = "APP::TITLEBAR::UPDATE", BUTTON_CLICK = "APP::TITLEBAR::BUTTONS::BUTTON::CLICK", BUTTON_UPDATE = "APP::TITLEBAR::BUTTONS::BUTTON::UPDATE", BUTTON_GROUP_UPDATE = "APP::TITLEBAR::BUTTONS::BUTTONGROUP::UPDATE", BREADCRUMBS_CLICK = "APP::TITLEBAR::BREADCRUMBS::BUTTON::CLICK", BREADCRUMBS_UPDATE = "APP::TITLEBAR::BREADCRUMBS::BUTTON::UPDATE" } export interface Breadcrumb { content: string; url: string; } export interface ButtonsOptions { primary?: Button; secondary?: (ButtonGroup | Button)[]; } export interface Options { title?: string; buttons?: ButtonsOptions; breadcrumbs?: Button; } export interface ButtonsPayload { primary?: ButtonPayload; secondary?: (ButtonPayload | ButtonGroupPayload)[]; } export interface Payload { readonly id?: string; title?: string; buttons?: ButtonsPayload; breadcrumbs?: ButtonPayload; } export interface UpdateAction extends MetaAction { readonly group: typeof Group.TitleBar; payload: Payload; } export type TitleBarAction = UpdateAction | ClickAction | MetaAction; export declare function clickActionButton(id: string, payload?: any): ClickAction; export declare function clickBreadcrumb(id: string, payload?: any): ClickAction; export declare function update(payload: Payload): UpdateAction; export type Target = Exclude<keyof typeof AppBridgeRedirectAction, 'ADMIN_SECTION'>; export interface ActionProps { /** Content the action displays */ content?: string; /** Should the action be styled as destructive */ destructive?: boolean; /** Should the action be disabled */ disabled?: boolean; /** Should the action be loading */ loading?: boolean; /** Forces url to open in a new tab */ external?: boolean; /** Use Polaris plain styling */ plain?: boolean; /** * Where to display the target link * @default 'APP' */ target?: Target; /** A destination to link to */ url?: string; id: string; /** Callback when an action takes place */ onAction?(): void; } export type DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]>; } : T; export interface UpdatePayload { readonly id?: string; title?: string; buttons?: ButtonsPayload; breadcrumb?: ButtonPayload; } export interface TitleBarApi { update: (payload: DeepPartial<Payload>) => void; } export declare class TitleBar extends ActionSetWithChildren implements ActionSetProps<Options, Payload> { title?: string; primary?: ButtonPayload; secondary?: (ButtonPayload | ButtonGroupPayload)[]; primaryOptions?: Button; secondaryOptions?: (ButtonGroup | Button)[]; breadcrumb?: ButtonPayload; breadcrumbsOption?: Button; constructor(app: ClientApplication, options: Options); get buttons(): ButtonsPayload | undefined; get buttonsOptions(): ButtonsOptions | undefined; get options(): Options; get payload(): Payload; set(options: Partial<Options>, shouldUpdate?: boolean): this; dispatch(action: Action): this; protected getButton(button: Button | ButtonGroup, subgroups: string[], updateCb: (newPayload: ButtonPayload | ButtonGroupPayload) => void): ButtonPayload | ButtonGroupPayload; protected updatePrimaryButton(newPayload: ButtonPayload): void; protected updateSecondaryButtons(newPayload: ButtonPayload | ButtonGroupPayload): void; protected updateBreadcrumbButton(newPayload: ButtonPayload): void; protected setPrimaryButton(newOptions?: Button): void; protected setSecondaryButton(newOptions?: (ButtonGroup | Button)[]): void; protected setBreadcrumbs(breadcrumb?: Button): void; protected getChildButton(newAction: undefined | Button, currentAction: undefined | Button): Button | undefined; }