angular / components

Component infrastructure and Material Design components for Angular
https://material.angular.io
MIT License
24.37k stars 6.75k forks source link

mat-toolbar does not display correctly on Safari, iOS simulator and Android emulator #9403

Open sinedied opened 6 years ago

sinedied commented 6 years ago

Bug, feature request, or proposal:

What is the expected behavior?

mat-toolbar display correctly on all (recent) desktop and mobile browsers.

What is the current behavior?

mat-toolbar does not display correctly on Safari, iOS simulator and Android emulator. Works fine on Chrome and real Android devices (using Chrome webview).

capture d ecran 2018-01-15 a 16 16 50

Safari shows the issue here, but the behavior is the same on android/ios simulator webview.

What are the steps to reproduce?

  1. clone this repo: https://github.com/ngx-rocket/starter-kit/tree/pwa/material
  2. git checkout pwa/material
  3. npm install
  4. npm start and load the website on safari

I tried to reproduce a simpler case on StackBlitz but could not find a productible minimal setup. I'm also investigating if it's somehow related to the inclusion of @angular/flex-layout

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

Not really usable as it is :)

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

@angular/cdk: 5.0.4
@angular/cli: 1.5.5
@angular/flex-layout: 2.0.0-beta.10-4905443
@angular/material: 5.0.4
@angular/service-worker: 1.0.0-beta.16
@angular-devkit/build-optimizer: 0.0.38
@angular-devkit/core: 0.0.25
@angular-devkit/schematics: 0.0.48
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.8.5
@schematics/angular: 0.1.13
typescript: 2.4.2
webpack: 3.8.1

tested with safari 11.02, nexus 6/android 7 android emulator and ios 11.2 simulator.

Note that the provided repo use an older angular-material rc.2 version, but the issue is the same with the latest current version shown here I took the screenshot with.

Is there anything else we should know?

devversion commented 6 years ago

The toolbar doesn't show up, because the toolbar is being placed using position: fixed inside of the mat-sidenav-container, which uses z-index: 1 and position: relative.

This seems to be a Safari Bug: https://bugs.webkit.org/show_bug.cgi?id=160953

cc. @mmalerba

sinedied commented 6 years ago

@DevVersion the bug also occurs on Android emulator webview, it's not limited to safari.

devversion commented 6 years ago

Might happen there as well. I was just able to confirm it on Safari, and was able to associate it with the mentioned Webkit bug. The bug report mentions some related chrome issues as well.

sinedied commented 6 years ago

Since the issue has been categorized as "minor", do you have any suggestion for a workaround?

kernmic commented 6 years ago

same issue with: "@angular/animations": "^5.2.0", "@angular/common": "^5.2.0", "@angular/compiler": "^5.2.0", "@angular/core": "^5.2.0", "@angular/forms": "^5.2.0", "@angular/http": "^5.2.0", "@angular/platform-browser": "^5.2.0", "@angular/platform-browser-dynamic": "^5.2.0", "@angular/router": "^5.2.0", "@ngx-translate/core": "^9.0.1", "@angular/cdk": "^5.0.0", "@angular/material": "^5.0.0", "@angular/flex-layout": "2.0.0-beta.12",

browser: Google Chrome Version 55.0.2883.87 (64-bit) os: Arch Linux

eleven11-git commented 6 years ago

Hello, is there a clean solution for Safari?

JosepRoo commented 6 years ago

Hi everyone, does anyone have already found an alternativo solution?

ajaybhalerao12 commented 6 years ago

Hi, i am also facing similar issue where the mat tool bar is not fixed on the iOS safari browser. Did anyone got any solution to fix it.

kochuraa commented 5 years ago

Hi, I found a temporary fix for my project, but I'm not sure that this is correct...

1) Move <app-header> to the top of the root <div> of the shell.component.html

Example:

<div fxFlex>
  <app-header></app-header>
  <mat-sidenav-container fxFill>
    <mat-sidenav></mat-sidenav>
    <mat-sidenav-content>
      <router-outlet></router-outlet>
    </mat-sidenav-content>
  </mat-sidenav-container>
</div>

2) Add the following style to the shell.component.scss

.mat-drawer-container {
  position: unset;
}
adamdabbracci commented 5 years ago

@AndrewKochura - that worked for me!

b2k commented 5 years ago

@AndrewKochura Thanks for your workaround! I'm using ngxRocket's shell component and had to also add a media breakpoint to hide the top menu when on small screens.

added to shell.component.scss:

@media ($mat-xsmall) { .mat-sidenav, .mat-drawer-content, :host ::ng-deep .mat-drawer-backdrop { top: 56px; } }

mrmokwa commented 4 years ago

Same problem for my app. IOS 12.4.2 Angular Material: 8.2.3

Bwizrd commented 3 years ago

Is this issue still open? I am having this issue with safari on Android. The above workaround did not work form me because the toolbar did not stay at the top when scrolling...

An update on what to do about this issue would be great.

chris-brickhouse commented 3 years ago

@AndrewKochura - this workaround worked for me. thanks!

zarend commented 1 year ago

Thank you for reporting. I believe we may have fixed this issue in v15. I was wondering if we could check with you if this issue requires further action. Does upgrading to v15 resolve the issue for you?

zarend commented 1 year ago

Thank you for reporting this issue. Unfortunately we are not able to take action if we cannot reproduce it. This might have already been fixed. If the issue persists, please provide reproduction steps or file a new issue report.

-Zach