toying around w/ layout ideas

This commit is contained in:
Adam Bradley
2015-04-20 14:00:44 -05:00
parent ff1f1984ec
commit 128c4250c5
7 changed files with 148 additions and 1 deletions

View File

@ -7,6 +7,7 @@ export * from 'ionic2/components/checkbox/checkbox'
export * from 'ionic2/components/content/content' export * from 'ionic2/components/content/content'
export * from 'ionic2/components/icon/icon' export * from 'ionic2/components/icon/icon'
export * from 'ionic2/components/item/item' export * from 'ionic2/components/item/item'
export * from 'ionic2/components/layout/layout'
export * from 'ionic2/components/list/list' export * from 'ionic2/components/list/list'
export * from 'ionic2/components/nav-pane/nav-pane' export * from 'ionic2/components/nav-pane/nav-pane'
export * from 'ionic2/components/nav-viewport/nav-viewport' export * from 'ionic2/components/nav-viewport/nav-viewport'

View File

@ -0,0 +1,53 @@
import {NgElement, Component, Template, Parent} from 'angular2/angular2'
@Component({
selector: 'layout,[layout]'
})
@Template({
inline: `
<content></content>
<object class="ele-qry" data="about:blank"></object>
`
})
export class Layout {
constructor(
@NgElement() ngElement:NgElement
) {
this.domElement = ngElement.domElement
this.eqEle = this.domElement.lastElementChild
window.requestAnimationFrame(() => {
this.initLayout()
})
}
initLayout() {
this.mqs = {}
for (let x = 0; x < this.domElement.attributes.length; x++) {
let attr = this.domElement.attributes[x]
let val = attr.nodeValue
let mqClassname = attr.nodeName
if (val.indexOf('(') > -1 && val.indexOf(')') > -1) {
let mql = this.eqEle.contentDocument.defaultView.matchMedia(val)
if (mql.media !== 'not all') {
this.mqs[mql.media] = (mql) => {
console.log(mql.media, mql.matches, mqClassname)
window.requestAnimationFrame(() => {
this.domElement.classList[mql.matches ? 'add' : 'remove'](mqClassname)
})
}
this.mqs[mql.media](mql)
mql.addListener(this.mqs[mql.media])
}
}
}
}
}

View File

@ -0,0 +1,58 @@
layout,
[layout] {
position: relative;
@include flex-display();
}
[flex] {
flex: 1;
}
.ele-qry {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 0;
padding: 0;
margin: 0;
border: none;
visibility: hidden;
pointer-events: none;
z-index: -99;
}
@mixin element-query($mq) {
$mq: "'" + $mq + "'";
$attr: str-replace($mq, ':', '-');
$attr: str-replace($attr, ' ', '-');
$attr: str-replace($attr, '--', '-');
$attr: str-replace($attr, '(', '');
$attr: str-replace($attr, ')', '');
&.#{$attr} {
@content;
}
.ele-qry {
font-family: $mq;
}
}
/*
div {
@include element-query( (min-width: 300px) ) {
background: blue;
};
@include element-query( (min-width: 400px) And (max-width: 800px) ) {
background: green;
};
}
*/

View File

@ -0,0 +1,15 @@
<layout style="width:80%;"
abc="(min-width: 400px)"
def="(min-width: 500px)"
ghi="(min-width: 600px)">
<div flex>A</div>
<div flex>B</div>
<div flex>C</div>
<div flex>D</div>
</layout>

View File

@ -0,0 +1,19 @@
import {bootstrap} from 'angular2/core';
import {Component, Template} from 'angular2/angular2';
import {View} from 'ionic2/components/view/view';
import {Content} from 'ionic2/components/content/content';
import {Layout} from 'ionic2/components/layout/layout';
@Component({ selector: '[ion-app]' })
@Template({
url: 'main.html',
directives: [View, Content, Layout]
})
class IonicApp {
constructor() {
console.log('IonicApp Start')
}
}
bootstrap(IonicApp)

View File

@ -2,7 +2,7 @@
// Material Design Toolbar // Material Design Toolbar
// -------------------------------------------------- // --------------------------------------------------
$tab-bar-material-min-height: 40px !default; $tab-bar-material-min-height: 10px !default;
$tab-bar-material-item-padding: 4px 10px !default; $tab-bar-material-item-padding: 4px 10px !default;
$tab-bar-material-active-border-width: 3px !default; $tab-bar-material-active-border-width: 3px !default;
$tab-bar-material-active-border-color: red !default; $tab-bar-material-active-border-color: red !default;

View File

@ -34,6 +34,7 @@
"components/checkbox/checkbox", "components/checkbox/checkbox",
"components/content/content", "components/content/content",
"components/item/item", "components/item/item",
"components/layout/layout",
"components/list/list", "components/list/list",
"components/modal/modal", "components/modal/modal",
"components/nav-pane/nav-pane", "components/nav-pane/nav-pane",