luci-base: form.js: add ability to specify regular expression dependencies
authorJo-Philipp Wich <jo@mein.io>
Mon, 3 Aug 2020 12:39:40 +0000 (14:39 +0200)
committerJo-Philipp Wich <jo@mein.io>
Wed, 5 Aug 2020 11:51:16 +0000 (13:51 +0200)
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-base/htdocs/luci-static/resources/form.js

index 89d92c8f9d2f9c7593f66450d2f1397950c29b83..d5e3e941abe8bae184ffc05492403e9f755c30c8 100644 (file)
@@ -1132,6 +1132,9 @@ var CBIAbstractSection = CBIAbstractElement.extend(/** @lends LuCI.form.Abstract
 
 
 var isEqual = function(x, y) {
+       if (typeof(y) == 'object' && y instanceof RegExp)
+               return (x == null) ? false : y.test(x);
+
        if (x != null && y != null && typeof(x) != typeof(y))
                return false;
 
@@ -1428,6 +1431,10 @@ var CBIAbstractValue = CBIAbstractElement.extend(/** @lends LuCI.form.AbstractVa
         *   Equivalent to the previous example.
         *  </li>
         *  <li>
+        *   <code>opt.depends({ foo: /test/ })</code><br>
+        *   Require the value of `foo` to match the regular expression `/test/`.
+        *  </li>
+        *  <li>
         *   <code>opt.depends({ foo: "test", bar: "qrx" })</code><br>
         *   Require the value of `foo` to be `test` and the value of `bar` to be
         *   `qrx`.
@@ -1449,11 +1456,11 @@ var CBIAbstractValue = CBIAbstractElement.extend(/** @lends LuCI.form.AbstractVa
         *  </li>
         * </ul>
         *
-        * @param {string|Object<string, string|boolean>} optionname_or_depends
+        * @param {string|Object<string, string|RegExp>} optionname_or_depends
         * The name of the option to depend on or an object describing multiple
         * dependencies which must be satified (a logical "and" expression).
         *
-        * @param {string} optionvalue
+        * @param {string} optionvalue|RegExp
         * When invoked with a plain option name as first argument, this parameter
         * specifies the expected value. In case an object is passed as first
         * argument, this parameter is ignored.