mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
chore: use computed radius size for checkbox ripple during 2018 material spec update transition (#13038)
This commit is contained in:
@@ -438,7 +438,7 @@ $_mat-checkbox-mark-stroke-size: 2 / 15 * $mat-checkbox-size !default;
|
|||||||
left: calc(50% - #{$_mat-checkbox-ripple-radius});
|
left: calc(50% - #{$_mat-checkbox-ripple-radius});
|
||||||
top: calc(50% - #{$_mat-checkbox-ripple-radius});
|
top: calc(50% - #{$_mat-checkbox-ripple-radius});
|
||||||
height: $_mat-checkbox-ripple-radius * 2;
|
height: $_mat-checkbox-ripple-radius * 2;
|
||||||
width: $_mat_checkbox-ripple-radius * 2;
|
width: $_mat-checkbox-ripple-radius * 2;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
import {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';
|
import {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';
|
||||||
import {coerceBooleanProperty} from '@angular/cdk/coercion';
|
import {coerceBooleanProperty} from '@angular/cdk/coercion';
|
||||||
import {
|
import {
|
||||||
|
AfterViewChecked,
|
||||||
AfterViewInit,
|
AfterViewInit,
|
||||||
Attribute,
|
Attribute,
|
||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
@@ -50,6 +51,11 @@ import {MAT_CHECKBOX_CLICK_ACTION, MatCheckboxClickAction} from './checkbox-conf
|
|||||||
// Increasing integer for generating unique ids for checkbox components.
|
// Increasing integer for generating unique ids for checkbox components.
|
||||||
let nextUniqueId = 0;
|
let nextUniqueId = 0;
|
||||||
|
|
||||||
|
// TODO(josephperrott): Revert to constants for ripple radius once 2018 Checkbox updates have
|
||||||
|
// landed.
|
||||||
|
// The radius for the checkbox's ripple, in pixels.
|
||||||
|
let calculatedRippleRadius = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provider Expression that allows mat-checkbox to register as a ControlValueAccessor.
|
* Provider Expression that allows mat-checkbox to register as a ControlValueAccessor.
|
||||||
* This allows it to support [(ngModel)].
|
* This allows it to support [(ngModel)].
|
||||||
@@ -127,7 +133,8 @@ export const _MatCheckboxMixinBase:
|
|||||||
changeDetection: ChangeDetectionStrategy.OnPush
|
changeDetection: ChangeDetectionStrategy.OnPush
|
||||||
})
|
})
|
||||||
export class MatCheckbox extends _MatCheckboxMixinBase implements ControlValueAccessor,
|
export class MatCheckbox extends _MatCheckboxMixinBase implements ControlValueAccessor,
|
||||||
AfterViewInit, OnDestroy, CanColor, CanDisable, HasTabIndex, CanDisableRipple {
|
AfterViewChecked, AfterViewInit, OnDestroy, CanColor, CanDisable, HasTabIndex,
|
||||||
|
CanDisableRipple {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attached to the aria-label attribute of the host element. In most cases, arial-labelledby will
|
* Attached to the aria-label attribute of the host element. In most cases, arial-labelledby will
|
||||||
@@ -210,6 +217,10 @@ export class MatCheckbox extends _MatCheckboxMixinBase implements ControlValueAc
|
|||||||
.subscribe(focusOrigin => this._onInputFocusChange(focusOrigin));
|
.subscribe(focusOrigin => this._onInputFocusChange(focusOrigin));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ngAfterViewChecked() {
|
||||||
|
this._calculateRippleRadius();
|
||||||
|
}
|
||||||
|
|
||||||
ngOnDestroy() {
|
ngOnDestroy() {
|
||||||
this._focusMonitor.stopMonitoring(this._inputElement);
|
this._focusMonitor.stopMonitoring(this._inputElement);
|
||||||
}
|
}
|
||||||
@@ -457,4 +468,19 @@ export class MatCheckbox extends _MatCheckboxMixinBase implements ControlValueAc
|
|||||||
|
|
||||||
return `mat-checkbox-anim-${animSuffix}`;
|
return `mat-checkbox-anim-${animSuffix}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(josephperrott): Revert to constants for ripple radius once 2018 Checkbox updates have
|
||||||
|
// landed.
|
||||||
|
/**
|
||||||
|
* Calculate the radius for the ripple based on the ripple elements width. Only calculated once
|
||||||
|
* for the application.
|
||||||
|
*/
|
||||||
|
private _calculateRippleRadius() {
|
||||||
|
if (!calculatedRippleRadius) {
|
||||||
|
const rippleWidth =
|
||||||
|
this._elementRef.nativeElement.querySelector('.mat-checkbox-ripple').clientWidth || 0;
|
||||||
|
calculatedRippleRadius = rippleWidth / 2;
|
||||||
|
}
|
||||||
|
this.ripple.radius = calculatedRippleRadius;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user