summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-base/htdocs/luci-static/resources/cbi.js
AgeCommit message (Collapse)Author
2018-12-29luci-base: rework filebrowser initializationJo-Philipp Wich
Do not call cbi_init() from the browser field template but lazily initialize the field, like it is being done for all other widgets as well. Fixes: #2398 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-12-13luci-base: cbi.js: update deps on dynlist changes, honor placeholderJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-12-10luci-base: rework ui tabbing codeJo-Philipp Wich
- Instantiate tab menus on the client side - Simplify server side markup generation - Show error indicators in cbi tabs Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-12-02luci-base: fix ReferenceErrorJo-Philipp Wich
The showTooltip() and hideTooltip() functions have been moved to luci.js Reported-by: brv phoenix <feixuekaka1@gmail.com> Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-22luci-base: move DOM manipulation functions to luci.jsJo-Philipp Wich
Introduce a new luci.dom class which groups the DOM manipulation helpers such as E(), findParent(), matchesElem() etc. Provide wrappers for the old functions to ease the transition to the new functions. Also add a new widget helper function L.itemlist() which consolidates the item enumeration formatting code found on various pages. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-22luci-base: cbi.js: remove functions moved to luci.jsJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-19luci-base: further hash calculation signedness bugfixesJo-Philipp Wich
- cbi.js: make sure to treat single bytes as signed char when handling end cases - template_lmo.c: make sure to treat single bytes as signed char when handling end cases, avoids hash miscalculations on ARM Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-19luci-base: cbi.js: fix sfh() signedness bug for strings with 3 trailing bytesJo-Philipp Wich
Replace a sign-propagating right shift by a zero-filling right shift to avoid calculating a wrong hash code in the three-trailing-bytes case. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-19luci-base: cbi.js: fix sfh() hash calculation over multibyte sequencesJo-Philipp Wich
The C side implementation of the hash operates on bytes while the JS variant operated on UTF-16 codepoints, leading to miscalculations on input strings containing multibyte sequences. Recode the given string to an internal UTF-8 byte representation and calculate the hash over that. Fixes client side mapping of translation strings containing non-ASCII characters. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-14luci-base: cbi.js: add modal dialog functionsJo-Philipp Wich
Add two new functions showModal() and hideModal() which will fade in and close an open modal respectively. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-14luci-base, themes: dropdown behaviour improvementsJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-14luci-base: cbi.js: remove dead code in cbi_validate_field()Jo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-14luci-base: cbi.js: enable validation for dropdown fieldsJo-Philipp Wich
Directly attach validation handlers to cbi dropdowns as well, this allows validating dropdown choices made by the user, similar to how plain select boxes are handled by the cbi JavaScript. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-14luci-base: cbi.js: set .value property of cbi dropdown elementsJo-Philipp Wich
In order to make cbi dropdowns usable for validation and other code expecting native form elements, set the .value DOM property on the dropdown parent element whenever the selection is changed. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-14luci-base: cbi.js: properly handle cbi tooltips on nested elementsJo-Philipp Wich
Rework the tooltip event delegation logic to prevent hiding the tooltop when the cursor is moved to a children of the tooltip container element. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-14luci-base: cbi.js: avoid using .form property directlyJo-Philipp Wich
In order to prepare support for calling cbi validation on non-native form widgets, remove direct usages of the node.form property and lookup the containing form using findParent() instead. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-14luci-base: cbi.js: fix passing multiple dropdown values in change eventJo-Philipp Wich
Due to a misspelled property name, only the first value was passed in the event details. Fixes: c2b570998 ("luci-base: cbi.js: rework dropdown implementation") Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-11luci-base: fix translation issuesINAGAKI Hiroshi
Fixed several issues for translation. - add translation markup to "Expecting " - add missing ")" into "valid time (HH:MM:SS" Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
2018-11-05luci-base: cbi.js: add client-side hexstring datatype validatorJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base: cbi.js: add heuristics to attribute handling in E()Jo-Philipp Wich
If a given attribute value is a function, register it as event listener, if it is an object, filter it through JSON.stringify(), else set it as-is. This helps to reduce some boiler-plate code when building DOM structures. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base, themes: rework dynlist and dropdown widgetsJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base: cbi.js: rework dropdown implementationJo-Philipp Wich
- Refactor event handler closures into class methods and bind them instead - Fix quirk in dropdown placement calculation - Different dropdown placement strategy on touch devices - Broadcast custom "cbi-dropdown-change" event when value is changed - Implement setValues() method to alter dropdown selection - Prevent creating empty custom values Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base: cbi.js: utilize node.closest() if availableJo-Philipp Wich
Use node.closest() in findParent() when available since it should be faster than manaually traversing the ancestor chain. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base: cbi.js: drop cbi_bind()Jo-Philipp Wich
Just use node.addEventListener() directly since all reasonably recent browsers support it nowadays. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base: cbi.js: rework client side input validationJo-Philipp Wich
- Refactor and fix datatype validation functions - Turn the type compilation and validation into a proper class - Display tooltip with error hint on invalid inputs Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base: cbi.js: fix corner case in IPv6() address parserJo-Philipp Wich
The implementation allowed a hexadecimal string without any colons. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base, themes: add tooltip helpers & stylesJo-Philipp Wich
Add the required JS and CSS infrastructure to support rich hover/focus tooltips for element. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base: cbi.js: switch to client side translationJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base: cbi.js: add client side translation infrastructureJo-Philipp Wich
Implement the string hash algorithm used by LuCI's translation system in JavaScript and provide a `_()` translation wrapper function to lookup messages in the global string table. Once client side translation loading is activated in a later commit, JavaScript code can use the same string translation mechanism as server side Lua code, e.g. `_("Static Routes")` would yield "Statische Routen" when the German translation is loaded. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-10-28Add missing variable declarations in JavaScript codeStefan Weil
This fixes errors reported by LGTM. Signed-off-by: Stefan Weil <sw@weilnetz.de>
2018-10-17luci-base: fix cbi dropdown quirks with MS EdgeJo-Philipp Wich
On MS Edge, the behaviour of "value" attributes on "li" elements is unreliable, so use the "data-" prefix to circumvent the problem. Ref: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/19320991/ Fixes: #2224 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-10-11luci-base: cbi.js: remove dead codeJo-Philipp Wich
Remove some superfluous code which was added with a previous commit. Fixes: 8270f10f1 ("luci-base: cbi.js: code cleanups") Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-10-11luci-base: cbi.js: code cleanupsJo-Philipp Wich
- unify code style - add matchesElem() helper - replace nodeName checks with selector tests - replace className manipulations with classList operations Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-10-10luci-base: cbi.js: recognize invalid input in dropdown create fieldJo-Philipp Wich
This is required to allow for validating the create field values in later commits. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-23luci-base: cbi.js: fade to-be-deleted section when hovering delete buttonJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-23luci-base: cbi.js: use adjacent button dynlist add/remove buttonsJo-Philipp Wich
Change the cbi.js code to create a div based button element instead of an image button. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-18luci-base: cbi.js: add cbi_submit() helperJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-09luci-base: cbi.js: avoid setting empty cell title attributesJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-09luci-base: cbi.js: add NodeList.forEach() polyfill for IE 11Jo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-22luci-base: cbi.js: add tooltip handling and responsive table helper codeJo-Philipp Wich
- make findParent() globally available - add code for initializing rich cbi tooltips - introduce cbi_update_table() helper to auto-assign responsive attributes to table markup Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-08luci-base: add markup, JS and CSS for new dropdownJo-Philipp Wich
This commit introduces the required code for a new, markup based dropdown widget which can be used as a styleable alternative to select boxes or radio/checkbox button groups. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-30luci-base: cbi.js: remove unused serialize functionsJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-30luci-base: cbi.js: fix cbi_row_swap() after recent table markup changesJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-28luci-base: add element creation helper to cbi.jsJo-Philipp Wich
Add a new helper function `E()` to cbi.js which can be used to conveniently build HTML markup. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-04-04luci-base: add a strict flag to the hostname validatorJo-Philipp Wich
Some applications, e.g. dnsmasq, do not allow hostnames starting with an underscore, therefor extend the existing hostname datatype validator with a `strict` which disallows a leading underscore. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-02-16luci-base: rework client side IP validation types and support "hostid" typeJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-10-25luci-base: fix client side "host" datatype validatorJo-Philipp Wich
Fixes #1413. Reported-by: Wojciech Jowsa <wojciech.jowsa@gmail.com> Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-08-22luci-base: datatypes: add cidr, ipnet validator typeYousong Zhou
- Rewrite ipmask to use these subtypes - Add ip{4,6}prefix validators to cbi.js Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2017-07-28luci-base: cbi.js: fix handling of inverse-depends, combobox validationJo-Philipp Wich
- Properly handle logic for evaluating inverted dependencies means when depending on another field *not* having a given value - Perform datatype validation *after* populating combobox choices to avoid triggering a false-positive when validating an .rmempty = false combobox during form instantiation Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-07-21luci-base: fix loading fold.gif for filebrowserYousong Zhou
cbi_init() needs to be called at the end of the page to initialize cbi_strings with "[data-strings]" while cbi_browser_init() happened before that. Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>