Skip to content

Commit

Permalink
Rangeslider: allow enabling after disabling
Browse files Browse the repository at this point in the history
  • Loading branch information
cgack committed Aug 14, 2014
1 parent 766a03d commit 70fc966
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 0 deletions.
12 changes: 12 additions & 0 deletions js/widgets/forms/rangeslider.js
Expand Up @@ -143,6 +143,11 @@ define( [ "jquery",
if ( options.highlight !== undefined ) {
this._setHighlight( options.highlight );
}

if ( options.disabled !== undefined ) {
this._setDisabled( options.disabled );
}

this._super( options );
this.refresh();
},
Expand Down Expand Up @@ -249,6 +254,13 @@ define( [ "jquery",
this._inputLast.slider( "option", "highlight", value );
},

_setDisabled: function( value ) {
value = !!value;

this._inputFirst.prop( "disabled", value );
this._inputLast.prop( "disabled", value );
},

_destroy: function() {
this._label.prependTo( this.element );
this.element.removeClass( "ui-rangeslider ui-mini" );
Expand Down
4 changes: 4 additions & 0 deletions tests/unit/rangeslider/index.html
Expand Up @@ -52,6 +52,10 @@
<input type="range" name="rangeslider-last" id="rangeslider-extreams-last" value="55" min="0" max="100" data-nstest-theme="b" data-nstest-track-theme="a" />
</div>
</div>
<div data-nstest-role="rangeslider" id="disable-rangeslider">
<input name="range-disabled-first" id="range-disabled-first" min="0" max="100" value="0" type="range">
<input name="range-disabled-last" id="range-disabled-last" min="0" max="100" value="100" type="range">
</div>
</form>
</div>

Expand Down
38 changes: 38 additions & 0 deletions tests/unit/rangeslider/rangeslider_core.js
Expand Up @@ -95,4 +95,42 @@
);
});

test( " Rangeslider is enabled/disabled correctly ", function() {
var rangeslider = $( "#disable-rangeslider" ),
inputFirst = $( "#range-disabled-first" ),
inputLast = $( "#range-disabled-last" ),
sliderFirst = rangeslider.find( ".ui-slider-track" ).first(),
sliderLast = rangeslider.find( ".ui-slider-track" ).first();

rangeslider.rangeslider( { disabled: true } );

ok( !!inputFirst.attr( "disabled" ), "first input is disabled" );
ok( inputFirst.hasClass( "mobile-slider-disabled"),
"first input gets mobile-slider-disabled" );
ok( !!sliderFirst.attr( "aria-disabled" ), "first slider is aria-disabled" );
ok( sliderFirst.hasClass( "ui-state-disabled"), "first slider has ui-state-disabled" );
ok( !!inputLast.attr( "disabled" ), "last input is disabled" );
ok( inputLast.hasClass( "mobile-slider-disabled"),
"last input gets mobile-slider-disabled" );
ok( !!sliderLast.attr( "aria-disabled" ), "last slider is aria-disabled" );
ok( sliderLast.hasClass( "ui-state-disabled"), "last slider has ui-state-disabled" );

rangeslider.rangeslider( {disabled: false } );

deepEqual( !!inputFirst.attr( "disabled" ), false, "first input is enabled" );
ok( !inputFirst.hasClass( "mobile-slider-disabled"),
"first input gets mobile-slider-disabled" );
deepEqual( sliderFirst.attr( "aria-disabled" ), "false",
"first slider aria-disabled is false" );
ok( !sliderFirst.hasClass( "ui-state-disabled"), "first slider ui-state-disabled removed" );
deepEqual( !!inputLast.attr( "disabled" ), false, "last input is enabled" );
ok( !inputLast.hasClass( "mobile-slider-disabled"),
"last input gets mobile-slider-disabled" );
deepEqual( sliderLast.attr( "aria-disabled" ), "false",
"last slider aria-disabled is false" );
ok( !sliderLast.hasClass( "ui-state-disabled"), "last slider ui-state-disabled removed" );


});

})( jQuery );

0 comments on commit 70fc966

Please sign in to comment.