Instantiate a rich dropdown choice widget.
| Name | Type | Default | Description |
|---|---|---|---|
value |
string | Array.<string> | null |
optional
The initial input value(s). |
choices |
Object.<string, *> |
Object containing the selectable choices of the widget. The object keys serve as values for the different choices while the values are used as choice labels. |
|
options |
LuCI.ui.Dropdown.InitOptions |
optional
Object describing the widget specific options to initialize the dropdown. |
Extends
Methods
-
Add new choices to the dropdown menu.
This function adds further choices to an existing dropdown menu, ignoring choice values which are already present.
Name Type Description valuesArray.<string> The choice values to add to the dropdown widget.
labelsObject.<string, *> The choice label values to use when adding dropdown choices. If no label is found for a particular choice value, the value itself is used as label text. Choice labels may be any valid value accepted by
LuCI.dom#content. -
Remove all existing choices from the dropdown menu.
This function removes all preexisting dropdown choices from the widget, keeping only choices currently being selected unless
reset_valuesis given, in which case all choices and deselected and removed.Name Type Default Description reset_valueboolean false optional If set to
true, deselect and remove selected choices as well instead of keeping them. -
Close all open dropdown widgets in the current document.
-
Returns the current validation error
Returns:
Type Description string The validation error at this time -
Read the current value of the input widget.
Returns:
Type Description string | Array.<string> | null The current value of the input element. For simple inputs like text fields or selects, the return value type will be a - possibly empty - string. Complex widgets such as DynamicListinstances may result in an array of strings ornullfor unset values. -
Check whether the input value was altered by the user.
Returns:
Type Description boolean Returns trueif the input value has been altered by the user orfalseif it is unchanged. Note that if the user modifies the initial value and changes it back to the original state, it is still reported as changed. -
Check whether the current input value is valid.
Returns:
Type Description boolean Returns trueif the current input value is valid orfalseif it does not meet the validation constraints. -
Dispatch a custom (synthetic) event in response to received events.
Sets up event handlers on the given target DOM node for the given event names that dispatch a custom event of the given type to the widget root DOM node.
The primary purpose of this function is to set up a series of custom uniform standard events such as
widget-update,validation-success,validation-failureetc. which are triggered by various different widget specific native DOM events.Name Type Description targetNodeNode Specifies the DOM node on which the native event listeners should be registered.
syneventstring The name of the custom event to dispatch to the widget root DOM node.
eventsArray.<string> The native DOM events for which event handlers should be registered.
-
Render the widget, set up event listeners and return resulting markup.
Returns:
Type Description Node Returns a DOM Node or DocumentFragment containing the rendered widget markup. -
Set up listeners for native DOM events that may change the widget value.
Sets up event handlers on the given target DOM node for the given event names which may cause the input value to change completely, such as
changeevents in a select menu. In contrast to update events, such change events will not trigger input value validation but they may cause field dependencies to get re-evaluated and will mark the input widget as dirty.Name Type Description targetNodeNode Specifies the DOM node on which the event listeners should be registered.
eventsstring repeatable The DOM events for which event handlers should be registered.
-
Set the current placeholder value of the input widget.
Name Type Description valuestring | Array.<string> | null The placeholder to set for the input element. Only applicable to text inputs, not to radio buttons, selects or similar.
-
Set up listeners for native DOM events that may update the widget value.
Sets up event handlers on the given target DOM node for the given event names which may cause the input value to update, such as
keyuporonclickevents. In contrast to change events, such update events will trigger input value validation.Name Type Description targetNodeNode Specifies the DOM node on which the event listeners should be registered.
eventsstring repeatable The DOM events for which event handlers should be registered.
-
Set the current value of the input widget.
Name Type Description valuestring | Array.<string> | null The value to set the input element to. For simple inputs like text fields or selects, the value should be a - possibly empty - string. Complex widgets such as
DynamicListinstances may accept string array ornullvalues. -
Force validation of the current input value.
Usually input validation is automatically triggered by various DOM events bound to the input widget. In some cases it is required though to manually trigger validation runs, e.g. when programmatically altering values.
Type Definitions
-
LuCI.ui.Dropdown.InitOptions
-
In addition to the
AbstractElement.InitOptionsthe following properties are recognized:Properties:
Name Type Argument Default Description optionalboolean <optional>
true Specifies whether the dropdown selection is optional. In contrast to other widgets, the
optionalconstraint of dropdowns works differently; instead of marking the widget invalid on empty values when set tofalse, the user is not allowed to deselect all choices.For single value dropdowns that means that no empty "please select" choice is offered and for multi value dropdowns, the last selected choice may not be deselected without selecting another choice first.
multipleboolean <optional>
Specifies whether multiple choice values may be selected. It defaults to
truewhen an array is passed as input value to the constructor.sortboolean | Array.<string> <optional>
false Specifies if and how to sort choice values. If set to
true, the choice values will be sorted alphabetically. If set to an array of strings, the choice sort order is derived from the array.select_placeholderstring <optional>
-- Please choose -- Specifies a placeholder text which is displayed when no choice is selected yet.
custom_placeholderstring <optional>
-- custom -- Specifies a placeholder text which is displayed in the text input field allowing to enter custom choice values. Only applicable if the
createoption is set totrue.createboolean <optional>
false Specifies whether custom choices may be entered into the dropdown widget.
create_querystring <optional>
.create-item-input Specifies a CSS selector expression used to find the input element which is used to enter custom choice values. This should not normally be used except by widgets derived from the Dropdown class.
create_templatestring <optional>
script[type="item-template"] Specifies a CSS selector expression used to find an HTML element serving as template for newly added custom choice values.
Any
{{value}}placeholder string within the template elements text content will be replaced by the user supplied choice value, the resulting string is parsed as HTML and appended to the end of the choice list. The template markup may specify one HTML element with adata-label-placeholderattribute which is replaced by a matching label value from thechoicesobject or with the user supplied value itself in casechoicescontains no matching choice label.If the template element is not found or if no
create_templateselector expression is specified, the default markup for newly created elements is<li data-value="{{value}}"><span data-label-placeholder="true" /></li>.create_markupstring <optional>
This property allows specifying the markup for custom choices directly instead of referring to a template element through CSS selectors.
Apart from that it works exactly like
create_template.display_itemsnumber <optional>
3 Specifies the maximum amount of choice labels that should be shown in collapsed dropdown state before further selected choices are cut off.
Only applicable when
multipleistrue.dropdown_itemsnumber <optional>
-1 Specifies the maximum amount of choices that should be shown when the dropdown is open. If the amount of available choices exceeds this number, the dropdown area must be scrolled to reach further items.
If set to
-1, the dropdown menu will attempt to show all choice values and only resort to scrolling if the amount of choices exceeds the available screen space above and below the dropdown widget.placeholderstring <optional>
This property serves as a shortcut to set both
select_placeholderandcustom_placeholder. Either of these properties will fallback toplaceholderif not specified.readonlyboolean <optional>
false Specifies whether the custom choice input field should be rendered readonly. Only applicable when
createistrue.maxlengthnumber <optional>
Specifies the HTML
maxlengthattribute to set on the custom choice<input>element. Note that this a legacy property that exists for compatibility reasons. It is usually better tomaxlength(N)validation expression. Only applicable whencreateistrue.