From 782723ca84b0206dbce8fdc1aa0c757762d0b50a Mon Sep 17 00:00:00 2001
From: Adam Bradley
Date: Thu, 6 Aug 2015 15:51:07 -0500
Subject: [PATCH] ion-list-header directive
---
ionic/components/app/test/sink/pages/list.ts | 12 +++++++----
ionic/components/checkbox/test/basic/e2e.ts | 10 ++++++++--
.../components/checkbox/test/basic/main.html | 6 +++---
ionic/components/list/extensions/ios.scss | 4 ++--
.../components/list/extensions/material.scss | 4 ++--
ionic/components/list/list.scss | 5 +++--
ionic/components/list/list.ts | 16 ++++++++++++++-
.../list/test/headers-footers/main.html | 20 +++++++++----------
ionic/components/radio/radio.ts | 20 ++++++++++++++++---
ionic/components/radio/test/basic/e2e.ts | 2 +-
ionic/components/radio/test/basic/main.html | 8 ++++----
ionic/config/annotations.ts | 3 ++-
12 files changed, 75 insertions(+), 35 deletions(-)
diff --git a/ionic/components/app/test/sink/pages/list.ts b/ionic/components/app/test/sink/pages/list.ts
index dbba4fcbf5..0f4b784d30 100644
--- a/ionic/components/app/test/sink/pages/list.ts
+++ b/ionic/components/app/test/sink/pages/list.ts
@@ -18,9 +18,11 @@ import {SinkPage} from '../sink-page';
-
+
+
@@ -32,9 +34,11 @@ import {SinkPage} from '../sink-page';
Item
-
+
+
`
diff --git a/ionic/components/checkbox/test/basic/e2e.ts b/ionic/components/checkbox/test/basic/e2e.ts
index 3e340014f6..cd8174623b 100644
--- a/ionic/components/checkbox/test/basic/e2e.ts
+++ b/ionic/components/checkbox/test/basic/e2e.ts
@@ -1,4 +1,10 @@
-it('should toggle checkbox state with label click', function() {
- element(by.css('#appleLabel')).click();
+it('should check apple via checkbox element click', function() {
+ element(by.css('#e2eAppleCheckbox')).click();
+});
+
+
+it('should enable/check grape via buttons', function() {
+ element(by.css('#e2eGrapeDisabled')).click();
+ element(by.css('#e2eGrapeChecked')).click();
});
diff --git a/ionic/components/checkbox/test/basic/main.html b/ionic/components/checkbox/test/basic/main.html
index 82ca261f7b..eb7cfc0e0b 100644
--- a/ionic/components/checkbox/test/basic/main.html
+++ b/ionic/components/checkbox/test/basic/main.html
@@ -8,7 +8,7 @@
-
+
Apple, value=apple, init checked
@@ -29,8 +29,8 @@
-
-
+
+
diff --git a/ionic/components/list/extensions/ios.scss b/ionic/components/list/extensions/ios.scss
index 046f2338e3..cd77446492 100644
--- a/ionic/components/list/extensions/ios.scss
+++ b/ionic/components/list/extensions/ios.scss
@@ -17,7 +17,7 @@ $list-ios-footer-color: #333 !default;
.list[mode="ios"] {
- .list-header {
+ ion-list-header {
padding: $list-ios-header-padding;
font-size: $list-ios-header-font-size;
font-weight: $list-ios-header-font-weight;
@@ -26,7 +26,7 @@ $list-ios-footer-color: #333 !default;
color: $list-ios-header-color;
}
- .list-footer {
+ ion-list-footer {
padding: $list-ios-footer-padding;
font-size: $list-ios-footer-font-size;
font-weight: $list-ios-footer-font-weight;
diff --git a/ionic/components/list/extensions/material.scss b/ionic/components/list/extensions/material.scss
index f73a551174..947ed40b41 100644
--- a/ionic/components/list/extensions/material.scss
+++ b/ionic/components/list/extensions/material.scss
@@ -13,14 +13,14 @@ $list-md-footer-color: #8f8f94 !default;
.list[mode="md"] {
- .list-header {
+ ion-list-header {
padding: $list-md-header-padding;
font-size: $list-md-header-font-size;
text-transform: uppercase;
color: $list-md-header-color;
}
- .list-footer {
+ ion-list-footer {
padding: $list-md-footer-padding;
font-size: $list-md-footer-font-size;
text-transform: uppercase;
diff --git a/ionic/components/list/list.scss b/ionic/components/list/list.scss
index b3313f6f1e..537622e818 100644
--- a/ionic/components/list/list.scss
+++ b/ionic/components/list/list.scss
@@ -10,8 +10,9 @@
list-style-type: none;
}
-.list-header,
-.list-footer {
+ion-list-header,
+ion-list-footer {
+ display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
diff --git a/ionic/components/list/list.ts b/ionic/components/list/list.ts
index d390255292..2c21f864a8 100644
--- a/ionic/components/list/list.ts
+++ b/ionic/components/list/list.ts
@@ -1,4 +1,4 @@
-import {ElementRef} from 'angular2/angular2';
+import {Directive, ElementRef} from 'angular2/angular2';
import {Ion} from '../ion';
import {IonicConfig} from '../../config/config';
@@ -42,3 +42,17 @@ export class List extends Ion {
this.itemTemplate = item;
}
}
+
+
+@Directive({
+ selector: 'ion-list-header',
+ properties: [
+ 'id'
+ ],
+ host: {
+ '[attr.id]': 'id'
+ }
+})
+export class ListHeader {
+
+}
diff --git a/ionic/components/list/test/headers-footers/main.html b/ionic/components/list/test/headers-footers/main.html
index e6098a5ff4..5c5e578b49 100644
--- a/ionic/components/list/test/headers-footers/main.html
+++ b/ionic/components/list/test/headers-footers/main.html
@@ -2,9 +2,9 @@
-
+
@@ -30,9 +30,9 @@
-
+
@@ -44,17 +44,17 @@
-
+
-
+
@@ -76,8 +76,8 @@
-
+
diff --git a/ionic/components/radio/radio.ts b/ionic/components/radio/radio.ts
index 940f06860d..c6765da759 100644
--- a/ionic/components/radio/radio.ts
+++ b/ionic/components/radio/radio.ts
@@ -1,10 +1,11 @@
-import {ElementRef, Ancestor, Optional, NgControl} from 'angular2/angular2';
+import {ElementRef, Ancestor, Optional, NgControl, Query, QueryList} from 'angular2/angular2';
import {IonicDirective, IonicComponent, IonicView} from '../../config/annotations';
import {IonicConfig} from '../../config/config';
import {Ion} from '../ion';
import {IonInputItem} from '../form/form';
import {TapClick} from '../button/button';
+import {ListHeader} from '../list/list';
@IonicDirective({
@@ -12,7 +13,8 @@ import {TapClick} from '../button/button';
host: {
'class': 'list',
'role': 'radiogroup',
- '[attr.aria-activedescendant]': 'activeId'
+ '[attr.aria-activedescendant]': 'activeId',
+ '[attr.aria-describedby]': 'describedById'
}
})
export class RadioGroup extends Ion {
@@ -21,7 +23,8 @@ export class RadioGroup extends Ion {
constructor(
elementRef: ElementRef,
config: IonicConfig,
- @Optional() cd: NgControl
+ @Optional() cd: NgControl,
+ @Query(ListHeader) private headerQuery: QueryList
) {
super(elementRef, config);
this.id = ++radioGroupIds;
@@ -32,6 +35,17 @@ export class RadioGroup extends Ion {
if (cd) cd.valueAccessor = this;
}
+ onInit() {
+ let header = this.headerQuery.first;
+ if (header) {
+ debugger
+ if (!header.id) {
+ header.id = 'radio-header-' + this.id;
+ }
+ this.describedById = header.id;
+ }
+ }
+
registerRadio(radio) {
radio.id = radio.id || ('radio-' + this.id + '-' + (++this.radioIds));
this.radios.push(radio);
diff --git a/ionic/components/radio/test/basic/e2e.ts b/ionic/components/radio/test/basic/e2e.ts
index a259ec5d31..424ac5b89a 100644
--- a/ionic/components/radio/test/basic/e2e.ts
+++ b/ionic/components/radio/test/basic/e2e.ts
@@ -4,5 +4,5 @@ it('should check Banana', function() {
});
it('should check Cherry', function() {
- element(by.css('#e2eSelectCherry')).click();
+ element(by.css('#e2eCherry')).click();
});
diff --git a/ionic/components/radio/test/basic/main.html b/ionic/components/radio/test/basic/main.html
index d9e0204b72..d09a808907 100644
--- a/ionic/components/radio/test/basic/main.html
+++ b/ionic/components/radio/test/basic/main.html
@@ -8,9 +8,9 @@
-
+
Apple
@@ -20,7 +20,7 @@
Banana
-
+
Cherry
@@ -35,6 +35,6 @@
-
+
diff --git a/ionic/config/annotations.ts b/ionic/config/annotations.ts
index 62c3a9fd89..de9daac2e8 100644
--- a/ionic/config/annotations.ts
+++ b/ionic/config/annotations.ts
@@ -8,7 +8,7 @@ import {
Aside, Button, Content, Scroll, Refresher,
Slides, Slide, SlidePager,
Tabs, Tab,
- Card, List, Item, ItemGroup, ItemGroupTitle,
+ Card, List, ListHeader, Item, ItemGroup, ItemGroupTitle,
Toolbar,
Icon,
IconDirective,
@@ -41,6 +41,7 @@ export const IonicDirectives = [
// Lists
forwardRef(() => Card),
forwardRef(() => List),
+ forwardRef(() => ListHeader),
forwardRef(() => Item),
forwardRef(() => ItemGroup),
forwardRef(() => ItemGroupTitle),