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, the resource
defaults to the current resource. If your resource defines multiple entry points, you can target a specific
entry using the <resource-key>/<entry-key> syntax. Only Custom UI entries are supported, and the
entry's HTML file must be named <entry-key>.html (for example, an entry key of settings resolves
to settings.html). See Resources — Multiple entry points.
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: