summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-base/luasrc/view/cbi/mvalue.htm
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2019-04-01 16:09:41 +0200
committerJo-Philipp Wich <jo@mein.io>2019-07-07 15:36:24 +0200
commit9c7eb1decd82344e22a10e6f5ac36b463d2149f5 (patch)
treea79b11f65288a7bc5d1c7a32a5f95ea57a1e57a3 /modules/luci-base/luasrc/view/cbi/mvalue.htm
parent808b9f36eb60cf4717cbf28b163d7ad2faa7f157 (diff)
luci-base: switch from server side to client side widget markup
Do not render standard widgets like checkboxes, select boxes, text input fields etc. on the server side anymore but utilize the ui.js primitives instead. This avoids logic duplication between server side cbi templates and JS widgets in the future. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'modules/luci-base/luasrc/view/cbi/mvalue.htm')
-rw-r--r--modules/luci-base/luasrc/view/cbi/mvalue.htm55
1 files changed, 14 insertions, 41 deletions
diff --git a/modules/luci-base/luasrc/view/cbi/mvalue.htm b/modules/luci-base/luasrc/view/cbi/mvalue.htm
index db17450d27..4974a4ed28 100644
--- a/modules/luci-base/luasrc/view/cbi/mvalue.htm
+++ b/modules/luci-base/luasrc/view/cbi/mvalue.htm
@@ -1,43 +1,16 @@
-<%
- local i, key
- local v = self:valuelist(section) or {}
--%>
-
<%+cbi/valueheader%>
-<% if self.widget == "select" then %>
- <select class="cbi-input-select" multiple="multiple" data-update="click change"<%=
- attr("id", cbid) ..
- attr("name", cbid) ..
- ifattr(self.size, "size")
- %>>
- <% for i, key in pairs(self.keylist) do -%>
- <option<%=
- attr("id", cbid.."-"..key) ..
- attr("value", key) ..
- attr("data-index", i) ..
- attr("data-depends", self:deplist2json(section, self.deplist[i])) ..
- ifattr(luci.util.contains(v, key), "selected", "selected")
- %>><%=pcdata(self.vallist[i])%></option>
- <%- end %>
- </select>
-<% elseif self.widget == "checkbox" then %>
- <div>
- <% for i, key in pairs(self.keylist) do %>
- <label<%=
- attr("data-index", i) ..
- attr("data-depends", self:deplist2json(section, self.deplist[i]))
- %>>
- <input class="cbi-input-checkbox" type="checkbox" data-update="click change"<%=
- attr("id", cbid.."-"..key) ..
- attr("name", cbid) ..
- attr("value", key) ..
- ifattr(luci.util.contains(v, key), "checked", "checked")
- %> />
- <label<%= attr("for", cbid.."-"..key)%>></label>
- <%=pcdata(self.vallist[i])%>
- </label>
- <% if self.size and (i % self.size) == 0 then write('<br />') end %>
- <% end %>
- </div>
-<% end %>
+<div<%=attr("data-ui-widget", luci.util.serialize_json({
+ "Select", self:cfgvalues(section), self:choices(), {
+ id = cbid,
+ name = cbid,
+ size = self.size,
+ sort = self.keylist,
+ multi = true,
+ widget = self.widget,
+ datatype = self.datatype,
+ optional = self.optional or self.rmempty,
+ readonly = self.readonly,
+ placeholder = self.placeholder
+ }
+}))%>></div>
<%+cbi/valuefooter%>