File tree Expand file tree Collapse file tree 5 files changed +48
-2
lines changed
material-experimental/mdc-form-field Expand file tree Collapse file tree 5 files changed +48
-2
lines changed Original file line number Diff line number Diff line change 5757 .mat-mdc-form-field.mat-warn {
5858 @include _color-styles (error);
5959 }
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 {
70+ & .mat-mdc-form-field .mdc-notched-outline__notch {
71+ border-left : 1px solid transparent ;
72+ }
73+ }
74+
75+ [dir = ' rtl' ] {
76+ .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field {
77+ & .mat-mdc-form-field .mdc-notched-outline__notch {
78+ border-left : none ;
79+ border-right : 1px solid transparent ;
80+ }
81+ }
82+ }
6083 }
6184 }
6285}
Original file line number Diff line number Diff line change @@ -62,8 +62,11 @@ export class MatFormFieldNotchedOutline implements AfterViewInit {
6262 _getNotchWidth ( ) {
6363 if ( this . open ) {
6464 const NOTCH_ELEMENT_PADDING = 8 ;
65+ const NOTCH_ELEMENT_BORDER = 1 ;
6566 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)`
6770 : '0px' ;
6871 }
6972
Original file line number Diff line number Diff line change 122122 box-sizing : border-box ;
123123}
124124
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+
125140// In order to make it possible for developers to disable animations for form-fields,
126141// we only activate the animation styles if animations are not explicitly disabled.
127142.mat-mdc-form-field :not (.mat-form-field-no-animations ) {
Original file line number Diff line number Diff line change 2323 @forward ' ./core/style/layout-common' as private- * show private-fill ;
2424@forward ' ./core/style/private' show private-theme-elevation , private-animation-noop ;
2525@forward ' ./core/style/vendor-prefixes' as private- * show private-user-select ,
26- private-position-sticky , private-color-adjust ;
26+ private-position-sticky , private-color-adjust , private-clip-path ;
2727@forward ' ./core/theming/palette' as private- * show $private-dark-primary-text ,
2828 $private-dark-disabled-text ;
2929@forward ' ./core/style/variables' as private- * show $private-swift-ease-in-duration ,
Original file line number Diff line number Diff line change 3838 -webkit-background-clip : $value ;
3939 background-clip : $value ;
4040}
41+
42+ @mixin clip-path ($value ) {
43+ -webkit-clip-path : $value ;
44+ clip-path : $value ;
45+ }
4146// stylelint-enable
You can’t perform that action at this time.
0 commit comments