Files
luci/jsapi/LuCI.form.GridSection.html
2026-02-22 16:19:14 +00:00

3 lines
80 KiB
HTML

<!DOCTYPE html><html lang="en" style="font-size:16px"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.png"><link type="text/css" rel="stylesheet" href="extra.css"><title>Class: GridSection</title><!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]--><script src="scripts/third-party/hljs.js" defer="defer"></script><script src="scripts/third-party/hljs-line-num.js" defer="defer"></script><script src="scripts/third-party/popper.js" defer="defer"></script><script src="scripts/third-party/tippy.js" defer="defer"></script><script src="scripts/third-party/tocbot.min.js"></script><script>var baseURL="/",locationPathname="";baseURL=(locationPathname=document.location.pathname).substr(0,locationPathname.lastIndexOf("/")+1)</script><link rel="stylesheet" href="styles/clean-jsdoc-theme.min.css"><svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><defs><symbol id="copy-icon" viewbox="0 0 488.3 488.3"><g><path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124 C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124 c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/><path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227 c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6 V38.6C439.65,17.3,422.35,0,401.05,0z"/></g></symbol><symbol id="search-icon" viewBox="0 0 512 512"><g><g><path d="M225.474,0C101.151,0,0,101.151,0,225.474c0,124.33,101.151,225.474,225.474,225.474 c124.33,0,225.474-101.144,225.474-225.474C450.948,101.151,349.804,0,225.474,0z M225.474,409.323 c-101.373,0-183.848-82.475-183.848-183.848S124.101,41.626,225.474,41.626s183.848,82.475,183.848,183.848 S326.847,409.323,225.474,409.323z"/></g></g><g><g><path d="M505.902,476.472L386.574,357.144c-8.131-8.131-21.299-8.131-29.43,0c-8.131,8.124-8.131,21.306,0,29.43l119.328,119.328 c4.065,4.065,9.387,6.098,14.715,6.098c5.321,0,10.649-2.033,14.715-6.098C514.033,497.778,514.033,484.596,505.902,476.472z"/></g></g></symbol><symbol id="font-size-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.246 15H4.754l-2 5H.6L7 4h2l6.4 16h-2.154l-2-5zm-.8-2L8 6.885 5.554 13h4.892zM21 12.535V12h2v8h-2v-.535a4 4 0 1 1 0-6.93zM19 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol id="add-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></symbol><symbol id="minus-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M5 11h14v2H5z"/></symbol><symbol id="dark-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"/></symbol><symbol id="light-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></symbol><symbol id="reset-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"/></symbol><symbol id="down-icon" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"></path></symbol><symbol id="codepen-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M16.5 13.202L13 15.535v3.596L19.197 15 16.5 13.202zM14.697 12L12 10.202 9.303 12 12 13.798 14.697 12zM20 10.869L18.303 12 20 13.131V10.87zM19.197 9L13 4.869v3.596l3.5 2.333L19.197 9zM7.5 10.798L11 8.465V4.869L4.803 9 7.5 10.798zM4.803 15L11 19.131v-3.596l-3.5-2.333L4.803 15zM4 13.131L5.697 12 4 10.869v2.262zM2 9a1 1 0 0 1 .445-.832l9-6a1 1 0 0 1 1.11 0l9 6A1 1 0 0 1 22 9v6a1 1 0 0 1-.445.832l-9 6a1 1 0 0 1-1.11 0l-9-6A1 1 0 0 1 2 15V9z"/></symbol><symbol id="close-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/></symbol><symbol id="menu-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/></symbol></defs></svg></head><body data-theme="fallback-dark"><div class="sidebar-container"><div class="sidebar" id="sidebar"><a href="/" class="sidebar-title sidebar-title-anchor">LuCI Documentation</a><div class="sidebar-items-container"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-tutorials"><div>Tutorials</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="tutorial-JsonRpcHowTo.html">Using JSON RPC daemon</a></div><div class="sidebar-section-children"><a href="tutorial-Modules.html">Modules</a></div><div class="sidebar-section-children"><a href="tutorial-ThemesHowTo.html">Making Themes</a></div><div class="sidebar-section-children"><a href="tutorial-i18n.html">Internationalisation - i18n</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="LuCI.module_cbi.html">cbi</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-classes"><div>Classes</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="LuCI.html">LuCI</a></div><div class="sidebar-section-children"><a href="LuCI.baseclass.html">baseclass</a></div><div class="sidebar-section-children"><a href="LuCI.dom.html">dom</a></div><div class="sidebar-section-children"><a href="LuCI.form.html">form</a></div><div class="sidebar-section-children"><a href="LuCI.form.AbstractElement.html">AbstractElement</a></div><div class="sidebar-section-children"><a href="LuCI.form.AbstractSection.html">AbstractSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.AbstractValue.html">AbstractValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.Button.html">Button</a></div><div class="sidebar-section-children"><a href="LuCI.form.DirectoryPicker.html">DirectoryPicker</a></div><div class="sidebar-section-children"><a href="LuCI.form.DummyValue.html">DummyValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.DynamicList.html">DynamicList</a></div><div class="sidebar-section-children"><a href="LuCI.form.FileUpload.html">FileUpload</a></div><div class="sidebar-section-children"><a href="LuCI.form.Flag.html">Flag</a></div><div class="sidebar-section-children"><a href="LuCI.form.GridSection.html">GridSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.HiddenValue.html">HiddenValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.JSONMap.html">JSONMap</a></div><div class="sidebar-section-children"><a href="LuCI.form.ListValue.html">ListValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.Map.html">Map</a></div><div class="sidebar-section-children"><a href="LuCI.form.MultiValue.html">MultiValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.NamedSection.html">NamedSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.RangeSliderValue.html">RangeSliderValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.RichListValue.html">RichListValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.SectionValue.html">SectionValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.TableSection.html">TableSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.TextValue.html">TextValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.TypedSection.html">TypedSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.Value.html">Value</a></div><div class="sidebar-section-children"><a href="LuCI.fs.html">fs</a></div><div class="sidebar-section-children"><a href="LuCI.headers.html">headers</a></div><div class="sidebar-section-children"><a href="LuCI.network.html">network</a></div><div class="sidebar-section-children"><a href="LuCI.network.Device.html">Device</a></div><div class="sidebar-section-children"><a href="LuCI.network.Hosts.html">Hosts</a></div><div class="sidebar-section-children"><a href="LuCI.network.Protocol.html">Protocol</a></div><div class="sidebar-section-children"><a href="LuCI.network.WifiDevice.html">WifiDevice</a></div><div class="sidebar-section-children"><a href="LuCI.network.WifiNetwork.html">WifiNetwork</a></div><div class="sidebar-section-children"><a href="LuCI.network.WifiVlan.html">WifiVlan</a></div><div class="sidebar-section-children"><a href="LuCI.poll.html">poll</a></div><div class="sidebar-section-children"><a href="LuCI.request.html">request</a></div><div class="sidebar-section-children"><a href="LuCI.request.poll.html">poll</a></div><div class="sidebar-section-children"><a href="LuCI.response.html">response</a></div><div class="sidebar-section-children"><a href="LuCI.rpc.html">rpc</a></div><div class="sidebar-section-children"><a href="LuCI.session.html">session</a></div><div class="sidebar-section-children"><a href="LuCI.uci.html">uci</a></div><div class="sidebar-section-children"><a href="LuCI.ui.html">ui</a></div><div class="sidebar-section-children"><a href="LuCI.ui.AbstractElement.html">AbstractElement</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Checkbox.html">Checkbox</a></div><div class="sidebar-section-children"><a href="LuCI.ui.ComboButton.html">ComboButton</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Combobox.html">Combobox</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Dropdown.html">Dropdown</a></div><div class="sidebar-section-children"><a href="LuCI.ui.DynamicList.html">DynamicList</a></div><div class="sidebar-section-children"><a href="LuCI.ui.FileUpload.html">FileUpload</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Hiddenfield.html">Hiddenfield</a></div><div class="sidebar-section-children"><a href="LuCI.ui.RangeSlider.html">RangeSlider</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Select.html">Select</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Textarea.html">Textarea</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Textfield.html">Textfield</a></div><div class="sidebar-section-children"><a href="LuCI.ui.changes.html">changes</a></div><div class="sidebar-section-children"><a href="LuCI.ui.menu.html">menu</a></div><div class="sidebar-section-children"><a href="LuCI.ui.tabs.html">tabs</a></div><div class="sidebar-section-children"><a href="LuCI.validation.html">validation</a></div><div class="sidebar-section-children"><a href="LuCI.validation.Validator.html">Validator</a></div><div class="sidebar-section-children"><a href="LuCI.validation.ValidatorFactory.html">ValidatorFactory</a></div><div class="sidebar-section-children"><a href="LuCI.view.html">view</a></div><div class="sidebar-section-children"><a href="LuCI.xhr.html">xhr</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-externals"><div>Externals</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="external-String.html">String</a></div></div></div></div></div><div class="navbar-container" id="VuAckcnZhf"><nav class="navbar"><div class="navbar-left-items"><div class="github-home navbar-item"><a id="" href="https://github.com/openwrt/luci" target="">GitHub Project Page</a></div></div><div class="navbar-right-items"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#dark-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div><nav></nav></nav></div><div class="toc-container"><div class="toc-content"><span class="bold">On this page</span><div id="eed4d2a0bfd64539bb9df78095dec881"></div></div></div><div class="body-wrapper"><div class="main-content"><div class="main-wrapper"><section><header><h1 id="GridSection-title" class="has-anchor"><span class="ancestors"><a href="LuCI.html">LuCI</a><a href="LuCI.form.html">.form</a>.</span> GridSection</h1><div class="class-description"><p>The <code>GridSection</code> class maps all or - if <code>filter()</code> is overridden - a subset of the underlying UCI configuration sections of a given type.</p><p>A grid section functions similar to a <a href="LuCI.form.TableSection.html"><code>LuCI.form.TableSection</code></a> but supports tabbing in the modal overlay. Option elements added with <a href="LuCI.form.GridSection.html#option"><code>option()</code></a> are shown in the table while elements added with <a href="LuCI.form.GridSection.html#taboption"><code>taboption()</code></a> are displayed in the modal popup.</p><p>Another important difference is that the table cells show a readonly text preview of the corresponding option elements by default, unless the child option element is explicitly made writeable by setting the <code>editable</code> property to <code>true</code>.</p><p>Additionally, the grid section honours a <code>modalonly</code> property of child option elements. Refer to the <a href="LuCI.form.AbstractValue.html"><code>AbstractValue</code></a> documentation for details.</p><p>Layout wise, a grid section looks mostly identical to table sections.</p></div></header><article><div class="container-overview"><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line3911">line 3911</a></li></ul></dd></div></dl></div><h2 id="Extends" class="subsection-title has-anchor">Extends</h2><ul><li><a href="LuCI.form.TableSection.html">LuCI.form.TableSection</a></li></ul><h2 id="members" class="subsection-title has-anchor">Members</h2><h3 class="name has-anchor" id="actionstitle"><span class="type-signature"></span>actionstitle<span class="type-signature"> :string|function</span></h3><div class="description"><p>Set a custom text for the actions column header row when actions buttons are present.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span> |<wbr> <span class="param-type">function</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TableSection.html#actionstitle">LuCI.form.TableSection#actionstitle</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">null</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2600">line 2600</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="addbtntitle"><span class="type-signature"></span>addbtntitle<span class="type-signature"> :string|function</span></h3><div class="description"><p>Override the caption used for the section add button at the bottom of the section form element. Set to a string, it will be used as-is. Set to a function, the function will be invoked and its return value is used as a caption, after converting it to a string. If this property is not set, the default is <code>Add</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span> |<wbr> <span class="param-type">function</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TypedSection.html#addbtntitle">LuCI.form.TypedSection#addbtntitle</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">null</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2323">line 2323</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="addremove"><span class="type-signature"></span>addremove<span class="type-signature"> :boolean</span></h3><div class="description"><p>If set to <code>true</code>, the user may add or remove instances from the form section widget, otherwise only pre-existing sections may be edited. The default is <code>false</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">boolean</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TypedSection.html#addremove">LuCI.form.TypedSection#addremove</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">false</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2276">line 2276</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="anonymous"><span class="type-signature"></span>anonymous<span class="type-signature"> :boolean</span></h3><div class="description"><p>If set to <code>true</code>, mapped section instances are treated as anonymous UCI sections, which means that section instance elements will be rendered without a title element and that no name is required when adding new sections. The default is <code>false</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">boolean</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TypedSection.html#anonymous">LuCI.form.TypedSection#anonymous</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">false</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2299">line 2299</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="cloneable"><span class="type-signature"></span>cloneable<span class="type-signature"> :boolean</span></h3><div class="description"><p>Set to <code>true</code>, a clone button is added to the button column, allowing the user to clone section instances mapped by the section form element. The default is <code>false</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">boolean</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TableSection.html#cloneable">LuCI.form.TableSection#cloneable</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">false</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2636">line 2636</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="clonebtntitle"><span class="type-signature"></span>clonebtntitle<span class="type-signature"> :string|function</span></h3><div class="description"><p>Override the caption used for the section clone button at the bottom of the section form element. Set to a string, it will be used as-is. Set to a function, the function will be invoked and its return value is used as a caption, after converting it to a string. If this property is not set, the default is <code>Clone</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span> |<wbr> <span class="param-type">function</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TableSection.html#clonebtntitle">LuCI.form.TableSection#clonebtntitle</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">null</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2647">line 2647</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="delbtntitle"><span class="type-signature"></span>delbtntitle<span class="type-signature"> :string|function</span></h3><div class="description"><p>Override the caption used for the section delete button at the bottom of the section form element. Set to a string, it will be used as-is. Set to a function, the function will be invoked and its return value is used as a caption, after converting it to a string. If this property is not set, the default is <code>Delete</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span> |<wbr> <span class="param-type">function</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TypedSection.html#delbtntitle">LuCI.form.TypedSection#delbtntitle</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">null</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2336">line 2336</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="extedit"><span class="type-signature"></span>extedit<span class="type-signature"> :string|function</span></h3><div class="description"><p>Enables a per-section instance row <code>Edit</code> button which triggers a certain action when clicked. Set to a string, the string value is used as a <code>String.format()</code> pattern with the name of the underlying UCI section as the first format argument. The result is then interpreted as a URL which LuCI will navigate to when the user clicks the edit button.</p><p>If set to a function, this function will be registered as a click event handler on the rendered edit button, receiving the section instance name as the first and the DOM click event as the second argument.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span> |<wbr> <span class="param-type">function</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TableSection.html#extedit">LuCI.form.TableSection#extedit</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">null</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2660">line 2660</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="filterrow"><span class="type-signature"></span>filterrow<span class="type-signature"> :boolean</span></h3><div class="description"><p>Optional table filtering for table sections.</p><p>Set <code>filterrow</code> to <code>true</code> to display a filter header row in the generated table with per-column text fields to search for string matches in the column. The filter row appears after the titles row.</p><p>The filters work cumulatively: text in each field shall match an entry for the row to be displayed. The results are filtered live. Matching is case-sensitive, and partial, i.e. part or all of the result includes the search string.</p><p>The filter fields assume the placeholder text <code>Filter</code> suffixed with the column name, to ease correlation of filter fields to their corresponding column entries on narrow displays which might fold the columns over multiple lines.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">boolean</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TableSection.html#filterrow">LuCI.form.TableSection#filterrow</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">null</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2677">line 2677</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="footer"><span class="type-signature"></span>footer<span class="type-signature"> :Array.&lt;string>|function</span></h3><div class="description"><p>Optional footer row for table sections.</p><p>Set <code>footer</code> to one of:</p><ul><li>a function that returns a table row (<code>tr</code>) or node <code>E('...')</code></li><li>an array of string cell contents (first entry maps to the name column if present).</li></ul><p>This is useful for providing sum totals, extra function buttons or extra space.</p><p>The default implementation returns an empty node.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.&lt;string></span> |<wbr> <span class="param-type">function</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TableSection.html#footer">LuCI.form.TableSection#footer</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">`E([])`</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2700">line 2700</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="hidetitle"><span class="type-signature"></span>hidetitle<span class="type-signature"> :boolean</span></h3><div class="description"><p>If set to true, the title caption of the form section element which is normally rendered before the start of the section content will not be rendered in the UI. The default is false, meaning that the title is rendered.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">boolean</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TypedSection.html#hidetitle">LuCI.form.TypedSection#hidetitle</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">false</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2287">line 2287</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="max_cols"><span class="type-signature"></span>max_cols<span class="type-signature"> :number</span></h3><div class="description"><p>Specify a maximum amount of columns to display. By default, one table column is rendered for each child option of the form section element. When this option is set to a positive number, then no more columns than the given amount are rendered. When the number of child options exceeds the specified amount, a <code>More…</code> button is rendered in the last column, opening a modal dialog presenting all options elements in <code>NamedSection</code> style when clicked.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">number</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TableSection.html#max_cols">LuCI.form.TableSection#max_cols</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">null</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2610">line 2610</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="modaltitle"><span class="type-signature"></span>modaltitle<span class="type-signature"> :string|function</span></h3><div class="description"><p>Override the per-section instance modal popup title caption shown when clicking the <code>More…</code> button in a section specifying <code>max_cols</code>. Set to a string, it will be used as a <code>String.format()</code> pattern with the name of the underlying UCI section as the first argument. Set to a function, the function will be invoked with the section name as the first argument, and its return value is used as a caption after converting it to a string. If this property is not set, the default is the name of the underlying UCI configuration section.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span> |<wbr> <span class="param-type">function</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TableSection.html#modaltitle">LuCI.form.TableSection#modaltitle</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">null</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2584">line 2584</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="nodescriptions"><span class="type-signature"></span>nodescriptions<span class="type-signature"> :boolean</span></h3><div class="description"><p>Set to <code>true</code>, the header row with the descriptions of options will not be displayed. By default, the row of descriptions is automatically displayed when at least one option has a description.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">boolean</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TableSection.html#nodescriptions">LuCI.form.TableSection#nodescriptions</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">false</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2730">line 2730</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="parentoption"><span class="type-signature">(readonly) </span>parentoption<span class="type-signature"> :<a href="LuCI.form.AbstractValue.html">LuCI.form.AbstractValue</a></span></h3><div class="description"><p>Access the parent option container instance.</p><p>In case this section is nested within an option element container, this property will hold a reference to the parent option instance.</p><p>If this section is not nested, the property is <code>null</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type"><a href="LuCI.form.AbstractValue.html">LuCI.<wbr>form.<wbr>AbstractValue</a></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.AbstractSection.html#parentoption">LuCI.form.AbstractSection#parentoption</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line878">line 878</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="rowcolors"><span class="type-signature"></span>rowcolors<span class="type-signature"> :boolean</span></h3><div class="description"><p>Set to <code>true</code>, alternating <code>cbi-rowstyle-1</code> and <code>cbi-rowstyle-2</code> CSS classes are added to the table row elements. Not all LuCI themes implement these row style classes. The default is <code>false</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">boolean</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TableSection.html#rowcolors">LuCI.form.TableSection#rowcolors</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">false</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2625">line 2625</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="sectiontitle"><span class="type-signature"></span>sectiontitle<span class="type-signature"> :string|function</span></h3><div class="description"><p>Override the per-section instance title caption shown in the first column of the table unless <code>anonymous</code> is set to true. Set to a string, it will be used as a <code>String.format()</code> pattern with the name of the underlying UCI section as the first argument. Set to a function, the function will be invoked with the section name as the first argument and its return value used as a caption, after converting it to a string. If this property is not set, the default is the name of the underlying UCI configuration section.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span> |<wbr> <span class="param-type">function</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TableSection.html#sectiontitle">LuCI.form.TableSection#sectiontitle</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">null</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2568">line 2568</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="sortable"><span class="type-signature"></span>sortable<span class="type-signature"> :boolean</span></h3><div class="description"><p>Set to <code>true</code>, a sort button is added to the last column, allowing the user to reorder the section instances mapped by the section form element.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">boolean</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TableSection.html#sortable">LuCI.form.TableSection#sortable</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">false</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2719">line 2719</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="tabbed"><span class="type-signature"></span>tabbed<span class="type-signature"> :boolean</span></h3><div class="description"><p>When set to <code>true</code>, instead of rendering section instances one below another, treat each instance as a separate tab pane and render a tab menu at the top of the form section element, allowing the user to switch among instances. The default is <code>false</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">boolean</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TypedSection.html#tabbed">LuCI.form.TypedSection#tabbed</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">false</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2311">line 2311</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="uciconfig"><span class="type-signature"></span>uciconfig<span class="type-signature"> :string</span></h3><div class="description"><p>Override the UCI configuration name to read the section IDs from. By default, the configuration name is inherited from the parent <code>Map</code>. By setting this property, a deviating configuration may be specified. The default of <code>null</code> means inherit from the parent form.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TypedSection.html#uciconfig">LuCI.form.TypedSection#uciconfig</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">null</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line2349">line 2349</a></li></ul></dd></div></dl><h2 id="methods" class="subsection-title has-anchor">Methods</h2><h3 class="name has-anchor" id="addModalOptions"><span class="type-signature">(abstract) </span>addModalOptions<span class="signature">(modalSection, section_id, ev)</span><span class="type-signature"> &rarr; {*|Promise.&lt;*>}</span></h3><div class="description"><p>Add further options to the per-section instanced modal popup.</p><p>This function may be overridden by user code to perform additional setup steps before displaying the more options modal which is useful to e.g. query additional data or to inject further option elements.</p><p>The default implementation of this function does nothing.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>modalSection</code></td><td class="type"><span class="param-type"><a href="LuCI.form.NamedSection.html">LuCI.<wbr>form.<wbr>NamedSection</a></span></td><td class="description last"><p>The <code>NamedSection</code> instance about to be rendered in the modal popup.</p></td></tr><tr><td class="name"><code>section_id</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The ID of the underlying UCI section the modal popup belongs to.</p></td></tr><tr><td class="name"><code>ev</code></td><td class="type"><span class="param-type">Event</span></td><td class="description last"><p>The DOM event emitted by clicking the <code>More…</code> button.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.TableSection.html#addModalOptions">LuCI.form.TableSection#addModalOptions</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line3727">line 3727</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Return values of this function are ignored but if a promise is returned, it is run to completion before the rendering is continued, allowing custom logic to perform asynchronous work before the modal dialog is shown.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">*</span> |<wbr> <span class="param-type">Promise.&lt;*></span></dd></dl></div><h3 class="name has-anchor" id="append"><span class="type-signature"></span>append<span class="signature">(obj)</span></h3><div class="description"><p>Add another form element as children to this element.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>obj</code></td><td class="type"><span class="param-type">AbstractElement</span></td><td class="description last"><p>The form element to add.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.AbstractElement.html#append">LuCI.form.AbstractElement#append</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line219">line 219</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="cfgvalue"><span class="type-signature"></span>cfgvalue<span class="signature">(section_id, option<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {null|string|Array.&lt;string>|Object.&lt;string, (null|string|Array.&lt;string>)>}</span></h3><div class="description"><p>Query underlying option configuration values.</p><p>This function is sensitive to the amount of arguments passed to it; if only one argument is specified, the configuration values of all options within this section are returned as a dictionary.</p><p>If both the section ID and an option name are supplied, this function returns the configuration value of the specified option only.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>section_id</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="description last"><p>The configuration section ID</p></td></tr><tr><td class="name"><code>option</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes">&lt;optional><br></td><td class="description last"><p>The name of the option to query</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.AbstractSection.html#cfgvalue">LuCI.form.AbstractSection#cfgvalue</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line1125">line 1125</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns either a dictionary of option names and their corresponding configuration values or just a single configuration value, depending on the amount of passed arguments.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">string</span> |<wbr> <span class="param-type">Array.&lt;string></span> |<wbr> <span class="param-type">Object.&lt;string, (null|string|Array.&lt;string>)></span></dd></dl></div><h3 class="name has-anchor" id="filter"><span class="type-signature">(abstract) </span>filter<span class="signature">(section_id)</span><span class="type-signature"> &rarr; {boolean}</span></h3><div class="description"><p>Filter UCI section IDs to render.</p><p>The filter function is invoked for each UCI section ID of a given type and controls whether the given UCI section is rendered or ignored by the form section element.</p><p>The default implementation always returns <code>true</code>. User code or classes extending <a href="LuCI.form.AbstractSection.html"><code>AbstractSection</code></a> may override this function with custom implementations.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>section_id</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The UCI section ID to test.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.AbstractSection.html#filter">LuCI.form.AbstractSection#filter</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line926">line 926</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns <code>true</code> when the given UCI section ID should be handled and <code>false</code> when it should be ignored.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id="formvalue"><span class="type-signature"></span>formvalue<span class="signature">(section_id, option<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {null|string|Array.&lt;string>|Object.&lt;string, (null|string|Array.&lt;string>)>}</span></h3><div class="description"><p>Query the underlying option widget input values.</p><p>This function is sensitive to the amount of arguments passed to it; if only one argument is specified, the widget input values of all options within this section are returned as a dictionary.</p><p>If both the section ID and an option name are supplied, this function returns the widget input value of the specified option only.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>section_id</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="description last"><p>The configuration section ID</p></td></tr><tr><td class="name"><code>option</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes">&lt;optional><br></td><td class="description last"><p>The name of the option to query</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.AbstractSection.html#formvalue">LuCI.form.AbstractSection#formvalue</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line1158">line 1158</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns either a dictionary of option names and their corresponding widget input values or just a single widget input value, depending on the amount of passed arguments.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">string</span> |<wbr> <span class="param-type">Array.&lt;string></span> |<wbr> <span class="param-type">Object.&lt;string, (null|string|Array.&lt;string>)></span></dd></dl></div><h3 class="name has-anchor" id="getOption"><span class="type-signature"></span>getOption<span class="signature">(option<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {null|<a href="LuCI.form.AbstractValue.html">LuCI.form.AbstractValue</a>|Object.&lt;string, <a href="LuCI.form.AbstractValue.html">LuCI.form.AbstractValue</a>>}</span></h3><div class="description"><p>Obtain underlying option objects.</p><p>This function is sensitive to the amount of arguments passed to it; if no option name is specified, all options within this section are returned as a dictionary.</p><p>If an option name is supplied, this function returns the matching LuCI.form.AbstractValue instance only.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>option</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes">&lt;optional><br></td><td class="description last"><p>The name of the option object to obtain</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.AbstractSection.html#getOption">LuCI.form.AbstractSection#getOption</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line1224">line 1224</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns either a dictionary of option names and their corresponding option instance objects or just a single object instance value, depending on the amount of passed arguments.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type"><a href="LuCI.form.AbstractValue.html">LuCI.<wbr>form.<wbr>AbstractValue</a></span> |<wbr> <span class="param-type">Object.&lt;string, <a href="LuCI.form.AbstractValue.html">LuCI.form.AbstractValue</a>></span></dd></dl></div><h3 class="name has-anchor" id="getUIElement"><span class="type-signature"></span>getUIElement<span class="signature">(section_id, option<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {null|<a href="LuCI.ui.AbstractElement.html">LuCI.ui.AbstractElement</a>|Object.&lt;string, (null|<a href="LuCI.ui.AbstractElement.html">LuCI.ui.AbstractElement</a>)>}</span></h3><div class="description"><p>Obtain underlying option LuCI.ui widget instances.</p><p>This function is sensitive to the amount of arguments passed to it; if only one argument is specified, the LuCI.ui widget instances of all options within this section are returned as a dictionary.</p><p>If both the section ID and an option name are supplied, this function returns the LuCI.ui widget instance value of the specified option only.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>section_id</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="description last"><p>The configuration section ID</p></td></tr><tr><td class="name"><code>option</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes">&lt;optional><br></td><td class="description last"><p>The name of the option to query</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.AbstractSection.html#getUIElement">LuCI.form.AbstractSection#getUIElement</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line1194">line 1194</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns either a dictionary of option names and their corresponding widget input values or just a single widget input value, depending on the amount of passed arguments.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type"><a href="LuCI.ui.AbstractElement.html">LuCI.<wbr>ui.<wbr>AbstractElement</a></span> |<wbr> <span class="param-type">Object.&lt;string, (null|<a href="LuCI.ui.AbstractElement.html">LuCI.ui.AbstractElement</a>)></span></dd></dl></div><h3 class="name has-anchor" id="load"><span class="type-signature"></span>load<span class="signature">()</span><span class="type-signature"> &rarr; {Promise.&lt;void>}</span></h3><div class="description"><p>Load the configuration covered by this section.</p><p>The <code>load()</code> function recursively walks the section element tree and invokes the load function of each child option element.</p></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.AbstractSection.html#load">LuCI.form.AbstractSection#load</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line941">line 941</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns a promise resolving once the values of all child elements have been loaded. The promise may reject with an error if any of the child elements' load functions rejected with an error.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">Promise.&lt;void></span></dd></dl></div><h3 class="name has-anchor" id="option"><span class="type-signature"></span>option<span class="signature">(optionclass, cbiClass, &hellip;args)</span><span class="type-signature"> &rarr; {<a href="LuCI.form.AbstractValue.html">LuCI.form.AbstractValue</a>}</span></h3><div class="description"><p>Add a configuration option widget to the section.</p><p>Note that <a href="LuCI.form.AbstractSection.html#taboption"><code>taboption()</code></a> should be used instead if this form section element uses tabs.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>optionclass</code></td><td class="type"><span class="param-type"><a href="LuCI.form.AbstractValue.html">LuCI.<wbr>form.<wbr>AbstractValue</a></span></td><td class="attributes"></td><td class="description last"><p>The option class to use for rendering the configuration option. Note that this value must be the class itself, not a class instance obtained from calling <code>new</code>. It must also be a class derived from <a href="LuCI.form.AbstractSection.html"><code>AbstractSection</code></a>.</p></td></tr><tr><td class="name"><code>cbiClass</code></td><td class="type"><span class="param-type">object</span></td><td class="attributes"></td><td class="description last"><p>(classargs) Additional arguments which are passed as-is to the constructor of the given option class. Refer to the class specific constructor documentation for details.</p></td></tr><tr><td class="name"><code>args</code></td><td class="type"><span class="param-type">*</span></td><td class="attributes">&lt;repeatable><br></td><td class="description last"><p>argument array</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.AbstractSection.html#option">LuCI.form.AbstractSection#option</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line1056">line 1056</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Throws:</strong><dl><dt><div class="param-desc"><p>Throws a <code>TypeError</code> exception in case the passed class value is not a descendant of <a href="LuCI.form.AbstractValue.html"><code>AbstractValue</code></a>.</p></div></dt><dd></dd><dt><dl><dt>Type</dt><dd><span class="param-type">TypeError</span></dd></dl></dt><dd></dd></dl></div><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the instantiated option class instance.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type"><a href="LuCI.form.AbstractValue.html">LuCI.<wbr>form.<wbr>AbstractValue</a></span></dd></dl></div><h3 class="name has-anchor" id="parse"><span class="type-signature"></span>parse<span class="signature">()</span><span class="type-signature"> &rarr; {Promise.&lt;void>}</span></h3><div class="description"><p>Parse this sections form input.</p><p>The <code>parse()</code> function recursively walks the section element tree and triggers input value reading and validation for each encountered child option element.</p><p>Options which are hidden due to unsatisfied dependencies are skipped.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-overrides bold">Overrides</dt><dd class="tag-overrides"><ul><li><a href="LuCI.form.TableSection.html#parse">LuCI.form.TableSection#parse</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line4105">line 4105</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns a promise resolving once the values of all child elements have been parsed. The returned promise is rejected if any parsed values do not meet the validation constraints of their respective elements.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">Promise.&lt;void></span></dd></dl></div><h3 class="name has-anchor" id="stripTags"><span class="type-signature"></span>stripTags<span class="signature">(s)</span><span class="type-signature"> &rarr; {string}</span></h3><div class="description"><p>Strip any HTML tags from the given input string, and decode HTML entities.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>s</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The input string to clean.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.AbstractElement.html#stripTags">LuCI.form.AbstractElement#stripTags</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line305">line 305</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>The cleaned input string with HTML tags removed, and HTML entities decoded.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="tab"><span class="type-signature"></span>tab<span class="signature">(name, title, description<span class="signature-attributes">opt</span>)</span></h3><div class="description"><p>Add an option tab to the section.</p><p>The modal option elements of a grid section may be divided into multiple tabs to provide a better overview to the user.</p><p>Before options can be moved into a tab pane, the corresponding tab has to be defined first, which is done by calling this function.</p><p>Note that tabs are only effective in modal popups. Options added with <code>option()</code> will not be assigned to a specific tab and are rendered in the table view only.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="description last"><p>The name of the tab to register. It may be freely chosen and just serves as an identifier to differentiate tabs.</p></td></tr><tr><td class="name"><code>title</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="description last"><p>The human readable caption of the tab.</p></td></tr><tr><td class="name"><code>description</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes">&lt;optional><br></td><td class="description last"><p>An additional description text for the corresponding tab pane. It is displayed as a text paragraph below the tab but before the tab pane contents. If omitted, no description will be rendered.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-overrides bold">Overrides</dt><dd class="tag-overrides"><ul><li><a href="LuCI.form.TableSection.html#tab">LuCI.form.TableSection#tab</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line3980">line 3980</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Throws:</strong><dl><dt><div class="param-desc"><p>Throws an exception if a tab with the same <code>name</code> already exists.</p></div></dt><dd></dd><dt><dl><dt>Type</dt><dd><span class="param-type">Error</span></dd></dl></dt><dd></dd></dl></div><h3 class="name has-anchor" id="taboption"><span class="type-signature"></span>taboption<span class="signature">(tabName, optionclass, &hellip;args)</span><span class="type-signature"> &rarr; {<a href="LuCI.form.AbstractValue.html">LuCI.form.AbstractValue</a>}</span></h3><div class="description"><p>Add a configuration option widget to a tab of the section.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>tabName</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="description last"><p>The name of the section tab to add the option element to.</p></td></tr><tr><td class="name"><code>optionclass</code></td><td class="type"><span class="param-type"><a href="LuCI.form.AbstractValue.html">LuCI.<wbr>form.<wbr>AbstractValue</a></span></td><td class="attributes"></td><td class="description last"><p>The option class to use for rendering the configuration option. Note that this value must be the class itself, not a class instance obtained from calling <code>new</code>. It must also be a class derived from <a href="LuCI.form.AbstractSection.html"><code>AbstractSection</code></a>.</p></td></tr><tr><td class="name"><code>args</code></td><td class="type"><span class="param-type">*</span></td><td class="attributes">&lt;repeatable><br></td><td class="description last"><p>(classargs) Additional arguments which are passed as-is to the constructor of the given option class. Refer to the class specific constructor documentation for details.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.AbstractSection.html#taboption">LuCI.form.AbstractSection#taboption</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line1093">line 1093</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Throws:</strong><ul><li><dl><dt><div class="param-desc"><p>Throws a <code>ReferenceError</code> exception when the given tab name does not exist.</p></div></dt><dd></dd><dt><dl><dt>Type</dt><dd><span class="param-type">ReferenceError</span></dd></dl></dt><dd></dd></dl></li><li><dl><dt><div class="param-desc"><p>Throws a <code>TypeError</code> exception in case the passed class value is not a descendant of <a href="LuCI.form.AbstractValue.html"><code>AbstractValue</code></a>.</p></div></dt><dd></dd><dt><dl><dt>Type</dt><dd><span class="param-type">TypeError</span></dd></dl></dt><dd></dd></dl></li></ul></div><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the instantiated option class instance.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type"><a href="LuCI.form.AbstractValue.html">LuCI.<wbr>form.<wbr>AbstractValue</a></span></dd></dl></div><h3 class="name has-anchor" id="titleFn"><span class="type-signature"></span>titleFn<span class="signature">(attr, &hellip;args)</span><span class="type-signature"> &rarr; {string|null}</span></h3><div class="description"><p>Format the given named property as a title string.</p><p>This function looks up the given named property and formats its value suitable for use as an element caption or description string. It also strips any HTML tags from the result.</p><p>If the property value is a string, it is passed to <code>String.format()</code> along with any additional parameters passed to <code>titleFn()</code>.</p><p>If the property value is a function, it is invoked with any additional <code>titleFn()</code> parameters as arguments, and the obtained return value is converted to a string.</p><p>In all other cases, <code>null</code> is returned.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>attr</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="description last"><p>(property) The name of the element property to use.</p></td></tr><tr><td class="name"><code>args</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes">&lt;repeatable><br></td><td class="description last"><p>(fmt_args) Extra values to format the title string with.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="inherited-from bold">Inherited From</dt><dd class="inherited-from"><ul><li><a href="LuCI.form.AbstractElement.html#titleFn">LuCI.form.AbstractElement#titleFn</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line344">line 344</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>The formatted title string or <code>null</code> if the property did not exist or was neither a string nor a function.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">string</span> |<wbr> <span class="param-type">null</span></dd></dl></div></article></section></div></div></div><div class="search-container" id="PkfLWpAbet" style="display:none"><div class="wrapper" id="iCxFxjkHbP"><button class="icon-button search-close-button" id="VjLlGakifb" aria-label="close search"><svg><use xlink:href="#close-icon"></use></svg></button><div class="search-box-c"><svg><use xlink:href="#search-icon"></use></svg> <input type="text" id="vpcKVYIppa" class="search-input" placeholder="Search..." autofocus></div><div class="search-result-c" id="fWwVHRuDuN"><span class="search-result-c-text">Type anything to view search result</span></div></div></div><div class="mobile-menu-icon-container"><button class="icon-button" id="mobile-menu" data-isopen="false" aria-label="menu"><svg><use xlink:href="#menu-icon"></use></svg></button></div><div id="mobile-sidebar" class="mobile-sidebar-container"><div class="mobile-sidebar-wrapper"><a href="/" class="sidebar-title sidebar-title-anchor">LuCI Documentation</a><div class="mobile-nav-links"><div class="github-home navbar-item"><a id="" href="https://github.com/openwrt/luci" target="">GitHub Project Page</a></div></div><div class="mobile-sidebar-items-c"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-tutorials"><div>Tutorials</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="tutorial-JsonRpcHowTo.html">Using JSON RPC daemon</a></div><div class="sidebar-section-children"><a href="tutorial-Modules.html">Modules</a></div><div class="sidebar-section-children"><a href="tutorial-ThemesHowTo.html">Making Themes</a></div><div class="sidebar-section-children"><a href="tutorial-i18n.html">Internationalisation - i18n</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="LuCI.module_cbi.html">cbi</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-classes"><div>Classes</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="LuCI.html">LuCI</a></div><div class="sidebar-section-children"><a href="LuCI.baseclass.html">baseclass</a></div><div class="sidebar-section-children"><a href="LuCI.dom.html">dom</a></div><div class="sidebar-section-children"><a href="LuCI.form.html">form</a></div><div class="sidebar-section-children"><a href="LuCI.form.AbstractElement.html">AbstractElement</a></div><div class="sidebar-section-children"><a href="LuCI.form.AbstractSection.html">AbstractSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.AbstractValue.html">AbstractValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.Button.html">Button</a></div><div class="sidebar-section-children"><a href="LuCI.form.DirectoryPicker.html">DirectoryPicker</a></div><div class="sidebar-section-children"><a href="LuCI.form.DummyValue.html">DummyValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.DynamicList.html">DynamicList</a></div><div class="sidebar-section-children"><a href="LuCI.form.FileUpload.html">FileUpload</a></div><div class="sidebar-section-children"><a href="LuCI.form.Flag.html">Flag</a></div><div class="sidebar-section-children"><a href="LuCI.form.GridSection.html">GridSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.HiddenValue.html">HiddenValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.JSONMap.html">JSONMap</a></div><div class="sidebar-section-children"><a href="LuCI.form.ListValue.html">ListValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.Map.html">Map</a></div><div class="sidebar-section-children"><a href="LuCI.form.MultiValue.html">MultiValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.NamedSection.html">NamedSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.RangeSliderValue.html">RangeSliderValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.RichListValue.html">RichListValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.SectionValue.html">SectionValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.TableSection.html">TableSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.TextValue.html">TextValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.TypedSection.html">TypedSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.Value.html">Value</a></div><div class="sidebar-section-children"><a href="LuCI.fs.html">fs</a></div><div class="sidebar-section-children"><a href="LuCI.headers.html">headers</a></div><div class="sidebar-section-children"><a href="LuCI.network.html">network</a></div><div class="sidebar-section-children"><a href="LuCI.network.Device.html">Device</a></div><div class="sidebar-section-children"><a href="LuCI.network.Hosts.html">Hosts</a></div><div class="sidebar-section-children"><a href="LuCI.network.Protocol.html">Protocol</a></div><div class="sidebar-section-children"><a href="LuCI.network.WifiDevice.html">WifiDevice</a></div><div class="sidebar-section-children"><a href="LuCI.network.WifiNetwork.html">WifiNetwork</a></div><div class="sidebar-section-children"><a href="LuCI.network.WifiVlan.html">WifiVlan</a></div><div class="sidebar-section-children"><a href="LuCI.poll.html">poll</a></div><div class="sidebar-section-children"><a href="LuCI.request.html">request</a></div><div class="sidebar-section-children"><a href="LuCI.request.poll.html">poll</a></div><div class="sidebar-section-children"><a href="LuCI.response.html">response</a></div><div class="sidebar-section-children"><a href="LuCI.rpc.html">rpc</a></div><div class="sidebar-section-children"><a href="LuCI.session.html">session</a></div><div class="sidebar-section-children"><a href="LuCI.uci.html">uci</a></div><div class="sidebar-section-children"><a href="LuCI.ui.html">ui</a></div><div class="sidebar-section-children"><a href="LuCI.ui.AbstractElement.html">AbstractElement</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Checkbox.html">Checkbox</a></div><div class="sidebar-section-children"><a href="LuCI.ui.ComboButton.html">ComboButton</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Combobox.html">Combobox</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Dropdown.html">Dropdown</a></div><div class="sidebar-section-children"><a href="LuCI.ui.DynamicList.html">DynamicList</a></div><div class="sidebar-section-children"><a href="LuCI.ui.FileUpload.html">FileUpload</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Hiddenfield.html">Hiddenfield</a></div><div class="sidebar-section-children"><a href="LuCI.ui.RangeSlider.html">RangeSlider</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Select.html">Select</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Textarea.html">Textarea</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Textfield.html">Textfield</a></div><div class="sidebar-section-children"><a href="LuCI.ui.changes.html">changes</a></div><div class="sidebar-section-children"><a href="LuCI.ui.menu.html">menu</a></div><div class="sidebar-section-children"><a href="LuCI.ui.tabs.html">tabs</a></div><div class="sidebar-section-children"><a href="LuCI.validation.html">validation</a></div><div class="sidebar-section-children"><a href="LuCI.validation.Validator.html">Validator</a></div><div class="sidebar-section-children"><a href="LuCI.validation.ValidatorFactory.html">ValidatorFactory</a></div><div class="sidebar-section-children"><a href="LuCI.view.html">view</a></div><div class="sidebar-section-children"><a href="LuCI.xhr.html">xhr</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-externals"><div>Externals</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="external-String.html">String</a></div></div></div><div class="mobile-navbar-actions"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#dark-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div></div></div><script type="text/javascript" src="scripts/core.min.js"></script><script src="scripts/search.min.js" defer="defer"></script><script src="scripts/third-party/fuse.js" defer="defer"></script><script type="text/javascript">var tocbotInstance=tocbot.init({tocSelector:"#eed4d2a0bfd64539bb9df78095dec881",contentSelector:".main-content",headingSelector:"h1, h2, h3",hasInnerContainers:!0,scrollContainer:".main-content",headingsOffset:130,onClick:bringLinkToView})</script></body></html>