Skip to content

Commit

Permalink
fix(autocomplete,select): inconsistent disabled option coloring (#6640)
Browse files Browse the repository at this point in the history
* Fixes a selected and disabled option in the autocomplete not showing as disabled until it is hovered.
* Fixes the disabled and selected options in `md-select` using the theme color, instead of the disabled color.
* Fixes the disabled state of an option not being passed down to its checkbox.

Fixes #6638.
  • Loading branch information
crisbeto authored and jelbourn committed Sep 1, 2017
1 parent 8243b16 commit 454781d
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 15 deletions.
17 changes: 9 additions & 8 deletions src/lib/autocomplete/_autocomplete-theme.scss
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,15 @@
background: mat-color($background, card);
color: mat-color($foreground, text);

.mat-option {
// Selected options in autocompletes should not be gray, but we
// only want to override the background for selected options if
// they are *not* in hover or focus state. This change has to be
// made here because base option styles are shared between the
// autocomplete and the select.
&.mat-selected:not(.mat-active):not(:hover) {
background: mat-color($background, card);
// Selected options in autocompletes should not be gray, but we
// only want to override the background for selected options if
// they are *not* in hover or focus state. This change has to be
// made here because base option styles are shared between the
// autocomplete and the select.
.mat-option.mat-selected:not(.mat-active):not(:hover) {
background: mat-color($background, card);

&:not(.mat-option-disabled) {
color: mat-color($foreground, text);
}
}
Expand Down
11 changes: 6 additions & 5 deletions src/lib/core/option/_option-theme.scss
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,25 @@
.mat-option {
color: mat-color($foreground, text);

&:hover:not(.mat-option-disabled), &:focus:not(.mat-option-disabled) {
&:hover:not(.mat-option-disabled),
&:focus:not(.mat-option-disabled) {
background: mat-color($background, hover);
}

.mat-primary &.mat-selected {
.mat-primary &.mat-selected:not(.mat-option-disabled) {
color: mat-color($primary);
}

.mat-accent &.mat-selected {
.mat-accent &.mat-selected:not(.mat-option-disabled) {
color: mat-color($accent);
}

.mat-warn &.mat-selected {
.mat-warn &.mat-selected:not(.mat-option-disabled) {
color: mat-color($warn);
}

// In multiple mode there is a checkbox to show that the option is selected.
&.mat-selected:not(.mat-option-multiple) {
&.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) {
background: mat-color($background, hover);
}

Expand Down
4 changes: 2 additions & 2 deletions src/lib/core/option/option.html
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<span [ngSwitch]="_isCompatibilityMode" *ngIf="multiple">
<mat-pseudo-checkbox class="mat-option-pseudo-checkbox" *ngSwitchCase="true"
[state]="selected ? 'checked' : ''"></mat-pseudo-checkbox>
[state]="selected ? 'checked' : ''" [disabled]="disabled"></mat-pseudo-checkbox>
<md-pseudo-checkbox class="mat-option-pseudo-checkbox" *ngSwitchDefault
[state]="selected ? 'checked' : ''"></md-pseudo-checkbox>
[state]="selected ? 'checked' : ''" [disabled]="disabled"></md-pseudo-checkbox>
</span>

<ng-content></ng-content>
Expand Down

0 comments on commit 454781d

Please sign in to comment.