In certain cases, your Power-Up might need to show UI that requires taking up a large portion of the screen. When you need something more than t.popup(opts) or t.boardBar(opts) can provide, you can use t.modal
. This lets you display an iframe directly on top of Trello. The modal comes in two widths, fullscreen: true
as seen below:
And fullscreen: false
looks like:
Key | Valid Values | Description |
---|---|---|
url string | Any valid URL. | The URL of the page to be shown inside of the iframe. |
accentColor string | Hex color value or a Trello Brand Color. | Color to be used on top of modal design. |
height integer | Positive integer. | Height of the modal. |
fullscreen boolean | True or False | Determines whether the modal should be full width or not. |
callback function | Function that runs. optional | The function to be called if the user closes the modal. |
title string | Any string. optional | String to be displayed in header of modal. |
actions array | Array of action items (as described below). optional | Buttons to be displayed in header of modal. |
args object | Object of key / values to be passed as query parameters to iframe optional | Can be accessed from the iframe using t.arg(key) |
The actions
parameter above accepts an array of no more than three action objects with the which have the following values:
Key | Valid Value | Description |
---|---|---|
icon string | Valid URL of image. | Icon to be displayed. |
callback function | Callable function. | The function to be called when a user clicks on the icon. |
alt string | Any string | The string to be used as the alt value for the <img> tag. |
position string | left or right | Determines whether the icon should be displayed on the left or right side of the modal header. |
url string | An https:// url | An optional URL to open in a new tab when the user clicks the action icon. |
Here is an example call to t.modal
:
1 2t.modal({ // the url to load for the iframe url: './modal.html', // optional arguments to be passed to the iframe as query parameters // access later with t.arg('text') args: { text: 'Hello' }, // optional color for header chrome accentColor: '#F2D600', // initial height for iframe height: 500, // not used if fullscreen is true // whether the modal should stretch to take up the whole screen fullscreen: true, // optional function to be called if user closes modal (via `X` or escape, etc) callback: () => console.log('Goodbye.'), // optional title for header chrome title: 'appear.in meeting', // optional action buttons for header chrome // max 3, up to 1 on right side actions: [{ icon: './images/icon.svg', url: 'https://google.com', alt: 'Leftmost', position: 'left', }, { icon: './images/icon.svg', callback: (tr) => tr.popup({ title: tr.localizeKey('appear_in_settings'), url: 'settings.html', height: 164, }), alt: 'Second from left', position: 'left', }, { icon: './images/icon.svg', callback: () => console.log(':tada:'), alt: 'Right side', position: 'right', }], })
If you have a modal open, you can call t.closeModal()
to close it.
1 2t.closeModal();
If you have a modal open, you can update parts of it using t.updateModal({options})
.
Name | Value |
---|---|
accentColor string | A valid hex color (eg, 9900CC ) to update the modal header's background color to. |
actions array of objects | An array of action objects. |
fullscreen boolean | A boolean used to determine whether the modal should be fullscreen or not. |
title string | The string to update the modal's header to. |
And here is an example of how you would update a modal that is already opened:
1 2let updateObject = { fullscreen: false, accentColor: "9900CC", actions: [{ icon: './images/icon.svg', url: 'https://google.com', alt: 'Leftmost', position: 'left', }], title: "My New Title", } t.updateModal(updateObject);
Rate this page: