import { ButtonVariant } from '@patternfly/react-core'; import { ComponentClass } from 'react'; export declare const enum PageActionType { Button = 0, Link = 1, Switch = 2, Dropdown = 3, Seperator = 4 } export declare const enum PageActionSelection { None = 0, Single = 1, Multiple = 2 } export type IPageAction = IPageActionButton | IPageActionButtonSingle | IPageActionButtonMultiple | IPageActionLink | IPageActionLinkSingle | IPageActionSwitch | IPageActionSwitchSingle | IPageActionDropdown | IPageActionDropdownSingle | IPageActionDropdownMultiple | IPageActionSeperator; interface IPageActionCommon { icon?: ComponentClass; label: string; tooltip?: string; isDanger?: boolean; ouiaId?: string; isPinned?: boolean; } interface IPageActionNoneCommon extends IPageActionCommon { selection: PageActionSelection.None; isHidden?: () => boolean; isDisabled?: string | (() => string | undefined); } interface IPageActionSingleCommon extends IPageActionCommon { selection: PageActionSelection.Single; isHidden?: (item: T) => boolean; isDisabled?: string | ((item: T) => string | undefined); } interface IPageActionMultipleCommon extends IPageActionCommon { selection: PageActionSelection.Multiple; isDisabled?: string | ((items: T[]) => string | undefined); } export interface IPageActionButton extends IPageActionNoneCommon { type: PageActionType.Button; selection: PageActionSelection.None; variant?: ButtonVariant; onClick: () => unknown; } export interface IPageActionButtonSingle extends IPageActionSingleCommon { type: PageActionType.Button; selection: PageActionSelection.Single; variant?: ButtonVariant; onClick: (item: T) => unknown; } export interface IPageActionButtonMultiple extends IPageActionMultipleCommon { type: PageActionType.Button; selection: PageActionSelection.Multiple; variant?: ButtonVariant; onClick: (items: T[]) => unknown; } export interface IPageActionLink extends IPageActionNoneCommon { type: PageActionType.Link; selection: PageActionSelection.None; href: string; variant?: ButtonVariant; } export interface IPageActionLinkSingle extends IPageActionSingleCommon { type: PageActionType.Link; selection: PageActionSelection.Single; href: (item: T) => string; variant?: ButtonVariant; } export interface IPageActionSwitch extends IPageActionNoneCommon { type: PageActionType.Switch; onToggle: (enable: boolean) => unknown; isSwitchOn: () => boolean; showPinnedLabel?: boolean; isReversed?: boolean; ariaLabel: (isEnabled: boolean) => string; } export interface IPageActionSwitchSingle extends IPageActionSingleCommon { type: PageActionType.Switch; onToggle: (item: T, enable: boolean) => unknown; isSwitchOn: (item: T) => boolean; showPinnedLabel?: boolean; isReversed?: boolean; ariaLabel: (isEnabled: boolean) => string; } export interface IPageActionDropdown extends IPageActionNoneCommon { type: PageActionType.Dropdown; actions: IPageAction[]; variant?: ButtonVariant; } export interface IPageActionDropdownSingle extends IPageActionSingleCommon { type: PageActionType.Dropdown; actions: IPageAction[]; variant?: ButtonVariant; } export interface IPageActionDropdownMultiple extends IPageActionMultipleCommon { type: PageActionType.Dropdown; actions: IPageAction[]; variant?: ButtonVariant; } export interface IPageActionSeperator { type: PageActionType.Seperator; } export {};