File tree Expand file tree Collapse file tree 3 files changed +35
-13
lines changed
src/material-experimental/mdc-form-field Expand file tree Collapse file tree 3 files changed +35
-13
lines changed Original file line number Diff line number Diff line change 57
57
.mat-mdc-form-field.mat-warn {
58
58
@include _color-styles (error);
59
59
}
60
+
61
+ // This fixes an issue where the notch appears to be thicker than the rest of the outline when
62
+ // zoomed in on Chrome. The border inconsistency seems to be some kind of rendering artifact
63
+ // that arises from a combination of the fact that the notch contains text, while the leading
64
+ // and trailing outline do not, combined with the fact that the border is semi-transparent.
65
+ // Experimentally, I discovered that adding a transparent left border fixes the inconsistency.
66
+ // Note: class name is repeated to achieve sufficient specificity over the various MDC states.
67
+ // (hover, focus, etc.)
68
+ // TODO(mmalerba): port this fix into MDC
69
+ .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field {
70
+ .mdc-notched-outline__notch {
71
+ border-left : 1px solid transparent ;
72
+
73
+ [dir = ' rtl' ] & {
74
+ border-left : none ;
75
+ border-right : 1px solid transparent ;
76
+ }
77
+ }
78
+ }
60
79
}
61
80
}
62
81
}
Original file line number Diff line number Diff line change @@ -62,8 +62,11 @@ export class MatFormFieldNotchedOutline implements AfterViewInit {
62
62
_getNotchWidth ( ) {
63
63
if ( this . open ) {
64
64
const NOTCH_ELEMENT_PADDING = 8 ;
65
+ const NOTCH_ELEMENT_BORDER = 1 ;
65
66
return this . labelWidth > 0
66
- ? `calc(${ this . labelWidth } px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + ${ NOTCH_ELEMENT_PADDING } px)`
67
+ ? `calc(${ this . labelWidth } px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + ${
68
+ NOTCH_ELEMENT_PADDING + NOTCH_ELEMENT_BORDER
69
+ } px)`
67
70
: '0px' ;
68
71
}
69
72
Original file line number Diff line number Diff line change 122
122
box-sizing : border-box ;
123
123
}
124
124
125
- // This fixes an issue where the notch appears to be thicker than the rest of the outline when
126
- // zoomed in on Chrome. The border inconsistency seems to be some kind of rendering artifact that
127
- // arises from a combination of the fact that the notch contains text, while the leading and
128
- // trailing outline do not, combined with the fact that the border is semi-transparent.
129
- // Experimentally, I discovered that adding a transparent left border fixes the inconsistency.
130
- // In addition some negative left margin is added to compensate for the transparent border and
131
- // fully fix the issue.
132
- // TODO(mmalerba): port this fix into MDC
133
- .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field {
134
- .mdc-notched-outline__notch {
135
- border-left : 1px solid transparent ;
136
- margin-left : - 1px ;
125
+ // In the form-field theme, we add a 1px left margin to the notch to fix a rendering bug in Chrome.
126
+ // Here we apply negative margin to offset the effect on the layout and a clip-path to ensure the
127
+ // left border is completely hidden. (Though the border is transparent, it still creates a triangle
128
+ // shaped artifact where it meets the top and bottom borders.)
129
+ .mat-mdc-form-field .mdc-notched-outline__notch {
130
+ margin- left: -1 px ;
131
+ clip-path : inset ( -100 vh -100 vw -100 vh 1 px );
132
+
133
+ [ dir = ' rtl ' ] & {
134
+ margin-left : 0 ;
135
+ margin-right : - 1px ;
136
+ clip-path : inset ( -100 vh 1px -100 vh -100 vh ) ;
137
137
}
138
138
}
139
139
You can’t perform that action at this time.
0 commit comments