rename to aside

This commit is contained in:
Andrew
2015-03-20 10:19:07 -05:00
parent 0cdfb10560
commit f7a15e0cb1
10 changed files with 98 additions and 37 deletions

View File

@ -1,5 +1,5 @@
<ion-side-menu-parent> <ion-aside-parent>
<ion-side-menu side="left"> <ion-aside side="left">
Hello ... Hello ...
<p>...</p> <p>...</p>
<p>...</p> <p>...</p>
@ -7,7 +7,7 @@
<p>...</p> <p>...</p>
<p>...</p> <p>...</p>
Side menu! Side menu!
</ion-side-menu> </ion-aside>
<div class="content"> <div class="content">
<ion-tabbar view-title="My Tabs"></ion-tabbar> <ion-tabbar view-title="My Tabs"></ion-tabbar>
<ion-tabbar view-title="Tabs 2"></ion-tabbar> <ion-tabbar view-title="Tabs 2"></ion-tabbar>
@ -29,4 +29,4 @@
</ion-modal> </ion-modal>
--> -->
</div> </div>
</ion-side-menu-content> </ion-aside-parent>

View File

@ -1,13 +1,13 @@
import {bootstrap} from 'angular2/core'; import {bootstrap} from 'angular2/core';
import {Component, Template} from 'angular2/angular2'; import {Component, Template} from 'angular2/angular2';
import {SideMenu, SideMenuParent} from 'ionic/components'; import {Aside, AsideParent} from 'ionic/components';
// import 'ionic/components/tabbar/mixins/android/android-tabbar'; // import 'ionic/components/tabbar/mixins/android/android-tabbar';
@Component({ selector: '[playground-main]' }) @Component({ selector: '[playground-main]' })
@Template({ @Template({
url: 'main.html', url: 'main.html',
directives: [SideMenu, SideMenuParent] directives: [Aside, AsideParent]
}) })
class PlaygroundMain { class PlaygroundMain {
constructor() { constructor() {

View File

@ -20,7 +20,7 @@
@import @import
"../button/button", "../button/button",
"../modal/modal", "../modal/modal",
"../sidemenu/sidemenu", "../aside/aside",
"../switch/switch", "../switch/switch",
"../tabs/tabs", "../tabs/tabs",
"../tool-bar/tool-bar"; "../tool-bar/tool-bar";

View File

@ -4,34 +4,34 @@ import {IonConfig} from '../../config';
import {DragGesture} from '../../core/gestures/drag-gesture'; import {DragGesture} from '../../core/gestures/drag-gesture';
import * as util from '../../util'; import * as util from '../../util';
export var sideMenuConfig = new IonConfig(); export var asideConfig = new IonConfig('sidemenu')
// TODO defaults or bindings? // TODO defaults or bindings?
sideMenuConfig.defaults({ asideConfig.defaults({
side: 'left', side: 'left',
dragThreshold: '50' dragThreshold: 50
}); });
@Component({ @Component({
selector: 'ion-side-menu', selector: 'ion-aside',
bind: { bind: {
side: 'side', edge: 'side',
dragThreshold: 'dragThreshold' dragThreshold: 'dragThreshold'
}, },
}) })
@Template({ @Template({
inline: `<content></content>` inline: `<content></content>`
}) })
export class SideMenu extends Ion { export class Aside extends Ion {
constructor( constructor(
@Parent() sideMenuParent: SideMenuParent, @Parent() asideParent: AsideParent,
@NgElement() element: NgElement @NgElement() element: NgElement
) { ) {
this.domElement = element.domElement; this.domElement = element.domElement;
this._drag = {}; this._drag = {};
this.gesture = new DragGesture(sideMenuParent.domElement, { this.gesture = new DragGesture(asideParent.domElement, {
onDrag: this.onDrag.bind(this), onDrag: this.onDrag.bind(this),
onDragStart: this.onDragStart.bind(this), onDragStart: this.onDragStart.bind(this),
onDragEnd: this.onDragEnd.bind(this) onDragEnd: this.onDragEnd.bind(this)
@ -46,7 +46,7 @@ export class SideMenu extends Ion {
this.setChanging(false); this.setChanging(false);
}) })
sideMenuConfig(this); asideConfig(this);
} }
onDragStart(ev) { onDragStart(ev) {
if (!this.dragMethods.canStart(ev)) { if (!this.dragMethods.canStart(ev)) {
@ -97,12 +97,12 @@ export class SideMenu extends Ion {
} }
@Component({ @Component({
selector: 'ion-side-menu-parent' selector: 'ion-aside-parent'
}) })
@Template({ @Template({
inline: '<content></content>' inline: '<content></content>'
}) })
export class SideMenuParent { export class AsideParent {
constructor(@NgElement() element: NgElement) { constructor(@NgElement() element: NgElement) {
this.domElement = element.domElement; this.domElement = element.domElement;
super(); super();

View File

@ -1,7 +1,7 @@
$side-menu-width: 304px; $aside-width: 304px;
$side-menu-height: 304px; $aside-height: 304px;
ion-side-menu { ion-aside {
display: block; display: block;
position: absolute; position: absolute;
@ -17,45 +17,45 @@ ion-side-menu {
} }
&.left { &.left {
width: $side-menu-width; width: $aside-width;
left: 0; left: 0;
top: 0; top: 0;
bottom: 0; bottom: 0;
transform: translate3d(-$side-menu-width, 0, 0); transform: translate3d(-$aside-width, 0, 0);
&.open { &.open {
transform: translate3d(0,0,0); transform: translate3d(0,0,0);
} }
} }
&.right { &.right {
width: $side-menu-width; width: $aside-width;
right: 0; right: 0;
top: 0; top: 0;
bottom: 0; bottom: 0;
transform: translate3d($side-menu-width,0,0); transform: translate3d($aside-width,0,0);
&.open { &.open {
transform: translate3d(0,0,0); transform: translate3d(0,0,0);
} }
} }
&.top { &.top {
height: $side-menu-width; height: $aside-width;
top: 0; top: 0;
left: 0; left: 0;
right: 0; right: 0;
transform: translate3d(0,-$side-menu-width,0); transform: translate3d(0,-$aside-width,0);
&.open { &.open {
transform: translate3d(0,0,0); transform: translate3d(0,0,0);
} }
} }
&.bottom { &.bottom {
height: $side-menu-width; height: $aside-width;
bottom: 0; bottom: 0;
left: 0; left: 0;
right: 0; right: 0;
transform: translate3d(0,$side-menu-width,0); transform: translate3d(0,$aside-width,0);
&.open { &.open {
transform: translate3d(0,0,0); transform: translate3d(0,0,0);
} }
@ -63,7 +63,7 @@ ion-side-menu {
} }
ion-side-menu-parent { ion-aside-parent {
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;

View File

@ -1,7 +1,7 @@
import {sideMenuConfig} from '../../sidemenu'; import {asideConfig} from '../../sidemenu';
import * as util from '../../../../util'; import * as util from '../../../../util';
sideMenuConfig.when(instance => instance.side === 'bottom') asideConfig.when(instance => instance.side === 'bottom')
.mixin(function() { .mixin(function() {
this.gesture.options({ this.gesture.options({
@ -30,7 +30,7 @@ sideMenuConfig.when(instance => instance.side === 'bottom')
}); });
sideMenuConfig.when(instance => instance.side === 'left') asideConfig.when(instance => instance.side === 'left')
.mixin(function() { .mixin(function() {
this.domElement.classList.add('left'); this.domElement.classList.add('left');
@ -55,7 +55,7 @@ sideMenuConfig.when(instance => instance.side === 'left')
}); });
sideMenuConfig.when(instance => instance.side === 'right') asideConfig.when(instance => instance.side === 'right')
.mixin(function() { .mixin(function() {
this.domElement.classList.add('right'); this.domElement.classList.add('right');
@ -78,7 +78,7 @@ sideMenuConfig.when(instance => instance.side === 'right')
}); });
sideMenuConfig.when(instance => instance.side === 'top') asideConfig.when(instance => instance.side === 'top')
.mixin(function() { .mixin(function() {
this.domElement.classList.add('top'); this.domElement.classList.add('top');

View File

@ -1,13 +1,16 @@
import * as Platform from './platform'; import * as Platform from './platform';
import * as util from './util'; import * as util from './util';
export function IonConfig() { export function IonConfig(name) {
// TODO automatically add platform class // TODO automatically add platform class
// TODO do bindings/defaults have to be written twice? // TODO do bindings/defaults have to be written twice?
// TODO maybe add config to IonicComponent annotation // TODO maybe add config to IonicComponent annotation
// TODO map options to config // TODO map options to config
function Config(instance) { function Config(instance, element) {
var platformName = Platform.getPlatform();
(element.domElement || element).classList.add(`${name}-${platformName}`);
util.defaults(instance, Config._defaults || {}); util.defaults(instance, Config._defaults || {});
var conditions = Config._conditions; var conditions = Config._conditions;
for (var i = 0, ii = conditions.length; i < ii; i++) { for (var i = 0, ii = conditions.length; i < ii; i++) {

54
src/core/config/config.js Normal file
View File

@ -0,0 +1,54 @@
import * as Platform from '../../platform';
import * as util from '../../util';
export function IonConfig() {
// TODO automatically add platform class
// TODO do bindings/defaults have to be written twice?
// TODO maybe add config to IonicComponent annotation
// TODO map options to config
function Config(instance, element) {
(element.domElement || element).classList.add('platform-' + Platform.getPlatform());
util.defaults(instance, Config._defaults || {});
var conditions = Config._conditions;
for (var i = 0, ii = conditions.length; i < ii; i++) {
if (conditions[i]._callback(instance)) {
for (var j = 0, jj = conditions[i]._mixins.length; j < jj; j++) {
conditions[i]._mixins[j].call(instance);
}
}
}
}
Config._conditions = [];
Config.defaults = function(defaults) {
Config._defaults = defaults;
};
Config.when = function when(callback) {
var condition = new ConfigCondition(callback);
Config._conditions.push(condition);
return condition;
};
Config.platform = function platform(name) {
return Config.when(() => Platform.getPlatform() === name);
};
return Config;
}
class ConfigCondition {
constructor(callback, mixins = [], template = '') {
this._callback = callback;
this._mixins = mixins;
this._template = template;
}
mixin(mixinFn) {
this._mixins.push(mixinFn);
return this;
}
template(url) {
this._template = url;
return this;
}
}

View File

@ -0,0 +1,4 @@
import {Config} from './config';
export function main() {
}