191 lines
7.2 KiB
TypeScript
191 lines
7.2 KiB
TypeScript
import * as React from 'react';
|
|
import { ListCheckbox, ListSubHeader, List, ListItem, ListDivider, ListItemText, ListItemContent } from '../../components/list';
|
|
import { Button } from '../../components/button';
|
|
import Avatar from '../../components/avatar';
|
|
import FontIcon from '../../components/font_icon';
|
|
|
|
const listStyle = {
|
|
border: '1px solid #EEE',
|
|
display: 'inline-block',
|
|
minWidth: 340,
|
|
};
|
|
|
|
class ListTest extends React.Component<any, any> {
|
|
state: any = {
|
|
checkbox1: false,
|
|
checkbox2: true,
|
|
checkbox3: true,
|
|
};
|
|
|
|
handleCheckboxChange = (field: any) => {
|
|
const newState: any = {};
|
|
newState[field] = !this.state[field];
|
|
this.setState(newState);
|
|
};
|
|
|
|
render() {
|
|
return (
|
|
<section>
|
|
<h5>With simple text and icons</h5>
|
|
<p>This list can be used inside a Drawer for a list of options or as navigation.</p>
|
|
<div style={listStyle}>
|
|
<List selectable ripple>
|
|
<ListSubHeader caption="Contacts" />
|
|
<ListItem caption="Inbox" leftIcon="inbox" />
|
|
<ListItem caption="Outbox" selectable={false} ripple={false} leftIcon="send" />
|
|
<ListItem caption="Trash" leftIcon="delete" />
|
|
<ListItem caption="Spam" leftIcon="report" />
|
|
</List>
|
|
</div>
|
|
|
|
<h5>Two text lines, avatar and right icon</h5>
|
|
<p>Useful for a list of contacts or similar.</p>
|
|
<div style={listStyle}>
|
|
<List selectable ripple>
|
|
<ListSubHeader caption="Contacts" />
|
|
<ListItem
|
|
avatar="https://pbs.twimg.com/profile_images/614407428/s6pTalMzZs-nusCGWqoV.0_400x400.jpeg"
|
|
caption="Alfonso Rocha"
|
|
legend="Product Manager at Fon"
|
|
rightIcon="star"
|
|
/>
|
|
<ListItem
|
|
avatar="https://pbs.twimg.com/profile_images/693578804808278017/a5y4h8MN_400x400.png"
|
|
caption="Javi Velasco"
|
|
legend="Frontend engineer at Audiense"
|
|
rightIcon="star"
|
|
/>
|
|
<ListItem
|
|
avatar="https://avatars2.githubusercontent.com/u/559654?v=3&s=460"
|
|
caption="Javi Jiménez"
|
|
legend="Frontend engineer at MediaSmart"
|
|
rightIcon="star"
|
|
/>
|
|
<ListItem
|
|
avatar="https://pbs.twimg.com/profile_images/755797598565531649/Whsf9259.jpg"
|
|
caption="Tobias Van Schneider"
|
|
legend="Designer at Spotify"
|
|
rightIcon="star"
|
|
/>
|
|
</List>
|
|
</div>
|
|
|
|
<h5>Two line options and checkbox items</h5>
|
|
<p>It can be used to embed little checkboxes in the list. These behave as checkboxes.</p>
|
|
<div style={listStyle}>
|
|
<List>
|
|
<ListSubHeader caption="General" />
|
|
<ListItem caption="Profile Photo" legend="Change your Google+ profile photo" />
|
|
<ListItem disabled caption="Show your status" legend="Your status is visible to everyone you use with" />
|
|
</List>
|
|
<ListDivider />
|
|
<List>
|
|
<ListSubHeader caption="Hangout notifications" />
|
|
<ListCheckbox
|
|
caption="Notifications"
|
|
checked={this.state.checkbox1}
|
|
legend="Allow notifications"
|
|
onChange={this.handleCheckboxChange.bind(this, 'checkbox1')}
|
|
/>
|
|
<ListCheckbox
|
|
caption="Sound"
|
|
checked={this.state.checkbox2}
|
|
legend="Hangouts message"
|
|
onChange={this.handleCheckboxChange.bind(this, 'checkbox2')}
|
|
/>
|
|
<ListCheckbox
|
|
caption="Video sounds"
|
|
checked
|
|
disabled
|
|
legend="Hangouts video call"
|
|
/>
|
|
</List>
|
|
</div>
|
|
|
|
<h5>Avatar, single text and icon</h5>
|
|
<p>Similar to a previous one but only with one text line</p>
|
|
<div style={listStyle}>
|
|
<List>
|
|
<ListItem
|
|
avatar="https://pbs.twimg.com/profile_images/614407428/s6pTalMzZs-nusCGWqoV.0_400x400.jpeg"
|
|
caption="Alfonso Rocha"
|
|
rightIcon="mail"
|
|
/>
|
|
<ListItem
|
|
avatar="https://pbs.twimg.com/profile_images/693578804808278017/a5y4h8MN_400x400.png"
|
|
caption="Javi Velasco"
|
|
rightIcon="mail"
|
|
/>
|
|
<ListItem
|
|
avatar="https://avatars2.githubusercontent.com/u/559654?v=3&s=460"
|
|
caption="Javi Jiménez"
|
|
rightIcon="mail"
|
|
/>
|
|
<ListItem
|
|
avatar="https://pbs.twimg.com/profile_images/755797598565531649/Whsf9259.jpg"
|
|
caption="Tobias Van Schneider"
|
|
rightIcon="mail"
|
|
/>
|
|
</List>
|
|
</div>
|
|
|
|
<h5>Simple with just one text line</h5>
|
|
<p>The most simple list.</p>
|
|
<div style={listStyle}>
|
|
<List>
|
|
<ListItem caption="Alfonso Rocha" />
|
|
<ListItem caption="Javi Velasco" />
|
|
<ListItem caption="Javi Jiménez" />
|
|
<ListItem caption="Tobias Van Schneider" />
|
|
<ListDivider />
|
|
<ListItem caption="Other people" />
|
|
</List>
|
|
</div>
|
|
|
|
<h5> List with custom components </h5>
|
|
<p> Using custom components in list item </p>
|
|
<div style={listStyle}>
|
|
<List ripple selectable>
|
|
<ListItem leftIcon="send" rightIcon="done" caption="Reference item" />
|
|
<ListItem rightIcon="done" caption="Item with custom left icons">
|
|
<FontIcon value="send" />
|
|
<Avatar image="https://pbs.twimg.com/profile_images/693578804808278017/a5y4h8MN_400x400.png" />
|
|
</ListItem>
|
|
<ListItem leftIcon="send">
|
|
<ListItemContent caption="custom right icons" legend="ListItemContent acts as a divider" />
|
|
<FontIcon value="done" />
|
|
<FontIcon value="undo" />
|
|
</ListItem>
|
|
<ListItem leftIcon="mail" rightIcon="create">
|
|
<ListItemContent>
|
|
<ListItemText primary> Custom Caption </ListItemText>
|
|
</ListItemContent>
|
|
</ListItem>
|
|
<ListItem leftIcon="save" rightIcon="delete">
|
|
<ListItemContent>
|
|
<ListItemText primary onClick={() => { console.log('clicked caption'); }}>
|
|
Custom caption with events
|
|
</ListItemText>
|
|
<ListItemText> Custom legend with correct height </ListItemText>
|
|
</ListItemContent>
|
|
</ListItem>
|
|
<ListItem caption="Item with a button">
|
|
<Button icon="save" label="save" onClick={() => console.log('clicked button')} />
|
|
</ListItem>
|
|
<ListItem caption="Item with overlayed click events" onClick={() => console.log('clicked row')}>
|
|
<FontIcon value="send" onClick={() => console.log('clicked icon')} />
|
|
<Avatar
|
|
image="https://pbs.twimg.com/profile_images/693578804808278017/a5y4h8MN_400x400.png"
|
|
onMouseDown={() => console.log('avatar mouse down, should see ripple')}
|
|
onClick={() => console.log('clicked avatar')}
|
|
/>
|
|
</ListItem>
|
|
</List>
|
|
</div>
|
|
</section>
|
|
);
|
|
}
|
|
}
|
|
|
|
export default ListTest;
|