Some DOM abstractions

This commit is contained in:
Max Lynch
2015-05-04 13:14:55 -05:00
parent a5702517fc
commit 615cd7eaeb
8 changed files with 59 additions and 39 deletions

View File

@ -2,7 +2,7 @@
// export * from 'ionic/components/action-menu/action-menu' // export * from 'ionic/components/action-menu/action-menu'
// export * from 'ionic/components/alert/alert' // export * from 'ionic/components/alert/alert'
export * from 'ionic/components/aside/aside' export * from 'ionic/components/aside/aside'
// export * from 'ionic/components/button/button' export * from 'ionic/components/button/button'
// export * from 'ionic/components/checkbox/checkbox' // export * from 'ionic/components/checkbox/checkbox'
export * from 'ionic/components/content/content' export * from 'ionic/components/content/content'
// export * from 'ionic/components/icon/icon' // export * from 'ionic/components/icon/icon'

View File

@ -1,5 +1,5 @@
import {Component, View, bootstrap} from 'angular2/angular2' import {Component, View, bootstrap} from 'angular2/angular2'
import {Button} from 'ionic/ionic' import {Button} from 'ionic/components/button/button'
@Component({ selector: '[ion-app]' }) @Component({ selector: '[ion-app]' })
@View({ @View({

View File

@ -1,4 +1,5 @@
import * as util from 'ionic/util' import * as util from 'ionic/util'
import {dom} from 'ionic/util'
import {Platform} from 'ionic/platform/platform' import {Platform} from 'ionic/platform/platform'
let platformMode = Platform.getMode(); let platformMode = Platform.getMode();
@ -41,14 +42,14 @@ export class IonicComponent {
invoke(instance) { invoke(instance) {
const config = this const config = this
instance.domElement.classList.add(this.componentCssName)
instance.domElement.classList.add(`${this.componentCssName}-${platformMode}`) dom.addClasses(instance.domElement, this.componentCssName, `${this.componentCssName}-${platformMode}`);
// For each property class, check if it exists on the element and add the // For each property class, check if it exists on the element and add the
// corresponding classname for it // corresponding classname for it
for (let propClass of this.propClasses) { for (let propClass of this.propClasses) {
if(instance.domElement.hasAttribute(propClass)) { if(dom.hasAttribute(instance.domElement, propClass)) {
instance.domElement.classList.add(`${this.componentCssName}-${propClass}`) dom.addClass(instance.domElement, `${this.componentCssName}-${propClass}`);
} }
} }

View File

@ -3,20 +3,21 @@ import {NgElement, ViewContainer} from 'angular2/angular2'
//import {DomRenderedElement} from 'ionic/util/render/dom'; //import {DomRenderedElement} from 'ionic/util/render/dom';
/*
Object.defineProperties(NgElement.prototype, { Object.defineProperties(NgElement.prototype, {
/*
renderElement: { renderElement: {
get: function() { get: function() {
return new DomRenderedElement(this._view.render.delegate.boundElements[this._boundElementIndex]); return new DomRenderedElement(this._view.render.delegate.boundElements[this._boundElementIndex]);
} }
}, },
*/
domElement: { domElement: {
get: function() { get: function() {
console.log('GETTING DOM ELEMENT');
return this._view.render.delegate.boundElements[this._boundElementIndex]; return this._view.render.delegate.boundElements[this._boundElementIndex];
} }
} }
}); });
*/
/* /*
Object.defineProperties(ViewContainer.prototype, { Object.defineProperties(ViewContainer.prototype, {

View File

@ -98,3 +98,17 @@ export function windowLoad() {
} }
}); });
} }
export function hasAttribute(el: Element, attributeName) {
return el.hasAttribute(attributeName);
}
export function addClass(el: Element, className) {
el.classList.add(className);
}
export function addClasses(el: Element, ...classNames) {
for(let c of classNames) {
el.classList.add(c);
}
}

View File

@ -1,25 +0,0 @@
/*
import {RenderedElement} from 'ionic/util/render/element';
export class DomRenderedElement extends RenderedElement {
constructor(domElement: Element) {
super(domElement)
}
addClass(className) {
this.element.classList.add(classList);
}
removeClass(className) {
this.element.classList.remove(classList);
}
addClasses(classes) {
for(let c of classes) {
this.element.classList.add(c);
}
}
removeClasses(classes) {
for(let c of classes) {
this.element.classList.remove(c);
}
}
}
*/

View File

@ -0,0 +1,27 @@
/**
* TODO: Wait until the new ElementRef stuff lands in Angular2.
import {RenderedElement} from 'ionic/util/render/element';
export class DomRenderedElement extends RenderedElement {
constructor(domElement: Element) {
super(domElement)
}
addClass(className) {
this.element.classList.add(classList);
}
removeClass(className) {
this.element.classList.remove(classList);
}
addClasses(...classNames) {
for(let c of classNames) {
this.element.classList.add(c);
}
}
removeClasses(...classNames) {
for(let c of classes) {
this.element.classList.remove(c);
}
}
}
*/

View File

@ -1,14 +1,16 @@
/* /**
class RenderedElement { * TODO: Wait until the new ElementRef stuff lands in Angular2
export class RenderedElement {
constructor(element) { constructor(element) {
this.element = element; this.element = element;
} }
_notImplemented(fnName) { _notImplemented(fnName) {
console.error("RenderedElement." + fnName + "addClass is not implemented. Use a concrete class like DomRenderedElement instead."); console.error("RenderedElement." + fnName + "addClass is not implemented. Use a concrete class like DomRenderedElement instead.");
} }
addClass(className) { this._notImplemented('addClass'); } addClass(className) { this._notImplemented('addClass'); }
removeClass(className) { this._notImplemented('removeClass'); } removeClass(className) { this._notImplemented('removeClass'); }
addClasses(className) { this._notImplemented('addClasses'); } addClasses(...classNames) { this._notImplemented('addClasses'); }
removeClasses(className) { this._notImplemented('removeClasses'); } removeClasses(...classNames) { this._notImplemented('removeClasses'); }
} }
*/
*/