From 6f3368ef16bf0d47c49ddf56177943d58343509f Mon Sep 17 00:00:00 2001 From: Tobias Bosch Date: Thu, 28 May 2015 14:56:40 -0700 Subject: [PATCH] feat(dom): add `setData()` method. --- modules/angular2/src/dom/browser_adapter.dart | 12 ++++++++++++ modules/angular2/src/dom/browser_adapter.ts | 9 ++++++++- modules/angular2/src/dom/dom_adapter.ts | 3 +++ modules/angular2/src/dom/html_adapter.dart | 10 ++++++++++ modules/angular2/src/dom/parse5_adapter.cjs | 12 +++++++++++- modules/angular2/src/facade/js_interop.dart | 15 --------------- modules/angular2/src/facade/js_interop.ts | 13 ------------- 7 files changed, 44 insertions(+), 30 deletions(-) delete mode 100644 modules/angular2/src/facade/js_interop.dart delete mode 100644 modules/angular2/src/facade/js_interop.ts diff --git a/modules/angular2/src/dom/browser_adapter.dart b/modules/angular2/src/dom/browser_adapter.dart index 1850184c05..fc9ea93785 100644 --- a/modules/angular2/src/dom/browser_adapter.dart +++ b/modules/angular2/src/dom/browser_adapter.dart @@ -5,6 +5,7 @@ import 'dart:js' show JsObject; import 'dom_adapter.dart' show setRootDomAdapter; import 'generic_browser_adapter.dart' show GenericBrowserDomAdapter; import '../facade/browser.dart'; +import 'dart:js' as js; // WARNING: Do not expose outside this class. Parsing HTML using this // sanitizer is a security risk. @@ -100,6 +101,7 @@ class BrowserDomAdapter extends GenericBrowserDomAdapter { setRootDomAdapter(new BrowserDomAdapter()); } + // TODO(tbosch): move this into a separate environment class once we have it logError(error) { window.console.error(error); } @@ -329,4 +331,14 @@ class BrowserDomAdapter extends GenericBrowserDomAdapter { String getUserAgent() { return window.navigator.userAgent; } + void setData(Element element, String name, String value) { + element.dataset[name] = value; + } + String getData(Element element, String name) { + return element.dataset[name]; + } + // TODO(tbosch): move this into a separate environment class once we have it + setGlobalVar(String name, value) { + js.context[name] = value; + } } diff --git a/modules/angular2/src/dom/browser_adapter.ts b/modules/angular2/src/dom/browser_adapter.ts index 5254d51926..87a5abc81e 100644 --- a/modules/angular2/src/dom/browser_adapter.ts +++ b/modules/angular2/src/dom/browser_adapter.ts @@ -1,5 +1,5 @@ import {List, MapWrapper, ListWrapper} from 'angular2/src/facade/collection'; -import {isBlank, isPresent} from 'angular2/src/facade/lang'; +import {isBlank, isPresent, global} from 'angular2/src/facade/lang'; import {setRootDomAdapter} from './dom_adapter'; import {GenericBrowserDomAdapter} from './generic_browser_adapter'; @@ -51,6 +51,7 @@ var _chromeNumKeyPadMap = { export class BrowserDomAdapter extends GenericBrowserDomAdapter { static makeCurrent() { setRootDomAdapter(new BrowserDomAdapter()); } + // TODO(tbosch): move this into a separate environment class once we have it logError(error) { window.console.error(error); } get attrToPropMap(): any { return _attrToPropMap; } @@ -254,6 +255,12 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter { getLocation() { return window.location; } getBaseHref() { return relativePath(document.baseURI); } getUserAgent(): string { return window.navigator.userAgent; } + setData(element, name: string, value: string) { element.dataset[name] = value; } + getData(element, name: string): string { return element.dataset[name]; } + // TODO(tbosch): move this into a separate environment class once we have it + setGlobalVar(name: string, value: any) { + global[name] = value; + } } // based on urlUtils.js in AngularJS 1 diff --git a/modules/angular2/src/dom/dom_adapter.ts b/modules/angular2/src/dom/dom_adapter.ts index d0eec48bc0..e3795039f9 100644 --- a/modules/angular2/src/dom/dom_adapter.ts +++ b/modules/angular2/src/dom/dom_adapter.ts @@ -115,4 +115,7 @@ export class DomAdapter { getLocation() { throw _abstract(); } getBaseHref() { throw _abstract(); } getUserAgent(): string { throw _abstract(); } + setData(element, name: string, value: string) { throw _abstract(); } + getData(element, name: string): string { throw _abstract(); } + setGlobalVar(name: string, value: any) { throw _abstract(); } } diff --git a/modules/angular2/src/dom/html_adapter.dart b/modules/angular2/src/dom/html_adapter.dart index b41ddebb0a..5e350952e7 100644 --- a/modules/angular2/src/dom/html_adapter.dart +++ b/modules/angular2/src/dom/html_adapter.dart @@ -306,4 +306,14 @@ class Html5LibDomAdapter implements DomAdapter { String getUserAgent() { throw 'not implemented'; } + void setData(Element element, String name, String value) { + this.setAttribute(element, 'data-${name}', value); + } + String getData(Element element, String name) { + return this.getAttribute(element, 'data-${name}'); + } + // TODO(tbosch): move this into a separate environment class once we have it + setGlobalVar(String name, value) { + // noop on the server + } } diff --git a/modules/angular2/src/dom/parse5_adapter.cjs b/modules/angular2/src/dom/parse5_adapter.cjs index 252202329c..800110b164 100644 --- a/modules/angular2/src/dom/parse5_adapter.cjs +++ b/modules/angular2/src/dom/parse5_adapter.cjs @@ -9,7 +9,7 @@ var url = require('url'); import {List, MapWrapper, ListWrapper, StringMapWrapper} from 'angular2/src/facade/collection'; import {DomAdapter, setRootDomAdapter} from './dom_adapter'; -import {BaseException, isPresent, isBlank} from 'angular2/src/facade/lang'; +import {BaseException, isPresent, isBlank, global} from 'angular2/src/facade/lang'; import {SelectorMatcher, CssSelector} from 'angular2/src/render/dom/compiler/selector'; var _attrToPropMap = { @@ -543,6 +543,16 @@ export class Parse5DomAdapter extends DomAdapter { getUserAgent() { return "Fake user agent"; } + getData(el, name:string):string { + return this.getAttribute(el, 'data-'+name); + } + setData(el, name:string, value:string) { + this.setAttribute(el, 'data-'+name, value); + } + // TODO(tbosch): move this into a separate environment class once we have it + setGlobalVar(name: string, value: any) { + global[name] = value; + } } //TODO: build a proper list, this one is all the keys of a HTMLInputElement diff --git a/modules/angular2/src/facade/js_interop.dart b/modules/angular2/src/facade/js_interop.dart deleted file mode 100644 index dd645b534d..0000000000 --- a/modules/angular2/src/facade/js_interop.dart +++ /dev/null @@ -1,15 +0,0 @@ -library angular2.src.facade.js_interop; - -import 'dart:js' as js; - -setGlobalVar(String name, value) { - js.context[name] = value; -} - -getGlobalVar(String name) { - return js.context[name]; -} - -invokeJsFunction(js.JsFunction fn, self, args) { - return fn.apply(args, thisArg: self); -} diff --git a/modules/angular2/src/facade/js_interop.ts b/modules/angular2/src/facade/js_interop.ts deleted file mode 100644 index 38281485bc..0000000000 --- a/modules/angular2/src/facade/js_interop.ts +++ /dev/null @@ -1,13 +0,0 @@ -import {global} from './lang'; - -export function setGlobalVar(name: string, value: any) { - global[name] = value; -} - -export function getGlobalVar(name: string) { - return global[name]; -} - -export function invokeJsFunction(fn: Function, self: any, args: List) { - return fn.apply(self, args); -}