mirror of
https://github.com/openwrt/luci.git
synced 2026-04-15 19:01:56 +00:00
3 lines
53 KiB
HTML
3 lines
53 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: AbstractSection</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="AbstractSection-title" class="has-anchor"><span class="ancestors"><a href="LuCI.html">LuCI</a><a href="LuCI.form.html">.form</a>.</span> AbstractSection</h1><div class="class-description"><p>The <code>AbstractSection</code> class serves as an abstract base for the different form section styles implemented by <a href="LuCI.form.html"><code>LuCI.form</code></a>. It provides the common logic for enumerating underlying configuration section instances, for registering form options and for handling tabs in order to segment child options.</p><p>This class is private and not directly accessible by user code.</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#line851">line 851</a></li></ul></dd></div></dl></div><h2 id="Extends" class="subsection-title has-anchor">Extends</h2><ul><li><a href="LuCI.form.AbstractElement.html">LuCI.form.AbstractElement</a></li></ul><h2 id="members" class="subsection-title has-anchor">Members</h2><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="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><h2 id="methods" class="subsection-title has-anchor">Methods</h2><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="cfgsections"><span class="type-signature">(abstract) </span>cfgsections<span class="signature">()</span><span class="type-signature"> → {Array.<string>}</span></h3><div class="description"><p>Enumerate the UCI section IDs covered by this form section element.</p></div><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#line903">line 903</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 <code>InternalError</code> exception if the function is not implemented.</p></div></dt><dd></dd><dt><dl><dt>Type</dt><dd><span class="param-type">InternalError</span></dd></dl></dt><dd></dd></dl></div><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an array of UCI section IDs covered by this form element. The sections will be rendered in the same order as the returned array.</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Array.<string></span></dd></dl></div><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"> → {null|string|Array.<string>|Object.<string, (null|string|Array.<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"><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="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: </dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">string</span> |<wbr> <span class="param-type">Array.<string></span> |<wbr> <span class="param-type">Object.<string, (null|string|Array.<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"> → {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="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: </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"> → {null|string|Array.<string>|Object.<string, (null|string|Array.<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"><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="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: </dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">string</span> |<wbr> <span class="param-type">Array.<string></span> |<wbr> <span class="param-type">Object.<string, (null|string|Array.<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"> → {null|<a href="LuCI.form.AbstractValue.html">LuCI.form.AbstractValue</a>|Object.<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"><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="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: </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.<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"> → {null|<a href="LuCI.ui.AbstractElement.html">LuCI.ui.AbstractElement</a>|Object.<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"><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="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: </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.<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"> → {Promise.<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="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: </dt><dd><span class="param-type">Promise.<void></span></dd></dl></div><h3 class="name has-anchor" id="option"><span class="type-signature"></span>option<span class="signature">(optionclass, cbiClass, …args)</span><span class="type-signature"> → {<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"><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="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: </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"> → {Promise.<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.AbstractElement.html#parse">LuCI.form.AbstractElement#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#line970">line 970</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: </dt><dd><span class="param-type">Promise.<void></span></dd></dl></div><h3 class="name has-anchor" id="render"><span class="type-signature">(abstract) </span>render<span class="signature">()</span><span class="type-signature"> → {Node|Promise.<Node>}</span></h3><div class="description"><p>Render the form element.</p><p>The <code>render()</code> function recursively walks the form element tree and renders the markup for each element, returning the assembled DOM tree.</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.AbstractElement.html#render">LuCI.form.AbstractElement#render</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#line255">line 255</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>May return a DOM Node or a promise resolving to a DOM node containing the form element's markup, including the markup of any child elements.</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Node</span> |<wbr> <span class="param-type">Promise.<Node></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"> → {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: </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 child option elements of a 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 once tabs are defined, user code must use the <code>taboption()</code> method to add options to specific tabs. Option elements added by <code>option()</code> will not be assigned to any tab and not be rendered in this case.</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"><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-source bold">Source</dt><dd class="tag-source"><ul><li><a href="form.js.html">form.js</a>, <a href="form.js.html#line1011">line 1011</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, …args)</span><span class="type-signature"> → {<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"><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="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: </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, …args)</span><span class="type-signature"> → {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"><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: </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> |