diff options
Diffstat (limited to 'app/assets/javascripts/gl_field_errors.js')
-rw-r--r-- | app/assets/javascripts/gl_field_errors.js | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/app/assets/javascripts/gl_field_errors.js b/app/assets/javascripts/gl_field_errors.js index c4fd719c8d0..ad79483d5ec 100644 --- a/app/assets/javascripts/gl_field_errors.js +++ b/app/assets/javascripts/gl_field_errors.js @@ -52,10 +52,23 @@ export default class GlFieldErrors { }); } - focusOnFirstInvalid() { - const firstInvalid = this.state.inputs.filter( - input => !input.inputDomElement.validity.valid, - )[0]; - firstInvalid.inputElement.focus(); + get invalidInputs() { + return this.state.inputs.filter( + ({ + inputDomElement: { + validity: { valid }, + }, + }) => !valid, + ); + } + + get focusedInvalidInput() { + return this.invalidInputs.find(({ inputElement }) => inputElement.is(':focus')); + } + + focusInvalid() { + if (this.focusedInvalidInput) return; + + this.invalidInputs[0].inputElement.focus(); } } |