Merge branch 'item-buttons'

This commit is contained in:
Brandy Carney
2016-01-05 17:09:25 -05:00
11 changed files with 228 additions and 117 deletions

View File

@@ -97,3 +97,41 @@ sup {
sub {
bottom: -0.25em;
}
// Text Alignment
// --------------------------------------------------
[text-left] {
text-align: left;
}
[text-center] {
text-align: center;
}
[text-right] {
text-align: right;
}
[text-justify] {
text-align: justify;
}
[text-nowrap] {
white-space: nowrap;
}
// Text Transformation
// --------------------------------------------------
[text-uppercase] {
text-transform: uppercase;
}
[text-lowercase] {
text-transform: lowercase;
}
[text-capitalize] {
text-transform: capitalize;
}

View File

@@ -37,7 +37,8 @@ export class Button {
constructor(
config: Config,
private _elementRef: ElementRef,
private _renderer: Renderer
private _renderer: Renderer,
@Attribute('ion-item') ionItem: string
) {
this._role = 'button'; // bar-button/item-button
this._size = null; // large/small
@@ -48,6 +49,7 @@ export class Button {
this._colors = []; // primary/secondary
this._icon = null; // left/right/only
this._disabled = false; // disabled
this.isItem = (ionItem === '');
let element = _elementRef.nativeElement;
@@ -92,6 +94,13 @@ export class Button {
}
}
/**
* @private
*/
addClass(className) {
this._renderer.setElementClass(this._elementRef, className, true);
}
/**
* @private
*/

View File

@@ -19,16 +19,20 @@
</p>
</ion-card-content>
<ion-item>
<button clear item-left>
<icon star></icon>
Star
</button>
<button clear item-right class="activated">
<icon share></icon>
Share.activated
</button>
</ion-item>
<ion-row no-padding>
<ion-col>
<button clear small>
<icon star></icon>
Star
</button>
</ion-col>
<ion-col text-right>
<button clear small class="activated">
<icon share></icon>
Share.activated
</button>
</ion-col>
</ion-row>
</ion-card>
@@ -51,19 +55,24 @@
<p>Hello. I am a paragraph.</p>
</ion-card-content>
<ion-item>
<button clear item-left danger class="activated">
<icon star></icon>
Favorite.activated
</button>
<button clear item-left danger>
<icon musical-notes></icon>
Listen
</button>
<ion-note item-right>
Right Note
</ion-note>
</ion-item>
<ion-row center no-padding>
<ion-col width-75>
<button clear small danger class="activated">
<icon star></icon>
Favorite.activated
</button>
<button clear small danger>
<icon musical-notes></icon>
Listen
</button>
</ion-col>
<ion-col text-right>
<button clear small>
<icon share></icon>
Share
</button>
</ion-col>
</ion-row>
</ion-card>
<ion-card>
@@ -76,20 +85,27 @@
This card was breaking the border radius.
</ion-card-content>
<ion-item>
<button clear item-left dark>
<icon star></icon>
Favorite
</button>
<button clear item-right dark>
<icon musical-notes></icon>
Listen
</button>
<button clear item-right dark>
<icon share-alt></icon>
Share
</button>
</ion-item>
<ion-row text-center no-padding>
<ion-col>
<button clear small dark>
<icon star></icon>
Favorite
</button>
</ion-col>
<ion-col>
<button clear small dark>
<icon musical-notes></icon>
Listen
</button>
</ion-col>
<ion-col>
<button clear small dark>
<icon share-alt></icon>
Share
</button>
</ion-col>
</ion-row>
</ion-card>

View File

@@ -0,0 +1,7 @@
import {App} from 'ionic/ionic';
@App({
templateUrl: 'main.html'
})
class E2EApp {}

View File

@@ -0,0 +1,71 @@
<ion-toolbar><ion-title>Grid Alignment</ion-title></ion-toolbar>
<ion-content class="alignment-demo">
<ion-row>
<ion-col>
ion-col
</ion-col>
<ion-col text-right>
ion-col[text-right]
</ion-col>
</ion-row>
<ion-row text-center>
<ion-col>
ion-row[text-center]
</ion-col>
<ion-col>
ion-row[text-center]
</ion-col>
<ion-col>
ion-row[text-center]
</ion-col>
</ion-row>
<ion-row>
<ion-col text-left>
ion-col[text-left]
</ion-col>
<ion-col text-left>
ion-col[text-left]
</ion-col>
<ion-col text-right>
ion-col[text-right]
</ion-col>
<ion-col text-right>
ion-col[text-right]
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<button small>Button 1</button>
</ion-col>
<ion-col width-50 text-center>
<button small>Button 2</button>
<button small>Button 3</button>
</ion-col>
<ion-col text-right>
<button small>Button 4</button>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<button small>Button 1</button>
<button small>Button 2</button>
</ion-col>
<ion-col text-right>
<button small>Button 3</button>
<button small>Button 4</button>
</ion-col>
</ion-row>
</ion-content>
<style>
.alignment-demo ion-row {
border: 1px solid #ddd;
margin: 10px 0;
}
</style>

View File

@@ -48,6 +48,13 @@ export class Icon {
this.mode = config.get('iconMode');
}
/**
* @private
*/
addClass(className) {
this._renderer.setElementClass(this._elementRef, className, true);
}
/**
* @private
*/

View File

@@ -83,30 +83,26 @@ $item-ios-sliding-content-bg: $list-ios-background-color !default;
border-bottom: 1px solid $list-ios-border-color;
}
&.hairlines .item-inner {
border-bottom-width: 0.55px;
}
ion-item-content {
margin: $item-ios-padding-top ($item-ios-padding-right / 2) $item-ios-padding-bottom 0;
}
&.hairlines .item-inner {
border-bottom-width: 0.55px;
}
// iOS Item Media
// --------------------------------------------------
[item-left] {
margin: ($item-ios-padding-top / 2) $item-ios-padding-right ($item-ios-padding-bottom / 2) 0;
margin-left: 0;
margin-right: $item-ios-padding-right;
}
[item-right] {
margin: ($item-ios-padding-top / 2) ($item-ios-padding-right / 2) ($item-ios-padding-bottom / 2) ($item-ios-padding-left / 2);
}
icon[item-left],
icon[item-right] {
margin-top: $item-ios-padding-icon-top;
margin-bottom: $item-ios-padding-icon-bottom;
margin-left: ($item-ios-padding-left / 2);
margin-right: ($item-ios-padding-right / 2);
}
ion-avatar[item-left],
@@ -119,38 +115,17 @@ ion-thumbnail[item-right] {
margin: ($item-ios-padding-right / 2);
}
button[item-left],
button[item-right],
[button][item-left],
[button][item-right] {
.item-button {
padding: 0 0.5em;
font-size: 1.3rem;
min-height: 25px;
margin-top: 9px;
}
[item-left].button-icon-only,
[item-right].button-icon-only,
[item-left].button-icon-only icon,
[item-right].button-icon-only icon,
[item-left][clear],
[item-right][clear] {
.button-icon-only icon,
.button-icon-only {
padding: 0 1px;
}
[item-left].icon-left icon,
[item-right].icon-left icon {
margin-left: 0;
margin-bottom: 1px;
padding-right: 0.3em;
}
[item-left].icon-right icon,
[item-right].icon-right icon {
margin-right: 0;
margin-bottom: 1px;
}
ion-avatar {
min-width: $item-ios-avatar-size;
min-height: $item-ios-avatar-size;
@@ -231,6 +206,6 @@ ion-item-sliding {
// todo
}
}
}

View File

@@ -96,40 +96,17 @@ icon[item-right] {
margin-left: 0;
}
button[item-left],
button[item-right],
[button][item-left],
[button][item-right] {
.item-button {
padding: 0 0.6em;
min-height: 26px;
font-size: 1.2rem;
}
[item-left].button-icon-only,
[item-right].button-icon-only,
[item-left].button-icon-only icon,
[item-right].button-icon-only icon {
.button-icon-only icon,
.button-icon-only {
padding: 0 1px;
}
[item-left][clear],
[item-right][clear] {
padding: 0 8px;
}
[item-left].icon-left icon,
[item-right].icon-left icon {
margin-bottom: 1px;
margin-left: 0;
padding-right: 0.3em;
}
[item-left].icon-right icon,
[item-right].icon-right icon {
margin-right: 0;
margin-bottom: 1px;
}
[text-wrap] ion-item-content {
font-size: $item-md-body-text-font-size;
line-height: $item-md-body-text-line-height;

View File

@@ -1,4 +1,7 @@
import {Component} from 'angular2/core';
import {Component, ContentChildren} from 'angular2/core';
import {Button} from '../button/button';
import {Icon} from '../icon/icon';
/**
@@ -47,7 +50,7 @@ import {Component} from 'angular2/core';
template:
'<ng-content select="[item-left]"></ng-content>' +
'<div class="item-inner">' +
'<ng-content select="ion-item-content"></ng-content>' +
'<ng-content select="ion-item-content,[item-content]"></ng-content>' +
'<ion-item-content cnt>' +
'<ng-content></ng-content>'+
'</ion-item-content>' +
@@ -57,4 +60,21 @@ import {Component} from 'angular2/core';
'class': 'item'
}
})
export class Item {}
export class Item {
@ContentChildren(Button)
set _buttons(buttons) {
buttons.toArray().forEach(button => {
if (!button.isItem) {
button.addClass('item-button');
}
});
}
@ContentChildren(Icon)
set _icons(icons) {
icons.toArray().forEach(icon => {
icon.addClass('item-icon');
});
}
}

View File

@@ -87,5 +87,5 @@
and a <a href="#" (click)="testClick($event)">link</a>.
<button outline item-right (click)="testClick($event)">View</button>
</ion-item>
</ion-content>

View File

@@ -1,17 +1,5 @@
@import "../globals.core";
.align-left {
text-align: left;
}
.align-center {
text-align: center;
}
.align-right {
text-align: right;
}
.no-transition {
transition: none !important;
}
@@ -61,6 +49,9 @@ $content-padding: 16px !default;
padding-left: $content-padding;
}
[no-padding] {
padding: 0;
}
// Focus Outline
// --------------------------------------------------