Jforrester has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/373391 )

Change subject: mw.widgets.SelectWithInputWidget: Invisible invalid fields 
should not block form submission
......................................................................

mw.widgets.SelectWithInputWidget: Invisible invalid fields should not block 
form submission

Same logic as in resources/src/mediawiki/htmlform/hide-if.js,
explanatory comment is copy-pasted from there.

Bug: T173839
Change-Id: I87603936d23165926d2ef4c64f3a61dca2062caf
(cherry picked from commit 23ca8a57ab735e3e98d55875f2e66dc22bcdefe7)
---
M resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.js
1 file changed, 17 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/91/373391/1

diff --git 
a/resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.js 
b/resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.js
index 8c60ecf..1960351 100644
--- a/resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.js
+++ b/resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.js
@@ -46,11 +46,10 @@
                // Properties
                this.textinput = new OO.ui.TextInputWidget( config.textinput );
                this.dropdowninput = new OO.ui.DropdownInputWidget( 
config.dropdowninput );
+               this.or = config.or;
 
-               if ( config.or === true ) {
-                       this.dropdowninput.on( 'change', this.onChange.bind( 
this ) );
-                       this.onChange();
-               }
+               // Events
+               this.dropdowninput.on( 'change', this.onChange.bind( this ) );
 
                // Parent constructor
                mw.widgets.SelectWithInputWidget.parent.call( this, config );
@@ -62,6 +61,7 @@
                                this.dropdowninput.$element,
                                this.textinput.$element
                        );
+               this.onChange();
        };
 
        /* Setup */
@@ -116,9 +116,13 @@
         * @inheritdoc
         */
        mw.widgets.SelectWithInputWidget.prototype.setDisabled = function ( 
disabled ) {
+               var textinputIsHidden = this.or && 
this.dropdowninput.getValue() !== 'other';
                
mw.widgets.SelectWithInputWidget.parent.prototype.setDisabled.call( this, 
disabled );
-               this.textinput.setDisabled( disabled );
                this.dropdowninput.setDisabled( disabled );
+               // It is impossible to submit a form with hidden fields failing 
validation, e.g. one that
+               // is required. However, validity is not checked for disabled 
fields, as these are not
+               // submitted with the form. So we should also disable fields 
when hiding them.
+               this.textinput.setDisabled( textinputIsHidden || disabled );
        };
 
        /**
@@ -128,8 +132,14 @@
         * @private
         */
        mw.widgets.SelectWithInputWidget.prototype.onChange = function ( value 
) {
-               value = value || this.dropdowninput.getValue();
-               this.textinput.$element.toggle( value === 'other' );
+               if ( this.or ) {
+                       value = value || this.dropdowninput.getValue();
+                       this.textinput.$element.toggle( value === 'other' );
+                       // It is impossible to submit a form with hidden fields 
failing validation, e.g. one that
+                       // is required. However, validity is not checked for 
disabled fields, as these are not
+                       // submitted with the form. So we should also disable 
fields when hiding them.
+                       this.textinput.setDisabled( value !== 'other' || 
this.isDisabled() );
+               }
        };
 
 }( jQuery, mediaWiki ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/373391
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I87603936d23165926d2ef4c64f3a61dca2062caf
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: wmf/1.30.0-wmf.15
Gerrit-Owner: Jforrester <jforres...@wikimedia.org>
Gerrit-Reviewer: Bartosz DziewoƄski <matma....@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to