components icon indicating copy to clipboard operation
components copied to clipboard

Multiple mat-icon or mat-icon-button as prefix or suffix are displayed in columns

Open TFleury opened this issue 6 years ago • 7 comments
trafficstars

Bug:

More than one mat-icon or mat-icon-button as prefix or suffix in a mat-form-field are displayed in columns when appearance is other than 'legacy'.

What is the expected behavior?

They should display in row like in 'legacy' appearance.

What is the current behavior?

They are displayed in column.

What are the steps to reproduce?

https://stackblitz.com/edit/material-multiple-presuffix

What is the use-case or motivation for changing an existing behavior?

Behavior is not consistent accros mat-form-field appearances.

Which versions of Angular, Material, OS, TypeScript, browsers are affected?

@angular/material 7.1.0

All browsers.

Is there anything else we should know?

I see 2 solutions : Solution 1 : Remove this two rules :

:not(.mat-form-field-appearance-legacy).mat-form-field .mat-form-field-prefix .mat-icon,
:not(.mat-form-field-appearance-legacy).mat-form-field .mat-form-field-suffix .mat-icon {
    display: block;
}
:not(.mat-form-field-appearance-legacy).mat-form-field .mat-form-field-prefix .mat-icon-button,
:not(.mat-form-field-appearance-legacy).mat-form-field .mat-form-field-suffix .mat-icon-button {
    display: block;
}

Solution 2 : Use flexbox for prefix and suffix :

.mat-form-field-prefix,
.mat-form-field-suffix {
  display: inline-flex;
  align-items: center;
}

Potentially related issues : #11650, #13094, #13322 & #13592

TFleury avatar Nov 28 '18 12:11 TFleury

Fixed it for me on datepicker outlined input field. .mat-form-field-flex { align-items: center; }

aennafae avatar Nov 30 '18 12:11 aennafae

@aennafae thanks, it's the missing part for solution 2 to work properly.

TFleury avatar Dec 03 '18 10:12 TFleury

Still an issue with Angular 10.0.0: https://stackblitz.com/edit/angular-mat-form-field-multiple-suffix

BenoitMaisonny avatar Oct 14 '20 09:10 BenoitMaisonny

as a workaround for this, use a single matSuffix div and arrange the items inside however you like: https://stackblitz.com/edit/material-multiple-presuffix-u7kax5?file=app%2Fform-field-prefix-suffix-example.html

mmalerba avatar Nov 06 '20 23:11 mmalerba

Hi! in newest versions of material angular use this:

anywhere css

::ng-deep .mat-form-field-prefix,
.mat-form-field-suffix {
  display: inline-flex;
  align-items: center;
}

or add in style.css:

.mat-form-field-prefix,
.mat-form-field-suffix {
  display: inline-flex;
  align-items: center;
}

am-castro avatar Nov 28 '22 20:11 am-castro

.mat-form-field-prefix,
.mat-form-field-suffix {
  display: inline-flex;
  align-items: center;
}

for material 15 =>

.mat-mdc-form-field-icon-prefix, .mat-mdc-form-field-icon-suffix { display: inline-flex; align-items: center; }

GaetanRdn avatar Apr 28 '23 09:04 GaetanRdn

mat-icon {
    display: inline;
}

neckroot avatar May 24 '24 08:05 neckroot