luci-base: form.js: ListValue: support widget and orientation properties
authorJo-Philipp Wich <jo@mein.io>
Tue, 28 Apr 2020 07:50:28 +0000 (09:50 +0200)
committerJo-Philipp Wich <jo@mein.io>
Tue, 28 Apr 2020 07:50:28 +0000 (09:50 +0200)
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-base/htdocs/luci-static/resources/form.js

index 987640f000e241558ff638e0f96c7a6b97ec5d01..f9a9c5df79864a1aa178b0726a9ed5701cc50928 100644 (file)
@@ -3315,6 +3315,7 @@ var CBIListValue = CBIValue.extend(/** @lends LuCI.form.ListValue.prototype */ {
        __init__: function() {
                this.super('__init__', arguments);
                this.widget = 'select';
+               this.orientation = 'horizontal';
                this.deplist = [];
        },
 
@@ -3326,6 +3327,29 @@ var CBIListValue = CBIValue.extend(/** @lends LuCI.form.ListValue.prototype */ {
         * @default null
         */
 
+       /**
+        * Set the type of the underlying form controls.
+        *
+        * May be one of `select` or `radio`. If set to `select`, an HTML
+        * select element is rendered, otherwise a collection of `radio`
+        * elements is used.
+        *
+        * @name LuCI.form.ListValue.prototype#widget
+        * @type string
+        * @default select
+        */
+
+       /**
+        * Set the orientation of the underlying radio or checkbox elements.
+        *
+        * May be one of `horizontal` or `vertical`. Only applies to non-select
+        * widget types.
+        *
+        * @name LuCI.form.ListValue.prototype#orientation
+        * @type string
+        * @default horizontal
+        */
+
         /** @private */
        renderWidget: function(section_id, option_index, cfgvalue) {
                var choices = this.transformChoices();
@@ -3333,7 +3357,9 @@ var CBIListValue = CBIValue.extend(/** @lends LuCI.form.ListValue.prototype */ {
                        id: this.cbid(section_id),
                        size: this.size,
                        sort: this.keylist,
+                       widget: this.widget,
                        optional: this.optional,
+                       orientation: this.orientation,
                        placeholder: this.placeholder,
                        validate: L.bind(this.validate, this, section_id),
                        disabled: (this.readonly != null) ? this.readonly : this.map.readonly