Skip to content
This repository has been archived by the owner on Oct 8, 2021. It is now read-only.

Commit

Permalink
Rangeslider: Allow enabling after disabling
Browse files Browse the repository at this point in the history
Fixes gh-7547
Closes gh-7621

(cherry picked from commit fc0acb5)
  • Loading branch information
cgack authored and arschmitz committed Aug 26, 2014
1 parent 2cc4285 commit a3b0f79
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 0 deletions.
10 changes: 10 additions & 0 deletions js/widgets/forms/rangeslider.js
Expand Up @@ -144,6 +144,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 @@ -250,6 +255,11 @@ define( [ "jquery",
this._inputLast.slider( "option", "highlight", value );
},

_setDisabled: function( 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 @@ -58,6 +58,10 @@
<input type="range" name="rangeslider-last" id="rangeslider-startstop-last" value="100" 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
35 changes: 35 additions & 0 deletions tests/unit/rangeslider/rangeslider_core.js
Expand Up @@ -129,5 +129,40 @@

], 50)
});
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 a3b0f79

Please sign in to comment.