summaryrefslogtreecommitdiffstats
path: root/install/ui/src/freeipa/widget.js
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2014-06-25 15:17:26 +0200
committerPetr Vobornik <pvoborni@redhat.com>2014-07-01 10:19:46 +0200
commit99c5f0511f697cc54a9de7994c3e6999c6fd119f (patch)
tree10bd2e003647450dde60d8833a40b91115f35343 /install/ui/src/freeipa/widget.js
parentc693b28babf97d22c14d37e024d551b583c4327f (diff)
downloadfreeipa-99c5f0511f697cc54a9de7994c3e6999c6fd119f.tar.gz
freeipa-99c5f0511f697cc54a9de7994c3e6999c6fd119f.tar.xz
freeipa-99c5f0511f697cc54a9de7994c3e6999c6fd119f.zip
webui: focus invalid widget on validation error
Reviewed-By: Fraser Tweedale <ftweedal@redhat.com> Reviewed-By: Endi Sukma Dewata <edewata@redhat.com>
Diffstat (limited to 'install/ui/src/freeipa/widget.js')
-rw-r--r--install/ui/src/freeipa/widget.js22
1 files changed, 22 insertions, 0 deletions
diff --git a/install/ui/src/freeipa/widget.js b/install/ui/src/freeipa/widget.js
index 1db0052f4..ae1ada239 100644
--- a/install/ui/src/freeipa/widget.js
+++ b/install/ui/src/freeipa/widget.js
@@ -5756,6 +5756,28 @@ exp.activity_widget = IPA.activity_widget = function(spec) {
};
/**
+ * Find and focus first focusable invalid widget
+ * @member widget
+ * @param {IPA.widget|facet.facet} widget Widget container
+ * @return {boolean} A widget was focused
+ */
+exp.focus_invalid = function(widget) {
+
+ var widgets = widget.widgets.widgets;
+ var focused = false;
+ for (var i=0, l=widgets.length; i<l; i++) {
+ var w = widgets.values[i];
+ if (w.valid === false && w.focus_input) {
+ w.focus_input();
+ focused = true;
+ }
+ else if (w.widgets) focused = exp.focus_invalid(w);
+ if (focused) break;
+ }
+ return focused;
+};
+
+/**
* pre_op operations for widgets
* - sets facet and entity if present in context
* @member widget