Skip to content
This repository was archived by the owner on Sep 5, 2024. It is now read-only.

Commit 86d876b

Browse files
jelbournThomasBurleson
authored andcommitted
fix(general): common disabled behavior for switch/slider/select.
Fixes #3797. Closes #4654.
1 parent dfa4dc6 commit 86d876b

File tree

7 files changed

+169
-119
lines changed

7 files changed

+169
-119
lines changed

src/components/select/demoBasicUsage/index.html

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,23 @@
22
<div>
33
<h1 class="md-title">Enter an address</h1>
44
<div layout="row">
5+
56
<md-input-container>
67
<label>Street Name</label>
7-
<input type="text"/>
8+
<input>
89
</md-input-container>
10+
911
<md-input-container>
1012
<label>City</label>
11-
<input type="text"/>
13+
<input>
1214
</md-input-container>
15+
1316
<md-input-container>
1417
<label>State</label>
1518
<md-select ng-model="ctrl.userState">
16-
<md-option ng-repeat="state in ctrl.states" value="{{state.abbrev}}">{{state.abbrev}}</md-option>
19+
<md-option ng-repeat="state in ctrl.states" value="{{state.abbrev}}">
20+
{{state.abbrev}}
21+
</md-option>
1722
</md-select>
1823
</md-input-container>
1924
</div>

src/components/select/select.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ angular.module('material.components.select', [
7070
* </md-input-container>
7171
* </hljs>
7272
*/
73-
function SelectDirective($mdSelect, $mdUtil, $mdTheming, $mdAria, $rootElement, $compile, $parse) {
73+
function SelectDirective($mdSelect, $mdUtil, $mdTheming, $mdAria, $compile, $parse) {
7474
return {
7575
restrict: 'E',
7676
require: ['^?mdInputContainer', 'mdSelect', 'ngModel', '?^form'],
@@ -281,7 +281,7 @@ function SelectDirective($mdSelect, $mdUtil, $mdTheming, $mdAria, $rootElement,
281281
});
282282

283283
attr.$observe('disabled', function(disabled) {
284-
if (typeof disabled == "string") {
284+
if (angular.isString(disabled)) {
285285
disabled = true;
286286
}
287287
// Prevent click event being registered twice

src/components/slider/slider.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,13 @@ function SliderDirective($$rAF, $window, $mdAria, $mdUtil, $mdConstant, $mdThemi
9898
$viewChangeListeners: []
9999
};
100100

101-
var isDisabledParsed = attr.ngDisabled && $parse(attr.ngDisabled);
102-
var isDisabledGetter = isDisabledParsed ?
103-
function() { return isDisabledParsed(scope.$parent); } :
104-
angular.noop;
101+
var isDisabledGetter = angular.noop;
102+
if (attr.disabled != null) {
103+
isDisabledGetter = function() { return true; };
104+
} else if (attr.ngDisabled) {
105+
isDisabledGetter = angular.bind(null, $parse(attr.ngDisabled), scope.$parent);
106+
}
107+
105108
var thumb = angular.element(element[0].querySelector('.md-thumb'));
106109
var thumbText = angular.element(element[0].querySelector('.md-thumb-text'));
107110
var thumbContainer = thumb.parent();
@@ -139,7 +142,7 @@ function SliderDirective($$rAF, $window, $mdAria, $mdUtil, $mdConstant, $mdThemi
139142
ngModelRender();
140143
redrawTicks();
141144
}
142-
setTimeout(updateAll);
145+
setTimeout(updateAll, 0);
143146

144147
var debouncedUpdateAll = $$rAF.throttle(updateAll);
145148
angular.element($window).on('resize', debouncedUpdateAll);
@@ -306,7 +309,7 @@ function SliderDirective($$rAF, $window, $mdAria, $mdUtil, $mdConstant, $mdThemi
306309
function onPressDown(ev) {
307310
if (isDisabledGetter()) return;
308311

309-
element.addClass('active');
312+
element.addClass('md-active');
310313
element[0].focus();
311314
refreshSliderDimensions();
312315

@@ -320,7 +323,7 @@ function SliderDirective($$rAF, $window, $mdAria, $mdUtil, $mdConstant, $mdThemi
320323
function onPressUp(ev) {
321324
if (isDisabledGetter()) return;
322325

323-
element.removeClass('dragging active');
326+
element.removeClass('md-dragging md-active');
324327

325328
var exactVal = percentToValue( positionToPercent( ev.pointer.x ));
326329
var closestVal = minMaxValidator( stepValidator(exactVal) );
@@ -334,7 +337,7 @@ function SliderDirective($$rAF, $window, $mdAria, $mdUtil, $mdConstant, $mdThemi
334337
isDragging = true;
335338
ev.stopPropagation();
336339

337-
element.addClass('dragging');
340+
element.addClass('md-dragging');
338341
setSliderFromEvent(ev);
339342
}
340343
function onDrag(ev) {

src/components/slider/slider.scss

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ md-slider {
214214
}
215215

216216
/* Don't animate left/right while panning */
217-
&.dragging {
217+
&.md-dragging {
218218
.md-thumb-container,
219219
.md-track-fill {
220220
transition: none;
@@ -236,7 +236,7 @@ md-slider {
236236
}
237237

238238
&:focus,
239-
&.active {
239+
&.md-active {
240240
.md-focus-thumb {
241241
display: block;
242242
}
@@ -259,7 +259,7 @@ md-slider {
259259

260260
&:not([disabled]) {
261261
&:focus,
262-
&.active {
262+
&.md-active {
263263
.md-sign,
264264
.md-sign:after {
265265
opacity: 1;

0 commit comments

Comments
 (0)