From 8b7a3affba288ba5943d9c99c68f8a9037c820b2 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Wed, 29 Nov 2017 20:19:32 +0100 Subject: [PATCH] fix: blurry ripples for slide-toggle, radio, checkbox in MS edge. (#8514) Fixes blurry ripples in the slide-toggle, radio and checkbox in Microsoft Edge. The ripples have been blurry because the `border-radius` in an absolute position seems to cause render problems for Edge. Since the ripples are circular by default, the `border-radius` can be removed and the ripple radius just needs to be set to the value that has been set through CSS before this change. This fixes the blurry ripples in MS Edge and might also improve rendering-stability of the ripples. Fixes #8392 --- src/lib/checkbox/checkbox.html | 5 ++++- src/lib/checkbox/checkbox.scss | 11 +++++------ src/lib/checkbox/checkbox.ts | 6 +++++- src/lib/radio/radio.html | 5 ++++- src/lib/radio/radio.scss | 11 +++++------ src/lib/radio/radio.ts | 6 +++++- src/lib/slide-toggle/slide-toggle.html | 6 ++++-- src/lib/slide-toggle/slide-toggle.scss | 1 - src/lib/slide-toggle/slide-toggle.ts | 6 +++++- 9 files changed, 37 insertions(+), 20 deletions(-) diff --git a/src/lib/checkbox/checkbox.html b/src/lib/checkbox/checkbox.html index bd0d794a4ab..be2ddb84df6 100644 --- a/src/lib/checkbox/checkbox.html +++ b/src/lib/checkbox/checkbox.html @@ -19,7 +19,10 @@
+ [matRippleRadius]="_rippleConfig.radius" + [matRippleSpeedFactor]="_rippleConfig.speedFactor" + [matRippleCentered]="_rippleConfig.centered"> +
+ [matRippleCentered]="_rippleConfig.centered" + [matRippleRadius]="_rippleConfig.radius" + [matRippleSpeedFactor]="_rippleConfig.speedFactor"> + + [matRippleDisabled]="disableRipple || disabled" + [matRippleCentered]="_rippleConfig.centered" + [matRippleRadius]="_rippleConfig.radius" + [matRippleSpeedFactor]="_rippleConfig.speedFactor"> diff --git a/src/lib/slide-toggle/slide-toggle.scss b/src/lib/slide-toggle/slide-toggle.scss index d46434e1b09..a43fd0ea542 100644 --- a/src/lib/slide-toggle/slide-toggle.scss +++ b/src/lib/slide-toggle/slide-toggle.scss @@ -161,7 +161,6 @@ $mat-slide-toggle-bar-track-width: $mat-slide-toggle-bar-width - $mat-slide-togg left: $mat-slide-toggle-thumb-size / 2 - $mat-slide-toggle-ripple-radius; height: $mat-slide-toggle-ripple-radius * 2; width: $mat-slide-toggle-ripple-radius * 2; - border-radius: 50%; z-index: 1; pointer-events: none; } diff --git a/src/lib/slide-toggle/slide-toggle.ts b/src/lib/slide-toggle/slide-toggle.ts index 3d525f5265e..a661df7177a 100644 --- a/src/lib/slide-toggle/slide-toggle.ts +++ b/src/lib/slide-toggle/slide-toggle.ts @@ -37,6 +37,7 @@ import { mixinDisabled, mixinDisableRipple, mixinTabIndex, + RippleConfig, RippleRef, } from '@angular/material/core'; @@ -138,6 +139,9 @@ export class MatSlideToggle extends _MatSlideToggleMixinBase implements OnDestro /** Reference to the ripple directive on the thumb container. */ @ViewChild(MatRipple) _ripple: MatRipple; + /** Ripple configuration for the mouse ripples and focus indicators. */ + _rippleConfig: RippleConfig = {centered: true, radius: 23, speedFactor: 1.5}; + constructor(elementRef: ElementRef, private _platform: Platform, private _focusMonitor: FocusMonitor, @@ -230,7 +234,7 @@ export class MatSlideToggle extends _MatSlideToggleMixinBase implements OnDestro private _onInputFocusChange(focusOrigin: FocusOrigin) { if (!this._focusRipple && focusOrigin === 'keyboard') { // For keyboard focus show a persistent ripple as focus indicator. - this._focusRipple = this._ripple.launch(0, 0, {persistent: true, centered: true}); + this._focusRipple = this._ripple.launch(0, 0, {persistent: true, ...this._rippleConfig}); } else if (!focusOrigin) { this.onTouched();