mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-20 12:29:55 +08:00
rename to aside
This commit is contained in:
@ -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>
|
||||||
|
@ -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() {
|
||||||
|
@ -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";
|
||||||
|
@ -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();
|
@ -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;
|
@ -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');
|
@ -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
54
src/core/config/config.js
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
4
src/core/config/config_spec.js
Normal file
4
src/core/config/config_spec.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import {Config} from './config';
|
||||||
|
|
||||||
|
export function main() {
|
||||||
|
}
|
Reference in New Issue
Block a user