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: 320px
600px
h: 40vh
minHeight: 520px
800px
h: 70vh
minHeight: 720px
968px
h: 90vh
100%
h: 100%
context: Custom context that can be added to the context in the modal resource. It will appear
under the 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: