diff options
author | Jo-Philipp Wich <jo@mein.io> | 2019-04-01 16:09:41 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2019-07-07 15:36:24 +0200 |
commit | 9c7eb1decd82344e22a10e6f5ac36b463d2149f5 (patch) | |
tree | a79b11f65288a7bc5d1c7a32a5f95ea57a1e57a3 /modules/luci-base/luasrc/view/cbi/lvalue.htm | |
parent | 808b9f36eb60cf4717cbf28b163d7ad2faa7f157 (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/lvalue.htm')
-rw-r--r-- | modules/luci-base/luasrc/view/cbi/lvalue.htm | 53 |
1 files changed, 12 insertions, 41 deletions
diff --git a/modules/luci-base/luasrc/view/cbi/lvalue.htm b/modules/luci-base/luasrc/view/cbi/lvalue.htm index 34d02eeca0..e076488356 100644 --- a/modules/luci-base/luasrc/view/cbi/lvalue.htm +++ b/modules/luci-base/luasrc/view/cbi/lvalue.htm @@ -1,43 +1,14 @@ -<% - local i, key - local br = self.orientation == "horizontal" and ' ' or '<br />' -%> - <%+cbi/valueheader%> -<% if self.widget == "select" then %> - <select class="cbi-input-select" data-update="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(tostring(self:cfgvalue(section) or self.default) == key, "selected", "selected") - %>><%=pcdata(self.vallist[i])%></option> - <%- end %> - </select> -<% elseif self.widget == "radio" 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-radio" data-update="click change" type="radio"<%= - attr("id", cbid.."-"..key) .. - attr("name", cbid) .. - attr("value", key) .. - ifattr((self:cfgvalue(section) or self.default) == key, "checked", "checked") - %> /> - <label<%= attr("for", cbid.."-"..key)%>></label> - <%=pcdata(self.vallist[i])%> - </label> - <% if i == self.size then write(br) end %> - <% end %> - </div> -<% end %> +<div<%=attr("data-ui-widget", luci.util.serialize_json({ + "Select", self:cfgvalue(section), self:choices(), { + id = cbid, + name = cbid, + size = self.size, + sort = self.keylist, + widget = self.widget, + datatype = self.datatype, + optional = self.optional or self.rmempty, + placeholder = self.placeholder + } +}))%>></div> <%+cbi/valuefooter%> |