The input dialog window allows you to take data from the user by setting input fields.
lib.inputDialog
lib.inputDialog(heading, rows, options)- heading:
string - rows:
string[]ortable(array)- type:
'input'or'number'or'checkbox'or'select'or'slider'or'color'or'multi-select'or'date'or'date-range'or'time'or'textarea'
- type:
- options?:
table(object)- allowCancel:
boolean- If true the user will not be able to cancel and close the input dialog until submitted.
- allowCancel:
Available properties per field type:
-
input
- label:
string - description?:
string - placeholder?:
string - icon?:
string - required?
boolean - disabled?:
boolean - default?:
string - password?:
boolean - min?:
number - max?:
number
- label:
-
number
- label:
string - description?:
string - placeholder?:
string - icon?:
string - required?
boolean - disabled?:
boolean - default?:
number - min?:
number - max?:
number
- label:
-
checkbox
- label:
string - checked?:
boolean - disabled?:
boolean - required?:
boolean
- label:
-
select and multi-select
- label:
string - options:
table(array)- value:
string - label?:
string
- value:
- description?:
string - placeholder?:
string - icon?:
string - required?
boolean - disabled?:
boolean - default?:
string- value of the default option.
- clearable?:
boolean
- label:
-
slider
- label:
string - placeholder?:
string - icon?:
string - required?
boolean - disabled?:
boolean - default?:
number - min?:
number - max?:
number - step?:
number
- label:
-
color
- label:
string - description?:
string - placeholder?:
string - icon?:
string - required?
boolean - disabled?:
boolean - default?:
string - format?:
'hex'|'hexa'|'rgb'|'rgba'|'hsl'|'hsla';
- label:
-
date
- label:
string - description?:
string - icon?:
string - required?
boolean - disabled?:
boolean - default?:
stringortrue- True defaults to current date
- format?:
string- Date format to display in the field
- clearable?:
boolean - min?:
string- "01/01/2000"
- max?:
string- "12/12/2023"
- label:
-
date-range
- label:
string - description?:
string - icon?:
string - required?
boolean - disabled?:
boolean - default?:
[string, string] - format?:
string- Date format to display in the field
- clearable?:
boolean
- label:
-
time
- label:
string - description?:
string - icon?:
string - required?
boolean - disabled?:
boolean - default?:
string - format?:
'12'or'24' - clearable?:
boolean
- label:
-
textarea
- label:
string - description?:
string - placeholder?:
string - icon?:
string - required?
boolean - disabled?:
boolean - default?:
number - min?:
number- Minimum amount of rows the text area will take.
- max?:
number- Maxmimum amount of rows the text area will take, when exceeded goes into overflow.
- autosize?:
boolean- If true text area will grow with content until max rows are reached.
- label:
The callback data is promise based meaning that the thread will not continue executing until the user either sends the data or exits the popup.
The data returned will be a table (array), indexes represent the rows sent to the dialog, so if we want data from the first field that would be index 1 (0), if we want data from the third field, that would be index 3 (2), etc...
💡
Field types such as date, date-range and time return a unix timestamp on the set value.
lib.closeInputDialog
Force closes the active input dialog and sets its return data as nil
lib.closeInputDialog()Usage Example
Basic
local input = lib.inputDialog('Basic dialog', {'First row', 'Second row'})
if not input then return end
print(input, input[1], input[2])
Advanced
local input = lib.inputDialog('Dialog title', {
{type = 'input', label = 'Text input', description = 'Some input description', required = true, min = 4, max = 16},
{type = 'number', label = 'Number input', description = 'Some number description', icon = 'hashtag'},
{type = 'checkbox', label = 'Simple checkbox'},
{type = 'color', label = 'Colour input', default = '#eb4034'},
{type = 'date', label = 'Date input', icon = {'far', 'calendar'}, default = true, format = "DD/MM/YYYY"}
})
print(json.encode(input))
-- Getting r, g and b values from colour picker
local r, g, b = string.match(input[4], "rgb%((%d+), (%d+), (%d+)%)")
-- Transforming unit date return to be used with Lua's os library
local date = input[5] / 1000