@jarboer/electron-prompt
v2.3.7
Published
Electron helper to prompt for a value via input or select
Readme
electron-prompt
Electron helper to prompt for a value via input or select
Installation
npm i @jarboer/electron-promptExamples
See basic-prompt-example for more an example program.
Example 1 - Using betterPrompt()
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);
}Example 2 - Using prompt()
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);Documentation
Primary method:
const result = betterPrompt(promptOptions, window);Old primary method:
prompt(options, parentBrowserWindow).then(...).catch(...);Options object (optional)
If not supplied, it uses the defaults listed in the table below.
ElectronPromptOptions
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. |
InputElement
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'.
StringDictionary
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'
}LabelData
| 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. |
InputAttrs
| 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. |
InputData
| 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'. |
ButtonLabels
| 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. |
parentBrowserWindow (optional)
The window in which to display the prompt on. If not supplied, the parent window of the prompt will be null.
