From 32befad143194eaec0577e29499e0914a95567a4 Mon Sep 17 00:00:00 2001 From: Max Lynch Date: Fri, 24 Apr 2015 11:03:01 -0500 Subject: [PATCH] Added property class feature to IonicComponent --- src/components/app/test/barkpark/main.js | 40 ++++++++++++++++++- .../app/test/barkpark/pages/login.html | 11 ++--- src/components/button/button.js | 6 ++- src/components/button/test/basic/main.html | 11 +++++ src/config/component.js | 17 +++++++- src/ionic.scss | 1 + 6 files changed, 76 insertions(+), 10 deletions(-) diff --git a/src/components/app/test/barkpark/main.js b/src/components/app/test/barkpark/main.js index 665bcdace4..70cd41ea17 100644 --- a/src/components/app/test/barkpark/main.js +++ b/src/components/app/test/barkpark/main.js @@ -4,14 +4,14 @@ import {FormBuilder, Validators, FormDirectives, CongrolGroup} from 'angular2/fo import {Log} from 'ionic2/util' -import {NavViewport, View} from 'ionic2/ionic2' +import {NavViewport, View, Button} from 'ionic2/ionic2' @Component({ selector: 'login-page' }) @Template({ url: 'pages/login.html', - directives: [View, FormDirectives] + directives: [View, FormDirectives, Button] }) export class LoginPage { constructor( @Parent() viewport: NavViewport ) { //, fb: FormBuilder ) { @@ -29,6 +29,42 @@ export class LoginPage { doLogin(event) { Log.log('Doing login') event.preventDefault(); + console.log(this.loginForm.value); + //this.viewport.push(SecondPage) + } + doSignup(event) { + this.viewport.push(SignupPage) + } +} + +@Component({ + selector: 'signup-page' +}) +@Template({ + url: 'pages/signup.html', + directives: [View, FormDirectives] +}) +export class SignupPage { + constructor( @Parent() viewport: NavViewport ) { //, fb: FormBuilder ) { + this.viewport = viewport + Log.log('SIGNUP PAGE') + + var fb = new FormBuilder() + + this.loginForm = fb.group({ + name: ['', Validators.required], + email: ['', Validators.required], + password: ['', Validators.required], + }); + } + + doLogin(event) { + this.viewport.pop() + } + doSignup(event) { + Log.log('Doing login') + event.preventDefault(); + console.log(this.loginForm.value); //this.viewport.push(SecondPage) } } diff --git a/src/components/app/test/barkpark/pages/login.html b/src/components/app/test/barkpark/pages/login.html index 1c628f925f..0e7124bda2 100644 --- a/src/components/app/test/barkpark/pages/login.html +++ b/src/components/app/test/barkpark/pages/login.html @@ -1,13 +1,14 @@ - +
- + - - - {{loginForm.controls.email.value}} + +
+ Or +
diff --git a/src/components/button/button.js b/src/components/button/button.js index a83071ee35..574ccd806d 100644 --- a/src/components/button/button.js +++ b/src/components/button/button.js @@ -2,7 +2,7 @@ import {NgElement, Decorator} from 'angular2/angular2' import {IonicComponent} from 'ionic2/config/component' @Decorator({ - selector: '.button', + selector: 'ion-button, [ion-button],.button', }) export class Button { constructor( @@ -12,4 +12,6 @@ export class Button { this.config = Button.config.invoke(this) } } -new IonicComponent(Button, {}) +new IonicComponent(Button, { + propClasses: ['primary', 'secondary', 'danger', 'light', 'stable', 'dark'] +}) diff --git a/src/components/button/test/basic/main.html b/src/components/button/test/basic/main.html index 231058e1a9..ea03bcaae2 100644 --- a/src/components/button/test/basic/main.html +++ b/src/components/button/test/basic/main.html @@ -47,3 +47,14 @@ + +

With Properties

+ +
+ + + + + + +
diff --git a/src/config/component.js b/src/config/component.js index 88572083a2..09afa26917 100644 --- a/src/config/component.js +++ b/src/config/component.js @@ -11,12 +11,15 @@ let platformName = platform.getName() export class IonicComponent { constructor(ComponentClass, { bind, - delegates + delegates, + propClasses }) { // TODO give errors if not providing valid delegates ComponentClass.config = this this.componentCssName = util.pascalCaseToDashCase(ComponentClass.name) + console.log(propClasses); + this.bind = bind || (bind = {}) for (let attrName in bind) { let binding = bind[attrName] @@ -27,7 +30,9 @@ export class IonicComponent { } } + this.delegates = delegates || (delegates = {}) + this.propClasses = propClasses || (propClasses = []); // for (let delegateName of delegates) { // let delegate = delegates[delegateName] // } @@ -42,6 +47,13 @@ export class IonicComponent { instance.domElement.classList.add(this.componentCssName) instance.domElement.classList.add(`${this.componentCssName}-${platformName}`) + // For each property class, check if it exists on the element and add the + // corresponding classname for it + for (let propClass of this.propClasses) { + if(instance.domElement.hasAttribute(propClass)) { + instance.domElement.classList.add(`${this.componentCssName}-${propClass}`) + } + } /****** TODO: HACK!!! MAKE MORE GOOD!!! ********/ /* @@ -60,6 +72,9 @@ export class IonicComponent { /****** TODO: HACK!!! MAKE MORE GOOD!!! ********/ + // Check and apply and property classes (properties that should be + // converted to class names). For example,