Electron helper to prompt for a value via input or select
npm i @jarboer/electron-prompt
See basic-prompt-example for more an example program.
import { app, BrowserWindow } from 'electron';
import { betterPrompt } from 'electron-prompt';
let mainWindow: BrowserWindow | null;
// Electron window setup code...
// Wait for the prompt to close before continuing execution of this code section (block)
const result = await betterPrompt({
title: 'Select an Option',
subtitle: 'Please select an option',
type: 'select',
selectOptions: {
'1': 'Option 1',
'2': 'Option 2',
'3': 'Option 3',
'4': 'Option 4',
'5': 'Option 5',
'6': 'Option 6',
'7': 'Option 7',
'8': 'Option 8',
'9': 'Option 9',
'10': 'Option 10'
}
}, mainWindow);
if (result) {
console.log("Result:", result);
}
import { prompt } from 'electron-prompt';
prompt({
title: 'Prompt example',
subtitle: 'URL:',
type: 'input'
inputTextOptions: [
{
value: 'http://example.org',
inputAttrs: {
type: "url",
required: false
}
}
],
})
.then((r: any) => {
if(r === null) {
console.log('user cancelled');
} else {
console.log('result', r);
}
})
.catch(console.error);
Primary method:
const result = betterPrompt(promptOptions, window);
Old primary method:
prompt(options, parentBrowserWindow).then(...).catch(...);
If not supplied, it uses the defaults listed in the table below.
Used to define the prompt's information object
Key | Optional? | Type | Explanation |
---|---|---|---|
title |
true | string | The title of the prompt window. Defaults to 'Prompt', or to 'Sign into your Account' for the 'login' type . |
useHtmlTitle |
true | boolean | Whether the title should be interpreted as HTML or not. Defaults to false . |
subtitle |
true | string | The subtitle of the prompt window. Defaults to 'Please input a value', or to 'Enter your account credentials' for the 'login' type . |
useHtmlSubtitle |
true | boolean | Whether the subtitle should be interpreted as HTML or not. Defaults to false . |
type |
true | 'input', 'select', 'login', or undefined | The type of input field/prompt, enter 'input' for a standard text input field, 'select' for a dropdown type input, or 'login' for a prompt with 2 input fields setup to take a username/email and password. Defaults to 'input'. |
labelOptions |
true |
LabelData [ ] |
The options for the label(s). Defaults to nothing/undefined for the 'input' type , or stuff relating to username, and password for 'login'. |
inputTextOptions |
true |
InputData [ ] |
The options for the text input(s). Defaults to text and required for the 'input' type , or text and password for a username and password respectively for 'login'. |
buttonLabels |
true | ButtonLabels |
The text for the submit/cancel buttons. Defaults to 'Ok' and 'Cancel', or to 'Sign in' for the 'login' type (note: the cancel button isn't shown for 'login'). |
selectOptions |
true | StringDictionary |
The items for the select dropdown if using the 'select' type in the format '<value> ': '<display text> ', where the <value> is what will be given to the then block and the <display text> is what the user will see. Defaults to nothing/undefined. |
defaultSelectOption |
true | string | The default option to select when using the 'select' type . Defaults to nothing/undefined. |
selectMultiple |
true | boolean | Allows multiple options to be selected when using the 'select' type . Defaults to nothing/undefined. |
height |
true | number | The height of the prompt window. Defaults to 180, or to 540 for the 'login' type . |
minHeight |
true | number | The minimum allowed height for the prompt window. Same default value as height. |
width |
true | number | The width of the prompt window. Defaults to 390, or to 600 for the 'login' type . |
minWidth |
true | number | The minimum allowed width for the prompt window. Same default value as width. |
resizable |
true | boolean | Whether the prompt window can be resized or not (also sets useContentSize ). Defaults to false. |
minimizable |
true | boolean | Whether the minimize button shows on the title bar. You'll want to disable skipTaskbar so it can't disappear completely. Defaults to false. |
fullscreenable |
true | boolean | Whether the prompt can be made fullscreen. Defaults to false. |
maximizable |
true | boolean | Whether the maximize button shows on the title bar. Defaults to false. |
alwaysOnTop |
true | boolean | Whether the window should always stay on top of other windows. Defaults to false. |
icon |
true | string | The path to an icon image to use in the title bar. Defaults to undefined and uses electron's icon. |
customStylesheet |
true | string | The local path of a CSS file to stylize the prompt window. Defaults to undefined. |
menuBarVisible |
true | boolean | Whether to show the menubar or not. Defaults to false. |
skipTaskbar |
true | boolean | Whether to not show the prompt window icon on taskbar. Defaults to true. |
showWhenReady |
true | boolean | Whether to only show the prompt window once content is loaded. Defaults to false. |
devMode |
true | boolean | Whether to enable dev tools for the prompt window (also shows the menu bar). You'll probably want to enable resizing. Defaults to false. |
Used to define an input element's type, the options are: 'button', 'checkbox', 'color', 'date', 'datetime-local', 'email', 'file', 'hidden', 'image', 'month', 'number', 'password', 'radio', 'range', 'reset', 'search', 'submit', 'tel', 'text', 'time', 'url', 'week'.
Used to define a string dictionary where the key and value are strings.
Type def: [key: string]: string;
Example:
{
'value1': 'hi',
'value2': 'hey',
'value3': 'hello'
}
Key | Optional? | Type | Explanation |
---|---|---|---|
content |
true | string | The label which appears on the prompt for the input field. Defaults to nothing/undefined. |
htmlFor |
true | string | Defines which html element the label is for. Defaults to nothing/undefined. |
useHtmlLabel |
true | boolean | Whether the label should be interpreted as HTML or not. Defaults to false. |
Key | Optional? | Type | Explanation |
---|---|---|---|
type |
false | InputElement |
Define the input element's type. |
required |
false | boolean | Define if the input element is required to be completed in a form. |
Key | Optional? | Type | Explanation |
---|---|---|---|
id |
true | string | The id for the input element which appears on the prompt for the input field. The name will also be set to this (for labels). Defaults to nothing/undefined. |
placeholder |
true | string | The placeholder which appears on the prompt for the input field. Defaults to being blank/undefined. |
value |
true | string | The default value for the input field. Defaults to being blank/undefined. |
inputAttrs |
true | InputAttrs |
The attributes of the input field, analogous to the HTML attributes: {type: 'text', required: true} -> <input type="text" required> . Used if the type is 'input'. |
Key | Optional? | Type | Explanation |
---|---|---|---|
submit |
true | string | Define the display text for the submit button. |
cancel |
true | string | Define the display text for the cancel button. |
The window in which to display the prompt on. If not supplied, the parent window of the prompt will be null.