luci-base: form.js: implement Textfield widget
authorJo-Philipp Wich <jo@mein.io>
Mon, 19 Aug 2019 13:06:31 +0000 (15:06 +0200)
committerJo-Philipp Wich <jo@mein.io>
Mon, 19 Aug 2019 13:06:31 +0000 (15:06 +0200)
Port the CBI Textfield (textarea) widget type to client side form.js

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-base/htdocs/luci-static/resources/form.js

index 44a2df22f17d13c938748b0a84e01bc93b65ddab..cc72d6e48799afc9e4fb4a36f5f577f9e1da4566 100644 (file)
@@ -1600,6 +1600,29 @@ var CBIMultiValue = CBIDynamicList.extend({
        },
 });
 
+var CBITextValue = CBIValue.extend({
+       __name__: 'CBI.TextValue',
+
+       value: null,
+
+       renderWidget: function(section_id, option_index, cfgvalue) {
+               var value = (cfgvalue != null) ? cfgvalue : this.default;
+
+               var widget = new ui.Textarea(value, {
+                       id: this.cbid(section_id),
+                       optional: this.optional || this.rmempty,
+                       placeholder: this.placeholder,
+                       monospace: this.monospace,
+                       cols: this.cols,
+                       rows: this.rows,
+                       wrap: this.wrap,
+                       validate: L.bind(this.validate, this, section_id)
+               });
+
+               return widget.render();
+       }
+});
+
 var CBIDummyValue = CBIValue.extend({
        __name__: 'CBI.DummyValue',
 
@@ -1713,6 +1736,7 @@ return L.Class.extend({
        ListValue: CBIListValue,
        Flag: CBIFlagValue,
        MultiValue: CBIMultiValue,
+       TextValue: CBITextValue,
        DummyValue: CBIDummyValue,
        Button: CBIButtonValue,
        HiddenValue: CBIHiddenValue,