diff --git a/src/components/item/item.ios.scss b/src/components/item/item.ios.scss
index 135e5a93bf..0df7b6118d 100644
--- a/src/components/item/item.ios.scss
+++ b/src/components/item/item.ios.scss
@@ -215,7 +215,7 @@ ion-item-group .item-wrapper:last-child .item-ios .item-inner {
// iOS Item Divider
// --------------------------------------------------
-ion-item-divider.item-ios {
+.item-divider-ios {
padding-left: $item-ios-padding-left;
color: $item-ios-divider-color;
@@ -223,7 +223,7 @@ ion-item-divider.item-ios {
}
-// Generate iOS Item Divider Colors
+// Generate iOS Item and Item Divider Colors
// --------------------------------------------------
@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) {
@@ -233,7 +233,8 @@ ion-item-divider.item-ios {
color: $color-base;
}
- .item-ios-#{$color-name} {
+ .item-ios-#{$color-name},
+ .item-divider-ios-#{$color-name} {
color: $color-contrast;
background-color: $color-base;
diff --git a/src/components/item/item.md.scss b/src/components/item/item.md.scss
index 9647d902a6..638db84755 100644
--- a/src/components/item/item.md.scss
+++ b/src/components/item/item.md.scss
@@ -33,11 +33,17 @@ $item-md-detail-push-color: $list-md-border-color !default;
/// @prop - Icon for the detail arrow
$item-md-detail-push-svg: "" !default;
+/// @prop - Color for the divider
+$item-md-divider-color: #858585 !default;
+
/// @prop - Background for the divider
$item-md-divider-background: #fff !default;
-/// @prop - Color for the divider
-$item-md-divider-color: #222 !default;
+/// @prop - Font size for the divider
+$item-md-divider-font-size: $item-md-body-text-font-size !default;
+
+/// @prop - Border bottom for the divider
+$item-md-divider-border-bottom: 1px solid $list-md-border-color !default;
/// @prop - Padding for the divider
$item-md-divider-padding: 5px 15px !default;
@@ -218,15 +224,18 @@ ion-item-group .item-md .item-wrapper:last-child .item-inner {
// Material Design Item Divider
// --------------------------------------------------
-ion-item-divider.item-md {
+.item-divider-md {
padding-left: $item-md-padding-left;
color: $item-md-divider-color;
background-color: $item-md-divider-background;
+
+ border-bottom: $item-md-divider-border-bottom;
+ font-size: $item-md-divider-font-size;
}
-// Generate Material Design Item Divider Colors
+// Generate Material Design Item and Item Divider Colors
// --------------------------------------------------
@each $color-name, $color-base, $color-contrast in get-colors($colors-md) {
@@ -236,7 +245,8 @@ ion-item-divider.item-md {
color: $color-base;
}
- .item-md-#{$color-name} {
+ .item-md-#{$color-name},
+ .item-divider-md-#{$color-name} {
color: $color-contrast;
background-color: $color-base;
diff --git a/src/components/item/item.ts b/src/components/item/item.ts
index 95bcf75c9f..2f19b44151 100644
--- a/src/components/item/item.ts
+++ b/src/components/item/item.ts
@@ -298,6 +298,7 @@ export class Item extends Ion {
_inputs: Array = [];
_label: Label;
_viewLabel: boolean = true;
+ _name: string = 'item';
_shouldHaveReorder: boolean = false;
/**
@@ -315,7 +316,7 @@ export class Item extends Ion {
*/
@Input()
set color(val: string) {
- this._updateColor(val);
+ this._updateColor(val, this._name);
}
/**
@@ -334,6 +335,8 @@ export class Item extends Ion {
@Optional() reorder: ItemReorder
) {
super(config, elementRef, renderer);
+
+ this._setName(elementRef);
this._shouldHaveReorder = !!reorder;
this.mode = config.get('mode');
this.id = form.nextId().toString();
@@ -361,11 +364,25 @@ export class Item extends Ion {
}
}
+ /**
+ * @private
+ */
_updateColor(newColor: string, colorClass?: string) {
colorClass = colorClass || 'item'; // item-radio
this._setColor(colorClass, newColor);
}
+ /**
+ * @private
+ */
+ _setName(elementRef: ElementRef) {
+ let nodeName = elementRef.nativeElement.nodeName.replace('ION-', '');
+
+ if (nodeName === 'LIST-HEADER' || nodeName === 'ITEM-DIVIDER') {
+ this._name = nodeName;
+ }
+ }
+
/**
* @private
*/
@@ -419,6 +436,40 @@ export class Item extends Ion {
icon.setElementClass('item-icon', true);
});
}
+}
+
+/**
+ * @private
+ */
+@Directive({
+ selector: 'ion-item-divider',
+ host: {
+ 'class': 'item-divider'
+ }
+})
+export class ItemDivider extends Ion {
+
+ /**
+ * @input {string} The predefined color to use. For example: `"primary"`, `"secondary"`, `"danger"`.
+ */
+ @Input()
+ set color(val: string) {
+ this._setColor('item-divider', val);
+ }
+
+ /**
+ * @input {string} The mode to apply to this component.
+ */
+ @Input()
+ set mode(val: string) {
+ this._setMode('item-divider', val);
+ }
+
+ constructor(form: Form, config: Config, elementRef: ElementRef, renderer: Renderer) {
+ super(config, elementRef, renderer);
+
+ this.mode = config.get('mode');
+ }
}
diff --git a/src/components/item/item.wp.scss b/src/components/item/item.wp.scss
index b87f360687..05b5319a51 100644
--- a/src/components/item/item.wp.scss
+++ b/src/components/item/item.wp.scss
@@ -39,11 +39,17 @@ $item-wp-detail-push-color: $input-wp-border-color !default;
/// @prop - Icon for the detail arrow
$item-wp-detail-push-svg: "" !default;
+/// @prop - Color for the divider
+$item-wp-divider-color: $list-wp-text-color !default;
+
/// @prop - Background for the divider
$item-wp-divider-background: #fff !default;
-/// @prop - Color for the divider
-$item-wp-divider-color: #222 !default;
+/// @prop - Bodrer bottom for the divider
+$item-wp-divider-border-bottom: 1px solid $list-wp-border-color !default;
+
+/// @prop - Font size for the divider
+$item-wp-divider-font-size: 2rem !default;
/// @prop - Padding for the divider
$item-wp-divider-padding: 5px 15px !default;
@@ -215,15 +221,18 @@ $item-wp-sliding-content-background: $list-wp-background-color !default;
// Windows Item Divider
// --------------------------------------------------
-ion-item-divider.item-wp {
+.item-divider-wp {
padding-left: $item-wp-padding-left;
+ border-bottom: $item-wp-divider-border-bottom;
+ font-size: $item-wp-divider-font-size;
+
color: $item-wp-divider-color;
background-color: $item-wp-divider-background;
}
-// Generate Windows Item Divider Colors
+// Generate Windows Item and Item Divider Colors
// --------------------------------------------------
@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) {
@@ -233,7 +242,8 @@ ion-item-divider.item-wp {
color: $color-base;
}
- .item-wp-#{$color-name} {
+ .item-wp-#{$color-name},
+ .item-divider-wp-#{$color-name} {
color: $color-contrast;
background-color: $color-base;
diff --git a/src/components/item/test/dividers/e2e.ts b/src/components/item/test/dividers/e2e.ts
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/components/item/test/dividers/main.html b/src/components/item/test/dividers/main.html
index ddc7f76160..a8bd21e9ac 100644
--- a/src/components/item/test/dividers/main.html
+++ b/src/components/item/test/dividers/main.html
@@ -8,20 +8,42 @@
+
+ Divider by itself
+
+
+
+
+ Divider in List
+
+
+ Danger Divider in List
+
+
+
+
+
+ Divider in Item Group
+
+
+ Secondary Divider in Item Group
+
+
+
Secondary header
Plain Ol' div with some text
- Item Divider
+ Item Divider Danger Span
-
+
Multiline text that should wrap when it is too long
to fit on one line in the item. Attribute on .item
@@ -35,16 +57,12 @@
- Dark
+ Dark
Primary h5
H1 Title Text
-
-
-
H2 Title Text
-
@@ -58,22 +76,12 @@
-
-
H3 Title Text
-
-
-
-
Primary
-
-
-
H4 Title Text
-
diff --git a/src/components/item/test/text/main.html b/src/components/item/test/text/main.html
index 705709b765..47c936c297 100644
--- a/src/components/item/test/text/main.html
+++ b/src/components/item/test/text/main.html
@@ -9,6 +9,21 @@
+
+
+ List Header
+
+
+ Item
+
+
+ Item Divider
+
+
+ Item
+
+
+
Plain Ol' div with some text
@@ -26,7 +41,7 @@
to fit on one line in the item. Attribute on .item
-
+
H1 Title Text
Paragraph line 1
diff --git a/src/components/list/list-header.ts b/src/components/list/list-header.ts
index 04364b06b1..4226ab657d 100644
--- a/src/components/list/list-header.ts
+++ b/src/components/list/list-header.ts
@@ -1,4 +1,4 @@
-import { Attribute, Directive, ElementRef, Renderer } from '@angular/core';
+import { Attribute, Directive, ElementRef, Input, Renderer } from '@angular/core';
import { Config } from '../../config/config';
import { Ion } from '../ion';
@@ -10,9 +10,27 @@ import { Ion } from '../ion';
selector: 'ion-list-header'
})
export class ListHeader extends Ion {
+
+ /**
+ * @input {string} The predefined color to use. For example: `"primary"`, `"secondary"`, `"danger"`.
+ */
+ @Input()
+ set color(val: string) {
+ this._setColor('list-header', val);
+ }
+
+ /**
+ * @input {string} The mode to apply to this component.
+ */
+ @Input()
+ set mode(val: string) {
+ this._setMode('list-header', val);
+ }
+
constructor(config: Config, renderer: Renderer, elementRef: ElementRef, @Attribute('id') private _id: string) {
super(config, elementRef, renderer);
- this._setMode('list-header', config.get('mode'));
+
+ this.mode = config.get('mode');
}
get id(): string {
diff --git a/src/components/list/list.ios.scss b/src/components/list/list.ios.scss
index 9bc273d2da..5d95daea0c 100644
--- a/src/components/list/list.ios.scss
+++ b/src/components/list/list.ios.scss
@@ -33,6 +33,9 @@ $list-inset-ios-border-radius: 4px !default;
/// @prop - Padding left of the header in a list
$list-ios-header-padding-left: $item-ios-padding-left !default;
+/// @prop - Border bottom of the header in a list
+$list-ios-header-border-bottom: $hairlines-width solid $list-ios-border-color !default;
+
/// @prop - Font size of the header in a list
$list-ios-header-font-size: 1.2rem !default;
@@ -42,6 +45,9 @@ $list-ios-header-font-weight: 500 !default;
/// @prop - Letter spacing of the header in a list
$list-ios-header-letter-spacing: .1rem !default;
+/// @prop - Text transform of the header in a list
+$list-ios-header-text-transform: uppercase !default;
+
/// @prop - Text color of the header in a list
$list-ios-header-color: #333 !default;
@@ -167,11 +173,22 @@ $list-ios-header-background-color: transparent !default;
padding-left: $list-ios-header-padding-left;
- border-bottom: $hairlines-width solid $list-ios-border-color;
+ border-bottom: $list-ios-header-border-bottom;
font-size: $list-ios-header-font-size;
font-weight: $list-ios-header-font-weight;
letter-spacing: $list-ios-header-letter-spacing;
- text-transform: uppercase;
+ text-transform: $list-ios-header-text-transform;
color: $list-ios-header-color;
background: $list-ios-header-background-color;
}
+
+
+// Generate iOS List Header Colors
+// --------------------------------------------------
+
+@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) {
+ .list-header-ios-#{$color-name} {
+ color: $color-contrast;
+ background-color: $color-base;
+ }
+}
\ No newline at end of file
diff --git a/src/components/list/list.md.scss b/src/components/list/list.md.scss
index 5b780cb61a..e712aad6b7 100644
--- a/src/components/list/list.md.scss
+++ b/src/components/list/list.md.scss
@@ -33,6 +33,9 @@ $list-inset-md-border-radius: 2px !default;
/// @prop - Padding left of the header in a list
$list-md-header-padding-left: $item-md-padding-left !default;
+/// @prop - Border bottom of the header in a list
+$list-md-header-border-bottom: 1px solid $list-md-border-color !default;
+
/// @prop - Font size of the header in a list
$list-md-header-font-size: 1.4rem !default;
@@ -156,15 +159,24 @@ $list-md-header-color: #858585 !default;
}
-// Material Design List Header / Divider
+// Material Design List Header
// --------------------------------------------------
-.list-header-md,
-.list-md ion-item-divider {
- margin-left: 0;
+.list-header-md {
padding-left: $list-md-header-padding-left;
- border-bottom: 1px solid $list-md-border-color;
+ border-bottom: $list-md-header-border-bottom;
font-size: $list-md-header-font-size;
color: $list-md-header-color;
}
+
+
+// Generate Material Design List Header Colors
+// --------------------------------------------------
+
+@each $color-name, $color-base, $color-contrast in get-colors($colors-md) {
+ .list-header-md-#{$color-name} {
+ color: $color-contrast;
+ background-color: $color-base;
+ }
+}
diff --git a/src/components/list/list.wp.scss b/src/components/list/list.wp.scss
index 66e20768cd..78d32103ee 100644
--- a/src/components/list/list.wp.scss
+++ b/src/components/list/list.wp.scss
@@ -33,6 +33,9 @@ $list-inset-wp-border-radius: 2px !default;
/// @prop - Padding left of the header in a list
$list-wp-header-padding-left: $item-wp-padding-left !default;
+/// @prop - Border bottom of the header in a list
+$list-wp-header-border-bottom: 1px solid $list-wp-border-color !default;
+
/// @prop - Font size of the header in a list
$list-wp-header-font-size: 2rem !default;
@@ -151,15 +154,24 @@ $list-wp-header-color: $list-wp-text-color !default;
}
-// Windows List Header / Divider
+// Windows List Header
// --------------------------------------------------
-.list-header-wp,
-.list-wp ion-item-divider {
- margin-left: 0;
+.list-header-wp {
padding-left: $list-wp-header-padding-left;
- border-bottom: 1px solid $list-wp-border-color;
+ border-bottom: $list-wp-header-border-bottom;
font-size: $list-wp-header-font-size;
color: $list-wp-header-color;
}
+
+
+// Generate Windows List Header Colors
+// --------------------------------------------------
+
+@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) {
+ .list-header-wp-#{$color-name} {
+ color: $color-contrast;
+ background-color: $color-base;
+ }
+}
diff --git a/src/components/list/test/header-scenarios/main.html b/src/components/list/test/header-scenarios/main.html
index e3e6785db0..5a28351944 100644
--- a/src/components/list/test/header-scenarios/main.html
+++ b/src/components/list/test/header-scenarios/main.html
@@ -16,10 +16,6 @@
-
-
This is multiline text that has a
long description of about how the text is really long
@@ -27,9 +23,9 @@
-
+
- Inner Buttons
+ Secondary Inner Buttons
@@ -45,12 +41,12 @@
-
+
- right icon buttons
+ Dark right icon buttons