The Modal class enables your Custom UI app to open a modal dialog with a specified resource.
1 2interface ModalOptions { resource?: string | null; onClose?: (payload?: any) => any; size?: 'small' | 'medium' | 'large' | 'xlarge' | 'max'; context?: any; closeOnEscape?: boolean; closeOnOverlayClick?: boolean; } class Modal { constructor(opts?: ModalOptions); open(): Promise<void>; }
resource: The key of the static resource to open in the modal dialog. If not provided, resource defaults current resource.
onClose: A callback function to run when the modal dialog is closed. The function accepts an
optional payload that is passed when calling view.close(payload) from inside the modal resource.
size: The size of the modal dialog.
400px h: 20vh minHeight: 320px600px h: 40vh minHeight: 520px800px h: 70vh minHeight: 720px968px h: 90vh100% h: 100%context: Custom context that can be added to the context in the modal resource. It will appear
under the extension.modal key in the context object returned from view.getContext().
closeOnEscape: If set to false, the modal will not close when pressing escape.
closeOnOverlayClick: If set to false, the modal will not close when clicking the overlay.
Implementing a Custom UI modal requires two files:
index.js file in your app logicmy-modal-resource.js file
in the example belowindex.js
1 2import { Modal } from '@forge/bridge'; const modal = new Modal({ resource: 'my-modal-resource', onClose: (payload) => { console.log('onClose called with', payload); }, size: 'medium', context: { customKey: 'custom-value', }, }); modal.open();
my-modal-resource.js
1 2import { view } from '@forge/bridge'; const context = await view.getContext(); const customValue = context.extension.modal.customKey; view.close({ formValues: [], });
Rate this page: