Merge branch 'alpha37'

This commit is contained in:
Adam Bradley
2015-09-11 21:04:02 -05:00
53 changed files with 101 additions and 327 deletions

View File

@ -8,7 +8,7 @@
<ion-list> <ion-list>
<button ion-item *ng-for="#p of pages" (^click)="openPage(aside, p)"> <button ion-item *ng-for="#p of pages" (click)="openPage(aside, p)">
{{p.title}} {{p.title}}
</button> </button>

View File

@ -7,7 +7,7 @@
</ion-toolbar> </ion-toolbar>
<ion-content class="padding"> <ion-content class="padding">
<form (^submit)="doLogin($event)" [control-group]="loginForm"> <form (submit)="doLogin($event)" [control-group]="loginForm">
<ion-input> <ion-input>
<input control="email" type="email" placeholder="Your email"> <input control="email" type="email" placeholder="Your email">
</ion-input> </ion-input>

View File

@ -1,5 +1,5 @@
<ion-view nav-title="Signup" style="padding: 20px"> <ion-view nav-title="Signup" style="padding: 20px">
<form (^submit)="doSignup($event)" [control-group]="signupForm"> <form (submit)="doSignup($event)" [control-group]="signupForm">
<ion-input> <ion-input>
<input control="name" type="text" placeholder="Your name"> <input control="name" type="text" placeholder="Your name">
</ion-input> </ion-input>

View File

@ -1,4 +1,4 @@
<div> <div>
<h1>BARK PARK</h1> <h1>BARK PARK</h1>
<button (^click)="doLogin()">Log in</button> <button (click)="doLogin()">Log in</button>
</div> </div>

View File

@ -2,7 +2,7 @@
<ion-content class="padding"> <ion-content class="padding">
<h2>Posts</h2> <h2>Posts</h2>
<ion-list> <ion-list>
<ion-item *for="#post of posts" (^click)="selectPost(post)"> <ion-item *for="#post of posts" (click)="selectPost(post)">
{{post.title}} {{post.title}}
</ion-item> </ion-item>
</ion-list> </ion-list>

View File

@ -3,7 +3,7 @@
<ion-content class="padding"> <ion-content class="padding">
<ion-list inset> <ion-list inset>
<ion-item *ng-for="#story of stories" (^click)="openStory(story)">{{story.title}}</ion-item> <ion-item *ng-for="#story of stories" (click)="openStory(story)">{{story.title}}</ion-item>
</ion-list> </ion-list>
</ion-content> </ion-content>

View File

@ -10,7 +10,7 @@ import {App, ActionMenu, IonicApp, IonicView, Register} from 'ionic/ionic';
'</button>' + '</button>' +
'<ion-nav-items secondary>' + '<ion-nav-items secondary>' +
'<button><ion-icon md="ion-android-search" ios="ion-ios-search-strong"></i></button>' + '<button><ion-icon md="ion-android-search" ios="ion-ios-search-strong"></i></button>' +
'<button (^click)="showMoreMenu()"><i class="icon ion-android-more-vertical"></i></button>' + '<button (click)="showMoreMenu()"><i class="icon ion-android-more-vertical"></i></button>' +
'</ion-nav-items>' + '</ion-nav-items>' +
'</ion-navbar>' + '</ion-navbar>' +
'<ion-content>' + '<ion-content>' +

View File

@ -2,7 +2,7 @@
<ion-toolbar><ion-title>Plugins</ion-title></ion-toolbar> <ion-toolbar><ion-title>Plugins</ion-title></ion-toolbar>
<ion-content> <ion-content>
<ion-list> <ion-list>
<ion-item *ng-for="#p of plugins" (^click)="openPage(aside, p)"> <ion-item *ng-for="#p of plugins" (click)="openPage(aside, p)">
<span>{{p.title}}</span> <span>{{p.title}}</span>
</ion-item> </ion-item>
</ion-list> </ion-list>

View File

@ -2,7 +2,7 @@
<ion-toolbar><ion-title>Ionic 2.0</ion-title></ion-toolbar> <ion-toolbar><ion-title>Ionic 2.0</ion-title></ion-toolbar>
<ion-content> <ion-content>
<ion-list> <ion-list>
<ion-item *ng-for="#c of components" (^click)="openPage(aside, c)"> <ion-item *ng-for="#c of components" (click)="openPage(aside, c)">
<span>{{c.title}}</span> <span>{{c.title}}</span>
</ion-item> </ion-item>
</ion-list> </ion-list>

View File

@ -5,7 +5,7 @@ import {SinkPage} from '../sink-page';
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Action Menu</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Action Menu</ion-title></ion-navbar>
<ion-content class="padding"> <ion-content class="padding">
<h2>Action Menu</h2> <h2>Action Menu</h2>

View File

@ -11,7 +11,7 @@ let scale = 0.6;
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Animation</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Animation</ion-title></ion-navbar>
<style> <style>
.ball-container { .ball-container {

View File

@ -5,7 +5,7 @@ import {SinkPage} from '../sink-page';
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Aside</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Aside</ion-title></ion-navbar>
<ion-content class="padding"> <ion-content class="padding">
<h2>Aside</h2> <h2>Aside</h2>

View File

@ -5,7 +5,7 @@ import {SinkPage} from '../sink-page';
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Buttons</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Buttons</ion-title></ion-navbar>
<ion-content class="padding"> <ion-content class="padding">
@ -17,7 +17,7 @@ import {SinkPage} from '../sink-page';
Buttons come in lots of different colors: Buttons come in lots of different colors:
</p> </p>
<p> <p>
<div (^click)="onButtonClick($event)"> <div (click)="onButtonClick($event)">
<button>Primary</button> <button>Primary</button>
<button secondary>Secondary</button> <button secondary>Secondary</button>
<button danger>Danger</button> <button danger>Danger</button>
@ -29,7 +29,7 @@ import {SinkPage} from '../sink-page';
various shapes: various shapes:
</p> </p>
<p> <p>
<div (^click)="onButtonClick($event)"> <div (click)="onButtonClick($event)">
<button small>small</button> <button small>small</button>
<button dark>Medium</button> <button dark>Medium</button>
<button secondary large>LARGE</button> <button secondary large>LARGE</button>
@ -39,7 +39,7 @@ import {SinkPage} from '../sink-page';
and with different embellishments: and with different embellishments:
</p> </p>
<p> <p>
<div (^click)="onButtonClick($event)"> <div (click)="onButtonClick($event)">
<button outline>Outline</button> <button outline>Outline</button>
<button dark clear>Clear</button> <button dark clear>Clear</button>
<button danger block>Block</button> <button danger block>Block</button>

View File

@ -5,7 +5,7 @@ import {SinkPage} from '../sink-page';
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Cards</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Cards</ion-title></ion-navbar>
<ion-content class="padding"> <ion-content class="padding">
<h2>Cards</h2> <h2>Cards</h2>

View File

@ -7,7 +7,7 @@ import {SinkPage} from '../sink-page';
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Form</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Form</ion-title></ion-navbar>
<ion-content class="padding"> <ion-content class="padding">
<h2>Forms</h2> <h2>Forms</h2>
@ -19,7 +19,7 @@ import {SinkPage} from '../sink-page';
Ionic comes with a variety of useful from controls, like Ionic comes with a variety of useful from controls, like
text inputs, text areas, toggle switches, and sliders. text inputs, text areas, toggle switches, and sliders.
</p> </p>
<form (^submit)="doSubmit($event)" [ng-form-model]="form"> <form (submit)="doSubmit($event)" [ng-form-model]="form">
<ion-input> <ion-input>
<input ng-control="email" type="email" placeholder="Your email"> <input ng-control="email" type="email" placeholder="Your email">
</ion-input> </ion-input>

View File

@ -5,7 +5,7 @@ import {SinkPage} from '../sink-page';
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Icons</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Icons</ion-title></ion-navbar>
<ion-content class="padding"> <ion-content class="padding">
<h2>Icons</h2> <h2>Icons</h2>

View File

@ -5,7 +5,7 @@ import {SinkPage} from '../sink-page';
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>List Groups</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>List Groups</ion-title></ion-navbar>
<ion-content> <ion-content>
<ion-list inset> <ion-list inset>

View File

@ -5,7 +5,7 @@ import {SinkPage} from '../sink-page';
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Lists</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Lists</ion-title></ion-navbar>
<ion-content class="padding"> <ion-content class="padding">
<h2>Lists</h2> <h2>Lists</h2>

View File

@ -5,7 +5,7 @@ import {SinkPage} from '../sink-page';
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Modal</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Modal</ion-title></ion-navbar>
<ion-content class="padding"> <ion-content class="padding">
<h2>Modal</h2> <h2>Modal</h2>

View File

@ -5,7 +5,7 @@ import {SinkPage} from '../sink-page';
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Pull to Refresh</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Pull to Refresh</ion-title></ion-navbar>
<ion-content> <ion-content>
<ion-refresher (starting)="doStarting()" (refresh)="doRefresh($event, refresher)" (pulling)="doPulling($event, amt)"> <ion-refresher (starting)="doStarting()" (refresh)="doRefresh($event, refresher)" (pulling)="doPulling($event, amt)">

View File

@ -12,7 +12,7 @@ import {SinkPage} from '../sink-page';
}) })
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Search Bar</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Search Bar</ion-title></ion-navbar>
<ion-content class="padding"> <ion-content class="padding">
<h2>Search Bar</h2> <h2>Search Bar</h2>
@ -24,7 +24,7 @@ import {SinkPage} from '../sink-page';
or it can also handle and display a list of search results. or it can also handle and display a list of search results.
</p> </p>
<form (^submit)="doSubmit($event)" [ng-form-model]="form"> <form (submit)="doSubmit($event)" [ng-form-model]="form">
<ion-search-bar placeholder="Search" ng-control="searchQuery"></ion-search-bar> <ion-search-bar placeholder="Search" ng-control="searchQuery"></ion-search-bar>
<div> <div>
Query: <b>{{form.controls.searchQuery.value}}</b> Query: <b>{{form.controls.searchQuery.value}}</b>

View File

@ -18,7 +18,7 @@ import {IonicView} from 'ionic/ionic';
the map display between street, hybrid, and satellite. the map display between street, hybrid, and satellite.
</p> </p>
<form (^submit)="doSubmit($event)"> <form (submit)="doSubmit($event)">
<div ng-control-group="form"> <div ng-control-group="form">
<ion-segment [ng-form-control]="mapStyle"> <ion-segment [ng-form-control]="mapStyle">

View File

@ -5,7 +5,7 @@ import {SinkPage} from '../sink-page';
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Slides</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Slides</ion-title></ion-navbar>
<ion-content class="padding"> <ion-content class="padding">
<h2>Slides</h2> <h2>Slides</h2>

View File

@ -18,7 +18,7 @@ function randomTitle() {
<ion-navbar *navbar><ion-title>Table Search</ion-title></ion-navbar> <ion-navbar *navbar><ion-title>Table Search</ion-title></ion-navbar>
<ion-content> <ion-content>
<form (^submit)="doSearch($event)" [control-group]="form"> <form (submit)="doSearch($event)" [control-group]="form">
<ion-search-bar control="searchQuery"></ion-search-bar> <ion-search-bar control="searchQuery"></ion-search-bar>

View File

@ -63,7 +63,7 @@ class UpdatesTabPage {
@IonicView({ @IonicView({
template: ` template: `
<ion-navbar *navbar><ion-nav-items primary><button icon (^click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Tabs</ion-title></ion-navbar> <ion-navbar *navbar><ion-nav-items primary><button icon (click)="toggleMenu()"><i class="icon ion-navicon"></i></button></ion-nav-items><ion-title>Tabs</ion-title></ion-navbar>
<ion-tabs id="tabs"> <ion-tabs id="tabs">
<ion-tab tab-title="Featured" tab-icon="star" [root]="featuredTab"></ion-tab> <ion-tab tab-title="Featured" tab-icon="star" [root]="featuredTab"></ion-tab>

View File

@ -2,7 +2,7 @@
<ion-content> <ion-content>
<div class="card" *ng-for="#post of posts" (^click)="postClicked($event, post)"> <div class="card" *ng-for="#post of posts" (click)="postClicked($event, post)">
<div class="card-content"> <div class="card-content">
{{post.text}} {{post.text}}
</div> </div>

View File

@ -96,7 +96,7 @@ export class SettingsModal {}
@IonicView({ @IonicView({
template: '<ion-view id="heart-modal"><button icon (^click)="close()"><i class="icon ion-close"></i></button><h2>20</h2><p>You\'re pretty awesome</p></ion-view>' template: '<ion-view id="heart-modal"><button icon (click)="close()"><i class="icon ion-close"></i></button><h2>20</h2><p>You\'re pretty awesome</p></ion-view>'
}) })
export class HeartModal {} export class HeartModal {}

View File

@ -4,7 +4,7 @@
<ion-view> <ion-view>
<ion-toolbar id="p1toolbar"><button (^click)="openHeart()" class="toolbar-primary-item"><i class="icon ion-ios-heart"></i></button><ion-title>secret</ion-title><button (^click)="openGear()" class="toolbar-secondary-item"><i class="icon ion-ios-gear"></i></button></ion-toolbar> <ion-toolbar id="p1toolbar"><button (click)="openHeart()" class="toolbar-primary-item"><i class="icon ion-ios-heart"></i></button><ion-title>secret</ion-title><button (click)="openGear()" class="toolbar-secondary-item"><i class="icon ion-ios-gear"></i></button></ion-toolbar>
<ion-content> <ion-content>
<ion-list> <ion-list>

View File

@ -2,13 +2,13 @@
<ion-row> <ion-row>
<ion-col> <ion-col>
<button (^click)="tapTest('button')" block> <button (click)="tapTest('button')" block>
<div><div><p>Button</p></div></div> <div><div><p>Button</p></div></div>
</button> </button>
</ion-col> </ion-col>
<ion-col> <ion-col>
<a button (^click)="tapTest('link')" block> <a button (click)="tapTest('link')" block>
Link Link
</a> </a>
</ion-col> </ion-col>
@ -18,7 +18,7 @@
<ion-row> <ion-row>
<ion-col> <ion-col>
<div button (^click)="tapTest('div')" block> <div button (click)="tapTest('div')" block>
Div w/ (click) Div w/ (click)
</div> </div>
</ion-col> </ion-col>

View File

@ -14,7 +14,7 @@ import {Flickr} from './flickr';
template: `<ion-view id="settings-modal"> template: `<ion-view id="settings-modal">
<ion-toolbar><ion-title>Settings</ion-title></ion-toolbar> <ion-toolbar><ion-title>Settings</ion-title></ion-toolbar>
<ion-content padding> <ion-content padding>
<form (^submit)="doSubmit($event)" [ng-form-model]="settingsForm"> <form (submit)="doSubmit($event)" [ng-form-model]="settingsForm">
<ion-list> <ion-list>
<ion-input ion-item> <ion-input ion-item>
<ion-label>Units</ion-label> <ion-label>Units</ion-label>

View File

@ -2,7 +2,7 @@
<ion-view> <ion-view>
<background-cycler class="bg-fade" [image]="activeBgImage"></background-cycler> <background-cycler class="bg-fade" [image]="activeBgImage"></background-cycler>
<ion-toolbar id="header" class="no-border"><ion-title><span class="city"><i id="city-nav-icon" class="icon ion-navigate"></i> {{currentLocationString}}</span><br><current-time localtz="current.local_tz_short"></current-time></ion-title><button (^click)="showSettings()" class="toolbar-secondary-item"><i class="icon ion-ios-gear"></i></button></ion-toolbar> <ion-toolbar id="header" class="no-border"><ion-title><span class="city"><i id="city-nav-icon" class="icon ion-navigate"></i> {{currentLocationString}}</span><br><current-time localtz="current.local_tz_short"></current-time></ion-title><button (click)="showSettings()" class="toolbar-secondary-item"><i class="icon ion-ios-gear"></i></button></ion-toolbar>
<ion-content> <ion-content>
<div id="main-content"> <div id="main-content">

View File

@ -179,9 +179,6 @@ gulp.task('bundle.ionic', ['transpile'], function() {
prepend.push('window.Element.prototype.animate=undefined;'); prepend.push('window.Element.prototype.animate=undefined;');
} }
// prepend correct system paths
prepend.push('System.config({ "paths": { "ionic/*": "ionic/*", "rx": "rx" } });');
return gulp.src([ return gulp.src([
'dist/src/es5/system/ionic/**/*.js' 'dist/src/es5/system/ionic/**/*.js'
]) ])

View File

@ -59,7 +59,7 @@ import * as util from 'ionic/util';
'<div class="action-menu-container">' + '<div class="action-menu-container">' +
'<div class="action-menu-group action-menu-options">' + '<div class="action-menu-group action-menu-options">' +
'<div class="action-menu-title" *ng-if="titleText">{{titleText}}</div>' + '<div class="action-menu-title" *ng-if="titleText">{{titleText}}</div>' +
'<button (^click)="_buttonClicked(index)" *ng-for="#b of buttons; #index = index" class="action-menu-option">' + '<button (click)="_buttonClicked(index)" *ng-for="#b of buttons; #index = index" class="action-menu-option">' +
'<icon [name]="b.icon" *ng-if="b.icon"></icon> ' + '<icon [name]="b.icon" *ng-if="b.icon"></icon> ' +
'{{b.text}}' + '{{b.text}}' +
'</button>' + '</button>' +

View File

@ -11,22 +11,20 @@ import {IonicApp} from '../app/app';
'asideToggle' 'asideToggle'
], ],
host: { host: {
'(^click)': 'toggle($event)' '(click)': 'toggle($event)'
} }
}) })
export class AsideToggle { export class AsideToggle {
/**
* TODO constructor(private app: IonicApp) {}
* @param {IonicApp} app TODO
*/
constructor(private app: IonicApp) {
}
onInit() { onInit() {
let toggleTarget = this.asideToggle; let toggleTarget = this.asideToggle;
// Get the component with this toggleTarget tag, or use "menu" if none // Get the component with this toggleTarget tag, or use "menu" if none
this.aside = this.app.getComponent(toggleTarget || 'menu'); this.aside = this.app.getComponent(toggleTarget || 'menu');
} }
/** /**
* TODO * TODO
* @param {TODO} event TODO * @param {TODO} event TODO

View File

@ -8,7 +8,7 @@
<ion-list> <ion-list>
<button ion-item *ng-for="#p of pages" (^click)="openPage(aside, p)"> <button ion-item *ng-for="#p of pages" (click)="openPage(aside, p)">
{{p.title}} {{p.title}}
</button> </button>

View File

@ -41,7 +41,7 @@ import {IonicComponent, IonicView} from '../../config/annotations';
'[attr.aria-checked]': 'checked', '[attr.aria-checked]': 'checked',
'[attr.aria-disabled]': 'disabled', '[attr.aria-disabled]': 'disabled',
'[attr.aria-labelledby]': 'labelId', '[attr.aria-labelledby]': 'labelId',
'(^click)': 'click($event)' '(click)': 'click($event)'
} }
}) })
@IonicView({ @IonicView({

View File

@ -4,7 +4,7 @@
<ion-content> <ion-content>
<form (^submit)="doSubmit($event)" [ng-form-model]="fruitsForm"> <form (submit)="doSubmit($event)" [ng-form-model]="fruitsForm">
<ion-list> <ion-list>

View File

@ -13,7 +13,7 @@ import {dom} from 'ionic/util';
* @usage * @usage
* ```html * ```html
* <ion-list> * <ion-list>
* <ion-item *ng-for="#item of items" (^click)="itemTapped($event, item)"> * <ion-item *ng-for="#item of items" (click)="itemTapped($event, item)">
* {{item.title}} * {{item.title}}
* <div class="item-note" item-right> * <div class="item-note" item-right>
* {{item.note}} * {{item.note}}

View File

@ -88,7 +88,7 @@ export class Navbar extends ToolbarBase {
@Directive({ @Directive({
selector: '.back-button', selector: '.back-button',
host: { host: {
'(^click)': 'goBack($event)' '(click)': 'goBack($event)'
} }
}) })
class BackButton { class BackButton {

View File

@ -11,7 +11,7 @@ import {NavController} from './nav-controller';
'pushData' 'pushData'
], ],
host: { host: {
'(^click)': 'onClick($event)', '(click)': 'onClick($event)',
'role': 'link' 'role': 'link'
} }
}) })
@ -35,7 +35,7 @@ export class NavPush {
@Directive({ @Directive({
selector: '[nav-pop]', selector: '[nav-pop]',
host: { host: {
'(^click)': 'onClick($event)', '(click)': 'onClick($event)',
'role': 'link' 'role': 'link'
} }
}) })

View File

@ -43,14 +43,19 @@ export class NavRouter extends RouterOutlet {
* TODO * TODO
* @param {ComponentInstruction} instruction TODO * @param {ComponentInstruction} instruction TODO
*/ */
_activate(instruction: ComponentInstruction): Promise<any> { activate(nextInstruction: ComponentInstruction): Promise<any> {
var previousInstruction = this._currentInstruction; var previousInstruction = this._currentInstruction;
this._currentInstruction = instruction; this._currentInstruction = nextInstruction;
var componentType = instruction.componentType; var componentType = nextInstruction.componentType;
this.childRouter = this._parentRouter.childRouter(componentType); var childRouter = this._parentRouter.childRouter(componentType);
// tell the ViewController which componentType, and it's params, to navigate to // tell the ViewController which componentType, and it's params, to navigate to
this.nav.push(componentType, instruction.params); return this.nav.push(componentType, nextInstruction.params);
}
reuse(nextInstruction: ComponentInstruction) {
return Promise.resolve();
} }
/** /**

View File

@ -181,7 +181,7 @@ export class RadioGroup extends Ion {
'[attr.aria-checked]': 'checked', '[attr.aria-checked]': 'checked',
'[attr.aria-disabled]': 'disabled', '[attr.aria-disabled]': 'disabled',
'[attr.aria-labelledby]': 'labelId', '[attr.aria-labelledby]': 'labelId',
'(^click)': 'click($event)' '(click)': 'click($event)'
} }
}) })
@IonicView({ @IonicView({

View File

@ -1,246 +0,0 @@
import {ElementRef, Host, Optional, NgControl, Query, QueryList} from 'angular2/angular2';
import {IonicDirective, IonicComponent, IonicView} from '../../config/annotations';
import {IonicConfig} from '../../config/config';
import {Ion} from '../ion';
import {ListHeader} from '../list/list';
/**
* @name ionRadioGroup
* @description
* A radio group is a group of radio components.
*
* Selecting a radio button in the group unselects all others in the group.
*
* New radios can be registered dynamically.
*
* See the [Angular 2 Docs](https://angular.io/docs/js/latest/api/forms/) for more info on forms and input.
<<<<<<< HEAD
*
* @example
=======
*
* @usage
>>>>>>> origin/master
* ```html
* <ion-radio-group ng-control="clientside">
*
* <ion-header>
* Clientside
* </ion-header>
*
* <ion-radio value="ember">
* Ember
* </ion-radio>
*
* <ion-radio value="angular1">
* Angular 1
* </ion-radio>
*
* <ion-radio value="angular2" checked="true">
* Angular 2
* </ion-radio>
*
* <ion-radio value="react">
* React
* </ion-radio>
*
* </ion-radio-group>
* ```
*/
@IonicDirective({
selector: 'ion-radio-group',
host: {
'class': 'list',
'role': 'radiogroup',
'[attr.aria-activedescendant]': 'activeId',
'[attr.aria-describedby]': 'describedById'
}
})
export class RadioGroup extends Ion {
radios: Array<RadioButton> = [];
/**
* TODO
* @param {ElementRef} elementRef TODO
* @param {IonicConfig} config TODO
* @param {NgControl=} ngControl TODO
* @param {QueryList<ListHeader>} headerQuery TODO
*/
constructor(
elementRef: ElementRef,
config: IonicConfig,
@Optional() ngControl: NgControl,
@Query(ListHeader) private headerQuery: QueryList<ListHeader>
) {
super(elementRef, config);
this.id = ++radioGroupIds;
this.radioIds = -1;
this.onChange = (_) => {};
this.onTouched = (_) => {};
if (ngControl) ngControl.valueAccessor = this;
}
onInit() {
let header = this.headerQuery.first;
if (header) {
if (!header.id) {
header.id = 'radio-header-' + this.id;
}
this.describedById = header.id;
}
}
/**
* Register the specified radio button with the radio group.
* @param {RadioButton} radio The radio button to register.
*/
registerRadio(radio) {
radio.id = radio.id || ('radio-' + this.id + '-' + (++this.radioIds));
this.radios.push(radio);
if (radio.checked) {
this.value = radio.value;
this.activeId = radio.id;
}
}
/**
* Update which radio button in the group is checked, unchecking all others.
* @param {RadioButton} checkedRadio The radio button to check.
*/
update(checkedRadio) {
this.value = checkedRadio.value;
this.activeId = checkedRadio.id;
for (let radio of this.radios) {
radio.checked = (radio === checkedRadio);
}
this.onChange(this.value);
}
/**
* @private
* Angular2 Forms API method called by the model (Control) on change to update
* the checked value.
* https://github.com/angular/angular/blob/master/modules/angular2/src/forms/directives/shared.ts#L34
*/
writeValue(value) {
this.value = value;
for (let radio of this.radios) {
radio.checked = (radio.value == value);
}
}
/**
* @private
* Angular2 Forms API method called by the view (NgControl) to register the
* onChange event handler that updates the model (Control).
* https://github.com/angular/angular/blob/master/modules/angular2/src/forms/directives/shared.ts#L27
* @param {Function} fn the onChange event handler.
*/
registerOnChange(fn) { this.onChange = fn; }
/**
* @private
* Angular2 Forms API method called by the the view (NgControl) to register
* the onTouched event handler that marks the model (Control) as touched.
* @param {Function} fn onTouched event handler.
*/
registerOnTouched(fn) { this.onTouched = fn; }
}
/**
* @name ionRadio
<<<<<<< HEAD
* @classdesc
* A single radio component.
=======
* @description
* A single radio component.
>>>>>>> origin/master
*
* See the [Angular 2 Docs](https://angular.io/docs/js/latest/api/forms/) for more info on forms and input.
*
* @usage
* ```html
* <ion-radio value="isChecked" checked="true">
* Radio Label
* </ion-radio>
* ```
*
*/
@IonicComponent({
selector: 'ion-radio',
properties: [
'value',
'checked',
'disabled',
'id'
],
host: {
'class': 'item',
'role': 'radio',
'tappable': 'true',
'[attr.id]': 'id',
'[attr.tab-index]': 'tabIndex',
'[attr.aria-checked]': 'checked',
'[attr.aria-disabled]': 'disabled',
'[attr.aria-labelledby]': 'labelId',
'(^click)': 'click($event)'
}
})
@IonicView({
template:
'<ion-item-content id="{{labelId}}">' +
'<ng-content></ng-content>' +
'</ion-item-content>' +
'<div item-right class="item-media media-radio">' +
'<div class="radio-icon"></div>' +
'</div>'
})
export class RadioButton extends Ion {
/**
* Radio button constructor.
* @param {RadioGroup=} group The parent radio group, if any.
* @param {ElementRef} elementRef TODO
* @param {IonicConfig} config TODO
*/
constructor(
@Host() @Optional() group: RadioGroup,
elementRef: ElementRef,
config: IonicConfig
) {
super(elementRef, config)
this.group = group;
this.tabIndex = 0;
}
onInit() {
super.onInit();
this.group.registerRadio(this);
this.labelId = 'label-' + this.id;
}
click(ev) {
ev.preventDefault();
ev.stopPropagation();
this.check();
}
/**
* Update the checked state of this radio button.
* TODO: Call this toggle? Since unchecks as well
*/
check() {
this.checked = !this.checked;
this.group.update(this);
}
}
let radioGroupIds = -1;

View File

@ -4,7 +4,7 @@
<ion-content> <ion-content>
<form (^submit)="doSubmit($event)" [ng-form-model]="fruitsForm"> <form (submit)="doSubmit($event)" [ng-form-model]="fruitsForm">
<ion-radio-group ng-control="fruits"> <ion-radio-group ng-control="fruits">

View File

@ -1,5 +1,5 @@
<ion-content class="padding"> <ion-content class="padding">
<form (^submit)="doSubmit($event)" [ng-form-model]="myForm"> <form (submit)="doSubmit($event)" [ng-form-model]="myForm">
<ion-segment ng-control="mapStyle"> <ion-segment ng-control="mapStyle">
<ion-segment-button value="standard" button> <ion-segment-button value="standard" button>
Standard Standard

View File

@ -24,8 +24,8 @@ import {pointerCoord} from '../../util/dom';
selector: '.media-switch', selector: '.media-switch',
host: { host: {
'tappable': 'true', 'tappable': 'true',
'(^touchstart)': 'swtch.pointerDown($event)', '(touchstart)': 'swtch.pointerDown($event)',
'(^mousedown)': 'swtch.pointerDown($event)', '(mousedown)': 'swtch.pointerDown($event)',
'[class.activated]': 'swtch.isActivated' '[class.activated]': 'swtch.isActivated'
} }
}) })
@ -97,8 +97,8 @@ class MediaSwitch {
'[attr.aria-checked]': 'checked', '[attr.aria-checked]': 'checked',
'[attr.aria-disabled]': 'disabled', '[attr.aria-disabled]': 'disabled',
'[attr.aria-labelledby]': 'labelId', '[attr.aria-labelledby]': 'labelId',
'(^touchend)': 'pointerUp($event)', '(touchend)': 'pointerUp($event)',
'(^mouseup)': 'pointerUp($event)', '(mouseup)': 'pointerUp($event)',
} }
}) })
@IonicView({ @IonicView({

View File

@ -4,7 +4,7 @@
<ion-content> <ion-content>
<form (^submit)="doSubmit($event)" [ng-form-model]="fruitsForm"> <form (submit)="doSubmit($event)" [ng-form-model]="fruitsForm">
<ion-list> <ion-list>

View File

@ -159,7 +159,7 @@ export class Tabs extends ViewController {
'[class.has-icon]': 'hasIcon', '[class.has-icon]': 'hasIcon',
'[class.has-title-only]': 'hasTitleOnly', '[class.has-title-only]': 'hasTitleOnly',
'[class.icon-only]': 'hasIconOnly', '[class.icon-only]': 'hasIconOnly',
'(^click)': 'onClick($event)', '(click)': 'onClick($event)',
} }
}) })
class TabButton { class TabButton {

View File

@ -79,9 +79,9 @@ export class TextInputElement {
host: { host: {
'(focus)': 'receivedFocus(true)', '(focus)': 'receivedFocus(true)',
'(blur)': 'receivedFocus(false)', '(blur)': 'receivedFocus(false)',
'(^touchstart)': 'pointerStart($event)', '(touchstart)': 'pointerStart($event)',
'(^touchend)': 'pointerEnd($event)', '(touchend)': 'pointerEnd($event)',
'(^mouseup)': 'pointerEnd($event)', '(mouseup)': 'pointerEnd($event)',
'[class.has-focus]': 'inputHasFocus', '[class.has-focus]': 'inputHasFocus',
'[class.has-value]': 'inputHasValue', '[class.has-value]': 'inputHasValue',
'[tabIndex]': 'activeTabIndex', '[tabIndex]': 'activeTabIndex',

View File

@ -51,7 +51,7 @@ export class ToolbarBase extends Ion {
return this._ttTxt; return this._ttTxt;
} }
onAllChangesDone() { afterViewChecked() {
if (this._queueAlign) { if (this._queueAlign) {
this._queueAlign = false; this._queueAlign = false;
this._alignTitle(); this._alignTitle();

View File

@ -7,9 +7,9 @@
"url": "https://github.com/driftyco/ionic2.git" "url": "https://github.com/driftyco/ionic2.git"
}, },
"dependencies": { "dependencies": {
"angular2": "2.0.0-alpha.36", "angular2": "2.0.0-alpha.37",
"reflect-metadata": "0.1.0", "reflect-metadata": "0.1.1",
"rtts_assert": "2.0.0-alpha.36", "rtts_assert": "2.0.0-alpha.37",
"swiper": "^3.1.2", "swiper": "^3.1.2",
"systemjs": "0.18.10", "systemjs": "0.18.10",
"traceur": "0.0.91", "traceur": "0.0.91",

View File

@ -15,7 +15,17 @@
<script src="../../js/ionic.bundle.js"></script> <script src="../../js/ionic.bundle.js"></script>
<script>System.import("index");</script> <script>
System.config({
"paths": {
"*": "*.js",
"ionic/*": "ionic/*",
"angular2/*": "angular2/*",
"rx": "rx"
}
})
System.import("index");
</script>
</body> </body>
</html> </html>

View File

@ -53,7 +53,17 @@
<script src="../../../js/ionic.bundle.js"></script> <script src="../../../js/ionic.bundle.js"></script>
<script>System.import("index");</script> <script>
System.config({
"paths": {
"*": "*.js",
"ionic/*": "ionic/*",
"angular2/*": "angular2/*",
"rx": "rx"
}
})
System.import("index");
</script>
</body> </body>
</html> </html>