@workday/canvas-kit-react
Version:
The parent module that contains all Workday Canvas Kit React components
299 lines • 13.9 kB
TypeScript
import * as React from 'react';
export interface PopupProps {
/**
* The contents of the Popup. Can be `Popup` children or any valid elements.
*/
children: React.ReactNode;
}
/**
* This component is a container component that has no semantic element. It provides a React Context
* model for all Popup subcomponents. A `model` can be manually passed to subcomponents to override
* the model context.
*
* ```tsx
* // using Popup
* <Popup model={model}>
* <Popup.Target /> // no model here
* </Popup>
*
* // using models on subcomponents
* <>
* <Popup.Target model={model} />
* </>
* ```
*/
export declare const Popup: import("@workday/canvas-kit-react/common").ComponentM<PopupProps & Partial<{
returnFocusRef: React.RefObject<any> | undefined;
initialFocusRef: React.RefObject<any> | undefined;
id: string;
initialVisibility: import("../..").Visibility;
}> & {
onUpdatePlacement?: ((data: {
placement: import("@popperjs/core").Placement;
}, prevState: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
}) => void) | undefined;
onShow?: ((data: Event | React.SyntheticEvent<Element, Event> | undefined, prevState: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
}) => void) | undefined;
onHide?: ((data: Event | React.SyntheticEvent<Element, Event> | undefined, prevState: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
}) => void) | undefined;
} & {
shouldUpdatePlacement?: ((data: {
placement: import("@popperjs/core").Placement;
}, state: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
}) => boolean) | undefined;
shouldShow?: ((data: Event | React.SyntheticEvent<Element, Event> | undefined, state: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
}) => boolean) | undefined;
shouldHide?: ((data: Event | React.SyntheticEvent<Element, Event> | undefined, state: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
}) => boolean) | undefined;
}, {
state: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
};
events: {
updatePlacement(data: {
placement: import("@popperjs/core").Placement;
}): void;
show(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
hide(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
};
}> & {
/**
* A `Popup.Target` is any element that is meant to show the Popup. The default component
* rendered by this component is a {@link SecondaryButton} element. You can override this by
* passing the desired component via `as`. Many examples above use `as={DeleteButton}`. If you
* want to render a {@link TertiaryButton} instead, use `as={TertiaryButton}`. The behavior hook
* used is called {@link usePopupTarget}.
*
* ```tsx
* const model = usePopupModel();
*
* // using this component
* <Popup.Target>Show Popup</Popup.Target>
*
* // using props instead
* const popupTargetButtonProps = usePopupTarget(model);
* <SecondaryButton {...popupTargetButtonProps}>Show Popup</SecondaryButton>
* ```
*
* `Popup.Target` doesn't provide any styling by default. All styling comes from the default
* component used, which is {@link SecondaryButton}. If you don't want any styling, you can do
* the following:
*
* ```tsx
* <Popup.Target as="button">Open</Popup.Target>
* ```
*
* To add your own styling, you could either add a `css` prop, or make a styled button and pass
* that styled component via the `as` prop.
*/
Target: import("@workday/canvas-kit-react/common").ElementComponentM<import("@workday/canvas-kit-react/common").ElementComponent<"button", import("../..").SecondaryButtonProps>, {}, {
state: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
};
events: {
updatePlacement(data: {
placement: import("@popperjs/core").Placement;
}): void;
show(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
hide(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
};
}>;
/**
* A `Popup.Popper` is a {@link Popper} component that is hooked up to the {@link PopupModel}
* automatically. The behavior hook used is called {@link usePopupPopper}.
*
* > **Note:** `Popup.Popper` renders any children to a `div` element created by the
* > {@link PopupStack}. This element is not controlled by React, so any extra element props
* > will _not_ be forwarded. The `ref` will point to the `div` element created by the
* > `PopupStack`, however. If you wish to add extra props to an element, add them to the
* > {@link PopupCard Popup.Card} instead.
*/
Popper: import("@workday/canvas-kit-react/common").ElementComponentM<"div", import("./PopupPopper").PopupPopperProps, {
state: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
};
events: {
updatePlacement(data: {
placement: import("@popperjs/core").Placement;
}): void;
show(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
hide(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
};
}>;
/**
* A `Popup.Card` is a wrapper around the {@link Card} component, but hooked up to a
* {@link PopupModel}. By default, this element has a `role=dialog` and an `aria-labelledby`.
* The behavior hook used is called {@link usePopupCard}.
*/
Card: import("@workday/canvas-kit-react/common").ElementComponentM<"div", import("./PopupCard").PopupCardProps, {
state: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
};
events: {
updatePlacement(data: {
placement: import("@popperjs/core").Placement;
}): void;
show(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
hide(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
};
}>;
/**
* A `Popup.CloseIcon` is an icon button that is the `X` in the top of a popup. It will hide a
* popup when clicked. The behavior hook used is called {@link usePopupCloseButton}.
*/
CloseIcon: import("@workday/canvas-kit-react/common").ElementComponentM<"button", import("./PopupCloseIcon").PopupCloseIconProps, {
state: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
};
events: {
updatePlacement(data: {
placement: import("@popperjs/core").Placement;
}): void;
show(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
hide(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
};
}>;
/**
* A `Popup.Heading` is a wrapper around {@link CardHeading Card.Heading} that connect the
* heading to a {@link PopupModel}. It will add an `id` to the element that match the
* `aria-labelledby` that is applied to the `Popup.Card` element for accessibility. The behavior
* hook used is called {@link usePopupHeading}.
*/
Heading: import("@workday/canvas-kit-react/common").ElementComponentM<"h2", import("./PopupHeading").PopupHeadingProps, {
state: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
};
events: {
updatePlacement(data: {
placement: import("@popperjs/core").Placement;
}): void;
show(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
hide(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
};
}>;
/**
* A `Popup.Body` is a thin wrapper around {@link CardBody Card.Body} and doesn't actually take
* a model. It adds `body` styling and nothing else.
*/
Body: import("@workday/canvas-kit-react/common").ElementComponentM<"div", import("../../card/lib/CardBody").CardBodyProps & React.HTMLAttributes<HTMLDivElement>, {
state: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
};
events: {
updatePlacement(data: {
placement: import("@popperjs/core").Placement;
}): void;
show(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
hide(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
};
}>;
/**
* A `Popup.CloseButton` is a button that will hide a popup. By default, this is a
* {@link SecondaryButton} component, but `as` can be used to render any button element (i.e
* {@link DeleteButton} or {@link PrimaryButton}). The behavior hook used is called
* {@link usePopupCloseButton}.
*/
CloseButton: import("@workday/canvas-kit-react/common").ElementComponentM<import("@workday/canvas-kit-react/common").ElementComponent<"button", import("../..").SecondaryButtonProps>, import("./PopupCloseButton").PopupCloseButtonProps, {
state: {
stackRef: React.RefObject<HTMLDivElement>;
targetRef: React.RefObject<HTMLButtonElement>;
initialFocusRef: React.RefObject<any> | undefined;
returnFocusRef: React.RefObject<any> | undefined;
placement: import("@popperjs/core").Placement;
id: string;
visibility: "hidden" | "visible";
};
events: {
updatePlacement(data: {
placement: import("@popperjs/core").Placement;
}): void;
show(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
hide(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
};
}>;
};
//# sourceMappingURL=Popup.d.ts.map