A millisecond value after which the notification will disappear
automatically. If omitted, the notification will remain until it
receives the click event.
Existing calls are unaffected.
Signed-off-by: Paul Donald <newtwen+github@gmail.com>
This change is required, so that the cancel button is the first and thus
closes the modal when the 'ESC' button is pressed.
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
Allow downloading from a file browser.
The Download button is located near to Delete.
It's shown only for files: folders or /dev/ devices can't be downloaded.
The downloading is made via fs.read_direct() which internally calls cgi-download.
Signed-off-by: Sergey Ponomarev <stokito@gmail.com>
This reverts commit 97ebdcbddb.
The commit seems to cause errors already before the login screen.
Discussion in 97ebdcbddb (commitcomment-139871175)
Errors like:
In error(), file [C]
called from function [anonymous function] (/usr/lib/lua/luci/ucodebridge.lua:23)
called from function ((tail call))
In [anonymous function](), file /usr/share/ucode/luci/runtime.uc, line 148, byte 45:
called from function build_pagetree (/usr/share/ucode/luci/dispatcher.uc:382:73)
called from function menu_json (/usr/share/ucode/luci/dispatcher.uc:439:26)
called from function [anonymous function] (/usr/share/ucode/luci/dispatcher.uc:898:24)
called from anonymous function (/www/cgi-bin/luci:39:13)
` return lcall.call(modname, method, ...args);`
Near here ----------------------------------------^
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Because the menu JSON can have 'depends' in them, uci changes
should force the menu to regenerate.
Closes#6423
Signed-off-by: James Haggerty <james.haggerty@morsemicro.com>
Signed-off-by: Paul Donald <newtwen@gmail.com>
The call function was based on the legacy XHR interface and it has not
been updated to comply with the new request interface which passes the
duration as part of the response object rather than as a separate
argument. This resulted in polling in a tight loop in certain cases
since the duration was undefined.
In addition there is no need to adjust apply_holdoff based on elapsed
time as no significant amount of time has elapsed at this point.
Signed-off-by: Erik Karlsson <erik.karlsson@genexis.eu>
In the Browser mode the file tree dialog won't be closed when clicking on a file.
The mode is used by a File Browser.
Signed-off-by: Sergey Ponomarev <stokito@gmail.com>
- Ensure that pressing escape within the custom choice input closes the
dropdown list but not the parent modal dialog
- Ensure that added custom choice elements are tabbable
- Retain focus on dropdown when closing dropdown
- Consistently focus input textarea when tabbing into custom choice item
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Drop mouse following focus behavior as it interferes with custom value inputs,
rely on CSS based hover effects instead.
Also slightly improve keyboard navigation by auto-focussing the custom value
input when entering the last dropdown choice via arrow down or tab key, and
by allowing to leave the text input again with the arrow up key.
Fixes: #6903
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
- Populate id option from table id attribute
- Update column head sort indicator in UITable.update()
- Don't store sort state for tables without id
Ref: https://github.com/openwrt/luci/issues/6640
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
In some places argument name was renamed but in the JsDoc it's remain old.
Added more typing for string enum fields like:
@param {string} [type=text]
replaced with:
@param {"blob"|"text"|"blob"} [type=text]
Signed-off-by: Sergey Ponomarev <stokito@gmail.com>
Attempt to prevent Firefox from randomly filling nonesense into arbitrary
password fields such as the WireGuard private key field by setting the
`autocomplete="new-password"` attribute on any password type fields.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The OpenConnect configuration form incorrectly assumed that the server
setting must be hostname while it actually may be a full URL.
Fixes: #6184
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Improve overall event and focus handling, avoid registering a global
mouseover event listener, stop propagating escape keypress on closing
dropdown and avoid `Element.blur()` to prevent de-focusing open modals.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Constructing UITable instances from existing, div based markup is
supported but the UITable.update() implementation did not account
for that, leading to defunct data updates on tables built from div
based markup.
Fix this issue by extending UITable.update() to consider a div based
table structure as well, like we do in UITable.initFromMarkup() already.
Fixes: #5713
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
- Gracefully handle cells without innerText
- Properly handle `DocumentFragment` call values on table update
- Introduce ability to fetch actual cell value for sorting purposes from
`data-value` attribute
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Refactor various sort operations throughout luci-base to use the new
L.naturalCompare() comparator function.
This primarily ensures that embedded numbers are sorted numerically and
not in a lexicographical way.
It also simplifies some code as a side effect.
Ref: #5899
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
If specific settings such as the protocol, IP address or netmask of an
interface the user is connected to are changed, the apply/rollback
mechanism might interfere. Display an additional warning dialog in this
case, instructing the user to manually reconnect and offering to continue
with a less safe unchecked apply mechanism.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Previously, "Apply unchecked" was only possible from the save action of CBI
maps, allow to invoke it from the configuration change dialog as well.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Do not abort the poll loop if some confirm request attempts fail, which
might happen when the device starts rolling back its configuration.
Before that fix, the rollback information dialog offering an unchecked
apply was not reliably presented in such situations.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Extend LuCI.ui.menu.getChildren() to resolve aliases and rewrites prior to
returning the menu nodes. This allows aliasing entire menu trees instead of
just single pages.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Introduce a new `LuCI.ui.Table` class to simplify generating HTML tables
for data output and turn the existing `cbi_update_table()` procedure into
a wrapper around this new facility.
Tables generated by the new class closely resemble the old markup but
provide additional sorting capabilities.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
- Prefer nodes that do not require authentication over nodes that do
- Honour ACL dependencies while resolving firstchild nodes
- Consider currently active session while scanning menu tree instead
of only loading effective ACLs when a login node is encountered
- Do not consider nodes for firstchild dispatching which specify a
special "firstchild_ineligible" property
- Hide menu nodes that have no accessible children
Signed-off-by: Jo-Philipp Wich <jo@mein.io>