Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Kilian Valkhof <kilian@kilianvalkhof.com>
20 KiB
dialog
Display native system dialogs for opening and saving files, alerting, etc.
Process: Main
An example of showing a dialog to select multiple files:
const { dialog } = require('electron')
console.log(dialog.showOpenDialog({ properties: ['openFile', 'multiSelections'] }))
Methods
The dialog module has the following methods:
dialog.showOpenDialogSync([browserWindow, ]options)
browserWindowBrowserWindow (optional)optionsObjecttitlestring (optional)defaultPathstring (optional)buttonLabelstring (optional) - Custom label for the confirmation button, when left empty the default label will be used.filtersFileFilter[] (optional)propertiesstring[] (optional) - Contains which features the dialog should use. The following values are supported:openFile- Allow files to be selected.openDirectory- Allow directories to be selected.multiSelections- Allow multiple paths to be selected.showHiddenFiles- Show hidden files in dialog.createDirectorymacOS - Allow creating new directories from dialog.promptToCreateWindows - Prompt for creation if the file path entered in the dialog does not exist. This does not actually create the file at the path but allows non-existent paths to be returned that should be created by the application.noResolveAliasesmacOS - Disable the automatic alias (symlink) path resolution. Selected aliases will now return the alias path instead of their target path.treatPackageAsDirectorymacOS - Treat packages, such as.appfolders, as a directory instead of a file.dontAddToRecentWindows - Do not add the item being opened to the recent documents list.
messagestring (optional) macOS - Message to display above input boxes.securityScopedBookmarksboolean (optional) macOS mas - Create security scoped bookmarks when packaged for the Mac App Store.
Returns string[] | undefined, the file paths chosen by the user; if the dialog is cancelled it returns undefined.
The browserWindow argument allows the dialog to attach itself to a parent window, making it modal.
The filters specifies an array of file types that can be displayed or
selected when you want to limit the user to a specific type. For example:
{
filters: [
{ name: 'Images', extensions: ['jpg', 'png', 'gif'] },
{ name: 'Movies', extensions: ['mkv', 'avi', 'mp4'] },
{ name: 'Custom File Type', extensions: ['as'] },
{ name: 'All Files', extensions: ['*'] }
]
}
The extensions array should contain extensions without wildcards or dots (e.g.
'png' is good but '.png' and '*.png' are bad). To show all files, use the
'*' wildcard (no other wildcard is supported).
Note: On Windows and Linux an open dialog can not be both a file selector
and a directory selector, so if you set properties to
['openFile', 'openDirectory'] on these platforms, a directory selector will be
shown.
dialog.showOpenDialogSync(mainWindow, {
properties: ['openFile', 'openDirectory']
})
dialog.showOpenDialog([browserWindow, ]options)
browserWindowBrowserWindow (optional)optionsObjecttitlestring (optional)defaultPathstring (optional)buttonLabelstring (optional) - Custom label for the confirmation button, when left empty the default label will be used.filtersFileFilter[] (optional)propertiesstring[] (optional) - Contains which features the dialog should use. The following values are supported:openFile- Allow files to be selected.openDirectory- Allow directories to be selected.multiSelections- Allow multiple paths to be selected.showHiddenFiles- Show hidden files in dialog.createDirectorymacOS - Allow creating new directories from dialog.promptToCreateWindows - Prompt for creation if the file path entered in the dialog does not exist. This does not actually create the file at the path but allows non-existent paths to be returned that should be created by the application.noResolveAliasesmacOS - Disable the automatic alias (symlink) path resolution. Selected aliases will now return the alias path instead of their target path.treatPackageAsDirectorymacOS - Treat packages, such as.appfolders, as a directory instead of a file.dontAddToRecentWindows - Do not add the item being opened to the recent documents list.
messagestring (optional) macOS - Message to display above input boxes.securityScopedBookmarksboolean (optional) macOS mas - Create security scoped bookmarks when packaged for the Mac App Store.
Returns Promise<Object> - Resolve with an object containing the following:
canceledboolean - whether or not the dialog was canceled.filePathsstring[] - An array of file paths chosen by the user. If the dialog is cancelled this will be an empty array.bookmarksstring[] (optional) macOS mas - An array matching thefilePathsarray of base64 encoded strings which contains security scoped bookmark data.securityScopedBookmarksmust be enabled for this to be populated. (For return values, see table here.)
The browserWindow argument allows the dialog to attach itself to a parent window, making it modal.
The filters specifies an array of file types that can be displayed or
selected when you want to limit the user to a specific type. For example:
{
filters: [
{ name: 'Images', extensions: ['jpg', 'png', 'gif'] },
{ name: 'Movies', extensions: ['mkv', 'avi', 'mp4'] },
{ name: 'Custom File Type', extensions: ['as'] },
{ name: 'All Files', extensions: ['*'] }
]
}
The extensions array should contain extensions without wildcards or dots (e.g.
'png' is good but '.png' and '*.png' are bad). To show all files, use the
'*' wildcard (no other wildcard is supported).
Note: On Windows and Linux an open dialog can not be both a file selector
and a directory selector, so if you set properties to
['openFile', 'openDirectory'] on these platforms, a directory selector will be
shown.
dialog.showOpenDialog(mainWindow, {
properties: ['openFile', 'openDirectory']
}).then(result => {
console.log(result.canceled)
console.log(result.filePaths)
}).catch(err => {
console.log(err)
})
dialog.showSaveDialogSync([browserWindow, ]options)
browserWindowBrowserWindow (optional)optionsObjecttitlestring (optional) - The dialog title. Cannot be displayed on some Linux desktop environments.defaultPathstring (optional) - Absolute directory path, absolute file path, or file name to use by default.buttonLabelstring (optional) - Custom label for the confirmation button, when left empty the default label will be used.filtersFileFilter[] (optional)messagestring (optional) macOS - Message to display above text fields.nameFieldLabelstring (optional) macOS - Custom label for the text displayed in front of the filename text field.showsTagFieldboolean (optional) macOS - Show the tags input box, defaults totrue.propertiesstring[] (optional)showHiddenFiles- Show hidden files in dialog.createDirectorymacOS - Allow creating new directories from dialog.treatPackageAsDirectorymacOS - Treat packages, such as.appfolders, as a directory instead of a file.showOverwriteConfirmationLinux - Sets whether the user will be presented a confirmation dialog if the user types a file name that already exists.dontAddToRecentWindows - Do not add the item being saved to the recent documents list.
securityScopedBookmarksboolean (optional) macOS mas - Create a security scoped bookmark when packaged for the Mac App Store. If this option is enabled and the file doesn't already exist a blank file will be created at the chosen path.
Returns string, the path of the file chosen by the user; if the dialog is cancelled it returns an empty string.
The browserWindow argument allows the dialog to attach itself to a parent window, making it modal.
The filters specifies an array of file types that can be displayed, see
dialog.showOpenDialog for an example.
dialog.showSaveDialog([browserWindow, ]options)
browserWindowBrowserWindow (optional)optionsObjecttitlestring (optional) - The dialog title. Cannot be displayed on some Linux desktop environments.defaultPathstring (optional) - Absolute directory path, absolute file path, or file name to use by default.buttonLabelstring (optional) - Custom label for the confirmation button, when left empty the default label will be used.filtersFileFilter[] (optional)messagestring (optional) macOS - Message to display above text fields.nameFieldLabelstring (optional) macOS - Custom label for the text displayed in front of the filename text field.showsTagFieldboolean (optional) macOS - Show the tags input box, defaults totrue.propertiesstring[] (optional)showHiddenFiles- Show hidden files in dialog.createDirectorymacOS - Allow creating new directories from dialog.treatPackageAsDirectorymacOS - Treat packages, such as.appfolders, as a directory instead of a file.showOverwriteConfirmationLinux - Sets whether the user will be presented a confirmation dialog if the user types a file name that already exists.dontAddToRecentWindows - Do not add the item being saved to the recent documents list.
securityScopedBookmarksboolean (optional) macOS mas - Create a security scoped bookmark when packaged for the Mac App Store. If this option is enabled and the file doesn't already exist a blank file will be created at the chosen path.
Returns Promise<Object> - Resolve with an object containing the following:
canceledboolean - whether or not the dialog was canceled.filePathstring - If the dialog is canceled, this will be an empty string.bookmarkstring (optional) macOS mas - Base64 encoded string which contains the security scoped bookmark data for the saved file.securityScopedBookmarksmust be enabled for this to be present. (For return values, see table here.)
The browserWindow argument allows the dialog to attach itself to a parent window, making it modal.
The filters specifies an array of file types that can be displayed, see
dialog.showOpenDialog for an example.
Note: On macOS, using the asynchronous version is recommended to avoid issues when expanding and collapsing the dialog.
dialog.showMessageBoxSync([browserWindow, ]options)
browserWindowBrowserWindow (optional)optionsObjectmessagestring - Content of the message box.typestring (optional) - Can benone,info,error,questionorwarning. On Windows,questiondisplays the same icon asinfo, unless you set an icon using theiconoption. On macOS, bothwarninganderrordisplay the same warning icon.buttonsstring[] (optional) - Array of texts for buttons. On Windows, an empty array will result in one button labeled "OK".defaultIdInteger (optional) - Index of the button in the buttons array which will be selected by default when the message box opens.titlestring (optional) - Title of the message box, some platforms will not show it.detailstring (optional) - Extra information of the message.icon(NativeImage | string) (optional)textWidthInteger (optional) macOS - Custom width of the text in the message box.cancelIdInteger (optional) - The index of the button to be used to cancel the dialog, via theEsckey. By default this is assigned to the first button with "cancel" or "no" as the label. If no such labeled buttons exist and this option is not set,0will be used as the return value.noLinkboolean (optional) - On Windows Electron will try to figure out which one of thebuttonsare common buttons (like "Cancel" or "Yes"), and show the others as command links in the dialog. This can make the dialog appear in the style of modern Windows apps. If you don't like this behavior, you can setnoLinktotrue.normalizeAccessKeysboolean (optional) - Normalize the keyboard access keys across platforms. Default isfalse. Enabling this assumes&is used in the button labels for the placement of the keyboard shortcut access key and labels will be converted so they work correctly on each platform,&characters are removed on macOS, converted to_on Linux, and left untouched on Windows. For example, a button label ofVie&wwill be converted toVie_won Linux andViewon macOS and can be selected viaAlt-Won Windows and Linux.
Returns Integer - the index of the clicked button.
Shows a message box, it will block the process until the message box is closed. It returns the index of the clicked button.
The browserWindow argument allows the dialog to attach itself to a parent window, making it modal.
If browserWindow is not shown dialog will not be attached to it. In such case it will be displayed as an independent window.
dialog.showMessageBox([browserWindow, ]options)
browserWindowBrowserWindow (optional)optionsObjectmessagestring - Content of the message box.typestring (optional) - Can benone,info,error,questionorwarning. On Windows,questiondisplays the same icon asinfo, unless you set an icon using theiconoption. On macOS, bothwarninganderrordisplay the same warning icon.buttonsstring[] (optional) - Array of texts for buttons. On Windows, an empty array will result in one button labeled "OK".defaultIdInteger (optional) - Index of the button in the buttons array which will be selected by default when the message box opens.signalAbortSignal (optional) - Pass an instance of AbortSignal to optionally close the message box, the message box will behave as if it was cancelled by the user. On macOS,signaldoes not work with message boxes that do not have a parent window, since those message boxes run synchronously due to platform limitations.titlestring (optional) - Title of the message box, some platforms will not show it.detailstring (optional) - Extra information of the message.checkboxLabelstring (optional) - If provided, the message box will include a checkbox with the given label.checkboxCheckedboolean (optional) - Initial checked state of the checkbox.falseby default.icon(NativeImage | string) (optional)textWidthInteger (optional) macOS - Custom width of the text in the message box.cancelIdInteger (optional) - The index of the button to be used to cancel the dialog, via theEsckey. By default this is assigned to the first button with "cancel" or "no" as the label. If no such labeled buttons exist and this option is not set,0will be used as the return value.noLinkboolean (optional) - On Windows Electron will try to figure out which one of thebuttonsare common buttons (like "Cancel" or "Yes"), and show the others as command links in the dialog. This can make the dialog appear in the style of modern Windows apps. If you don't like this behavior, you can setnoLinktotrue.normalizeAccessKeysboolean (optional) - Normalize the keyboard access keys across platforms. Default isfalse. Enabling this assumes&is used in the button labels for the placement of the keyboard shortcut access key and labels will be converted so they work correctly on each platform,&characters are removed on macOS, converted to_on Linux, and left untouched on Windows. For example, a button label ofVie&wwill be converted toVie_won Linux andViewon macOS and can be selected viaAlt-Won Windows and Linux.
Returns Promise<Object> - resolves with a promise containing the following properties:
responsenumber - The index of the clicked button.checkboxCheckedboolean - The checked state of the checkbox ifcheckboxLabelwas set. Otherwisefalse.
Shows a message box.
The browserWindow argument allows the dialog to attach itself to a parent window, making it modal.
dialog.showErrorBox(title, content)
titlestring - The title to display in the error box.contentstring - The text content to display in the error box.
Displays a modal dialog that shows an error message.
This API can be called safely before the ready event the app module emits,
it is usually used to report errors in early stage of startup. If called
before the app readyevent on Linux, the message will be emitted to stderr,
and no GUI dialog will appear.
dialog.showCertificateTrustDialog([browserWindow, ]options) macOS Windows
browserWindowBrowserWindow (optional)optionsObjectcertificateCertificate - The certificate to trust/import.messagestring - The message to display to the user.
Returns Promise<void> - resolves when the certificate trust dialog is shown.
On macOS, this displays a modal dialog that shows a message and certificate
information, and gives the user the option of trusting/importing the
certificate. If you provide a browserWindow argument the dialog will be
attached to the parent window, making it modal.
On Windows the options are more limited, due to the Win32 APIs used:
- The
messageargument is not used, as the OS provides its own confirmation dialog. - The
browserWindowargument is ignored since it is not possible to make this confirmation dialog modal.
Bookmarks array
showOpenDialog, showOpenDialogSync, showSaveDialog, and showSaveDialogSync will return a bookmarks array.
| Build Type | securityScopedBookmarks boolean | Return Type | Return Value |
|---|---|---|---|
| macOS mas | True | Success | ['LONGBOOKMARKSTRING'] |
| macOS mas | True | Error | [''] (array of empty string) |
| macOS mas | False | NA | [] (empty array) |
| non mas | any | NA | [] (empty array) |
Sheets
On macOS, dialogs are presented as sheets attached to a window if you provide
a BrowserWindow reference in the browserWindow parameter, or modals if no
window is provided.
You can call BrowserWindow.getCurrentWindow().setSheetOffset(offset) to change
the offset from the window frame where sheets are attached.