Skip to content

Commit 010955e

Browse files
committed
[list-item] Added rightToggle prop
1 parent d9aa067 commit 010955e

File tree

2 files changed

+56
-6
lines changed

2 files changed

+56
-6
lines changed

docs/src/app/components/pages/components/lists.jsx

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ var React = require('react');
22
var mui = require('mui');
33
var Avatar = mui.Avatar;
44
var Checkbox = mui.Checkbox;
5+
var Toggle = mui.Toggle;
56
var Colors = mui.Styles.Colors;
67
var List = mui.List;
78
var ListDivider = mui.ListDivider;
@@ -53,7 +54,8 @@ class ListsPage extends React.Component {
5354
secondaryText={
5455
<p>
5556
<span style={{color: Colors.darkBlack}}>Brunch this weekend?</span><br/>
56-
I&apos;ll be in your neighborhood doing errands this weekend. Do you want to grab brunch?
57+
I&apos;ll be in your neighborhood doing errands this weekend.
58+
Do you want to grab brunch?
5759
</p>
5860
}
5961
secondaryTextLines={2}>
@@ -145,7 +147,7 @@ class ListsPage extends React.Component {
145147
name: 'disableTouchTap',
146148
type: 'bool',
147149
header: 'default: false',
148-
desc: 'If true, the list-item will not be clickable and will not display hover affects. This is automatically disabled if leftCheckbox is set.'
150+
desc: 'If true, the list-item will not be clickable and will not display hover affects. This is automatically disabled if leftCheckbox or rightToggle is set.'
149151
},
150152
{
151153
name: 'insetChildren',
@@ -157,7 +159,13 @@ class ListsPage extends React.Component {
157159
name: 'leftAvatar',
158160
type: 'element',
159161
header: 'optional',
160-
desc: 'This is the avatar element to be displayed on the left side.'
162+
desc: 'This is the Avatar element to be displayed on the left side.'
163+
},
164+
{
165+
name: 'leftCheckbox',
166+
type: 'element',
167+
header: 'optional',
168+
desc: 'This is the Checkbox element to be displayed on the left side.'
161169
},
162170
{
163171
name: 'leftIcon',
@@ -177,6 +185,12 @@ class ListsPage extends React.Component {
177185
header: 'optional',
178186
desc: 'This is the SvgIcon or FontIcon to be displayed on the right side.'
179187
},
188+
{
189+
name: 'rightToggle',
190+
type: 'element',
191+
header: 'optional',
192+
desc: 'This is the Toggle element to display on the right side.'
193+
},
180194
{
181195
name: 'secondaryText',
182196
type: 'node',
@@ -373,6 +387,27 @@ class ListsPage extends React.Component {
373387
</List>
374388
</MobileTearSheet>
375389

390+
<MobileTearSheet>
391+
<List>
392+
<ListItem
393+
secondaryText="Always interrupt">
394+
When calls and notifications arrive
395+
</ListItem>
396+
</List>
397+
<ListDivider />
398+
<List subheader="Priority interruptions">
399+
<ListItem rightToggle={<Toggle />}>
400+
Events and reminders
401+
</ListItem>
402+
<ListItem rightToggle={<Toggle />}>
403+
Calls
404+
</ListItem>
405+
<ListItem rightToggle={<Toggle />}>
406+
Messages
407+
</ListItem>
408+
</List>
409+
</MobileTearSheet>
410+
376411
<MobileTearSheet>
377412
<List>
378413
<ListItem

src/lists/list-item.jsx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ var ListItem = React.createClass({
2424
onMouseOver: React.PropTypes.func,
2525
rightAvatar: React.PropTypes.element,
2626
rightIcon: React.PropTypes.element,
27+
rightToggle: React.PropTypes.element,
2728
secondaryText: React.PropTypes.node,
2829
secondaryTextLines: React.PropTypes.oneOf([1, 2])
2930
},
@@ -52,6 +53,7 @@ var ListItem = React.createClass({
5253
onMouseOver,
5354
rightAvatar,
5455
rightIcon,
56+
rightToggle,
5557
secondaryText,
5658
secondaryTextLines,
5759
style,
@@ -64,7 +66,7 @@ var ListItem = React.createClass({
6466
var singleNoAvatar = !secondaryText && !(leftAvatar || rightAvatar);
6567
var twoLine = secondaryText && secondaryTextLines === 1;
6668
var threeLine = secondaryText && secondaryTextLines > 1;
67-
var hasCheckbox = leftCheckbox;
69+
var hasCheckbox = leftCheckbox || rightToggle;
6870

6971
var styles = {
7072
root: {
@@ -81,7 +83,7 @@ var ListItem = React.createClass({
8183
//This inner div is need so that ripples will span the entire container
8284
innerDiv: {
8385
paddingLeft: leftIcon || leftAvatar || leftCheckbox || insetChildren ? 72 : 16,
84-
paddingRight: rightIcon || rightAvatar ? 56 : 16,
86+
paddingRight: rightIcon || rightAvatar ? 56 : rightToggle ? 72 : 16,
8587
paddingBottom: singleAvatar ? 20 : 16,
8688
paddingTop: singleNoAvatar || threeLine ? 16 : 20
8789
},
@@ -124,6 +126,18 @@ var ListItem = React.createClass({
124126
right: 16
125127
},
126128

129+
leftCheckbox: {
130+
left: 4
131+
},
132+
133+
rightToggle: {
134+
position: 'absolute',
135+
display: 'block',
136+
width: 54,
137+
top: twoLine ? 25 : singleAvatar ? 17 : 13,
138+
right: 8
139+
},
140+
127141
secondaryText: {
128142
fontSize: 14,
129143
lineHeight: threeLine ? '18px' : '16px',
@@ -156,7 +170,8 @@ var ListItem = React.createClass({
156170
this._pushElement(contentChildren, rightIcon, this.mergeStyles(styles.icons, styles.rightIcon));
157171
this._pushElement(contentChildren, leftAvatar, this.mergeStyles(styles.avatars, styles.leftAvatar));
158172
this._pushElement(contentChildren, rightAvatar, this.mergeStyles(styles.avatars, styles.rightAvatar));
159-
this._pushElement(contentChildren, leftCheckbox, this.mergeStyles(styles.icons, styles.leftIcon));
173+
this._pushElement(contentChildren, leftCheckbox, this.mergeStyles(styles.icons, styles.leftCheckbox));
174+
this._pushElement(contentChildren, rightToggle, this.mergeStyles(styles.rightToggle));
160175

161176
if (this.props.children) contentChildren.push(this.props.children);
162177
if (secondaryText) contentChildren.push(

0 commit comments

Comments
 (0)