refactor(core): use flags in Renderer2.setStyle instead of booleans (#15045)

BREAKING CHANGE: (since v4 rc.1)
- `Renderer2.setStyle` no longer takes booleans but rather a
  bit mask of flags.
This commit is contained in:
Tobias Bosch
2017-03-13 09:45:04 -07:00
committed by Chuck Jazdzewski
parent fa1920a02b
commit ff71eff157
12 changed files with 56 additions and 50 deletions

View File

@ -7,4 +7,4 @@
*/
// Public API for render
export {RenderComponentType, Renderer, Renderer2, RendererFactory2, RendererType2, RootRenderer} from './render/api';
export {RenderComponentType, Renderer, Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2, RootRenderer} from './render/api';

View File

@ -129,6 +129,14 @@ export abstract class RendererFactory2 {
abstract createRenderer(hostElement: any, type: RendererType2): Renderer2;
}
/**
* @experimental
*/
export enum RendererStyleFlags2 {
Important = 1 << 0,
DashCase = 1 << 1
}
/**
* @experimental
*/
@ -169,9 +177,8 @@ export abstract class Renderer2 {
abstract removeAttribute(el: any, name: string, namespace?: string): void;
abstract addClass(el: any, name: string): void;
abstract removeClass(el: any, name: string): void;
abstract setStyle(
el: any, style: string, value: any, hasVendorPrefix: boolean, hasImportant: boolean): void;
abstract removeStyle(el: any, style: string, hasVendorPrefix: boolean): void;
abstract setStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2): void;
abstract removeStyle(el: any, style: string, flags?: RendererStyleFlags2): void;
abstract setProperty(el: any, name: string, value: any): void;
abstract setValue(node: any, value: string): void;
abstract listen(

View File

@ -299,9 +299,9 @@ function setElementStyle(
}
const renderer = view.renderer;
if (renderValue != null) {
renderer.setStyle(renderNode, name, renderValue, false, false);
renderer.setStyle(renderNode, name, renderValue);
} else {
renderer.removeStyle(renderNode, name, false);
renderer.removeStyle(renderNode, name);
}
}

View File

@ -386,9 +386,9 @@ class RendererAdapter implements RendererV1 {
setElementStyle(renderElement: HTMLElement, styleName: string, styleValue: string): void {
if (styleValue != null) {
this.delegate.setStyle(renderElement, styleName, styleValue, false, false);
this.delegate.setStyle(renderElement, styleName, styleValue);
} else {
this.delegate.removeStyle(renderElement, styleName, false);
this.delegate.removeStyle(renderElement, styleName);
}
}

View File

@ -9,7 +9,7 @@
import {isDevMode} from '../application_ref';
import {DebugElement, DebugNode, EventListener, getDebugNode, indexDebugNode, removeDebugNodeFromIndex} from '../debug/debug_node';
import {Injector} from '../di';
import {Renderer2, RendererFactory2, RendererType2} from '../render/api';
import {Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2} from '../render/api';
import {Sanitizer, SecurityContext} from '../security';
import {isViewDebugError, viewDestroyedError, viewWrappedDebugError} from './errors';
@ -539,21 +539,20 @@ class DebugRenderer2 implements Renderer2 {
this.delegate.removeClass(el, name);
}
setStyle(el: any, style: string, value: any, hasVendorPrefix: boolean, hasImportant: boolean):
void {
setStyle(el: any, style: string, value: any, flags: RendererStyleFlags2): void {
const debugEl = getDebugNode(el);
if (debugEl && debugEl instanceof DebugElement) {
debugEl.styles[style] = value;
}
this.delegate.setStyle(el, style, value, hasVendorPrefix, hasImportant);
this.delegate.setStyle(el, style, value, flags);
}
removeStyle(el: any, style: string, hasVendorPrefix: boolean): void {
removeStyle(el: any, style: string, flags: RendererStyleFlags2): void {
const debugEl = getDebugNode(el);
if (debugEl && debugEl instanceof DebugElement) {
debugEl.styles[style] = null;
}
this.delegate.removeStyle(el, style, hasVendorPrefix);
this.delegate.removeStyle(el, style, flags);
}
setProperty(el: any, name: string, value: any): void {