File tree 5 files changed +48
-2
lines changed
material-experimental/mdc-form-field
5 files changed +48
-2
lines changed Original file line number Diff line number Diff line change 58
58
.mat-mdc-form-field.mat-warn {
59
59
@include _color-styles (error);
60
60
}
61
+
62
+ // This fixes an issue where the notch appears to be thicker than the rest of the outline when
63
+ // zoomed in on Chrome. The border inconsistency seems to be some kind of rendering artifact
64
+ // that arises from a combination of the fact that the notch contains text, while the leading
65
+ // and trailing outline do not, combined with the fact that the border is semi-transparent.
66
+ // Experimentally, I discovered that adding a transparent left border fixes the inconsistency.
67
+ // Note: class name is repeated to achieve sufficient specificity over the various MDC states.
68
+ // (hover, focus, etc.)
69
+ // TODO(mmalerba): port this fix into MDC
70
+ .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field {
71
+ & .mat-mdc-form-field .mdc-notched-outline__notch {
72
+ border-left : 1px solid transparent ;
73
+ }
74
+ }
75
+
76
+ [dir = ' rtl' ] {
77
+ .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field {
78
+ & .mat-mdc-form-field .mdc-notched-outline__notch {
79
+ border-left : none ;
80
+ border-right : 1px solid transparent ;
81
+ }
82
+ }
83
+ }
61
84
}
62
85
}
63
86
}
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
+ // 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 : -1px ;
131
+ @include mat .private-clip-path (inset (-9em -9em -9em 1px ));
132
+
133
+ [dir = ' rtl' ] & {
134
+ margin-left : 0 ;
135
+ margin-right : -1px ;
136
+ @include mat .private-clip-path (inset (-9em 1px -9em -9em ));
137
+ }
138
+ }
139
+
125
140
// In order to make it possible for developers to disable animations for form-fields,
126
141
// we only activate the animation styles if animations are not explicitly disabled.
127
142
.mat-mdc-form-field :not (.mat-form-field-no-animations ) {
Original file line number Diff line number Diff line change 21
21
@forward ' ./core/style/layout-common' as private- * show private-fill ;
22
22
@forward ' ./core/style/private' show private-theme-elevation , private-animation-noop ;
23
23
@forward ' ./core/style/vendor-prefixes' as private- * show private-user-select ,
24
- private-position-sticky , private-color-adjust ;
24
+ private-position-sticky , private-color-adjust , private-clip-path ;
25
25
@forward ' ./core/theming/palette' as private- * show $private-dark-primary-text ,
26
26
$private-dark-disabled-text ;
27
27
@forward ' ./core/style/variables' as private- * show $private-swift-ease-in-duration ,
Original file line number Diff line number Diff line change 38
38
-webkit-background-clip : $value ;
39
39
background-clip : $value ;
40
40
}
41
+
42
+ @mixin clip-path ($value ) {
43
+ -webkit-clip-path : $value ;
44
+ clip-path : $value ;
45
+ }
41
46
// stylelint-enable
You can’t perform that action at this time.
0 commit comments