Henning Snater has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/173281

Change subject: Disable remove button when entered site link is invalid
......................................................................

Disable remove button when entered site link is invalid

Change-Id: Icac8cd44e48be065c98dbd8e1700457368b9be1b
---
M lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js
M lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbar.js
2 files changed, 31 insertions(+), 20 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/81/173281/1

diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js
index 97a62c5..49d592b 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js
@@ -427,22 +427,32 @@
                        }
 
                        sitelinklistviewListview.items().each( function() {
-                               var $sitelinkview = $( this );
+                               var $sitelinkview = $( this ),
+                                       sitelinkview = $sitelinkview.data( 
'sitelinkview' );
 
-                               if( $sitelinkview.data( 'removetoolbar' ) ) {
-                                       return;
+                               if( !$sitelinkview.data( 'removetoolbar' ) ) {
+                                       $sitelinkview
+                                       .removetoolbar( {
+                                               $container: $( '<span/>' 
).appendTo( $sitelinkview )
+                                       } )
+                                       .on( 
'removetoolbarremove.removetoolbar', function( event ) {
+                                               if( event.target !== 
$sitelinkview.get( 0 ) ) {
+                                                       return;
+                                               }
+                                               
sitelinklistview.$listview.data( 'listview' ).removeItem( $sitelinkview );
+                                       } );
                                }
 
-                               $sitelinkview
-                               .removetoolbar( {
-                                       $container: $( '<span/>' ).appendTo( 
$sitelinkview )
-                               } )
-                               .on( 'removetoolbarremove.removetoolbar', 
function( event ) {
-                                       if( event.target !== $sitelinkview.get( 
0 ) ) {
-                                               return;
-                                       }
-                                       sitelinklistview.$listview.data( 
'listview' ).removeItem( $sitelinkview );
-                               } );
+                               var removetoolbar = $sitelinkview.data( 
'removetoolbar' ),
+                                       isDisabled = removetoolbar.option( 
'disabled' ),
+                                       isValid = sitelinkview.isValid(),
+                                       isEmpty = sitelinkview.isEmpty();
+
+                               if( ( !isValid || isEmpty ) && !isDisabled ) {
+                                       removetoolbar.disable();
+                               } else if( isValid && !isEmpty && isDisabled ) {
+                                       removetoolbar.enable();
+                               }
                        } );
                },
                sitelinkgroupviewafterstopediting: function( event, 
toolbarcontroller ) {
diff --git a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbar.js 
b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbar.js
index 8ddf7c1..88b2e14 100644
--- a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbar.js
+++ b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbar.js
@@ -144,7 +144,8 @@
         */
        _setOption: function( key, value ) {
                if( key === 'disabled' ) {
-                       this._setState( value ? 'disable' : 'enable' );
+                       this._setState( value );
+                       this.options[key] = value;
                        return this;
                }
 
@@ -158,14 +159,14 @@
        },
 
        /**
-        * @param {string} state
+        * @param {boolean} disable
         */
-       _setState: function( state ) {
-               this.getContainer()[
-                       state === 'disable' ? 'addClass' : 'removeClass'
-               ]( 'ui-state-disabled' );
+       _setState: function( disable ) {
+               this.getContainer()
+                       .toggleClass( this.widgetFullName + '-disabled 
ui-state-disabled', !!disable )
+                       .attr( 'aria-disabled', disable );
                $.each( this._getItems(), function() {
-                       this[state]();
+                       this[disable ? 'disable' : 'enable']();
                } );
        },
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icac8cd44e48be065c98dbd8e1700457368b9be1b
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to