Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Time Picker Component #589

Merged
merged 4 commits into from
Apr 28, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/src/app/app-routes.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ var Snackbar = require('./components/pages/components/snackbar.jsx');
var Switches = require('./components/pages/components/switches.jsx');
var Tabs = require('./components/pages/components/tabs.jsx');
var TextFields = require('./components/pages/components/text-fields.jsx');
var TimePicker = require('./components/pages/components/time-picker.jsx');
var Toolbars = require('./components/pages/components/toolbars.jsx');


Expand Down Expand Up @@ -70,6 +71,7 @@ var AppRoutes = (
<Route name="snackbar" handler={Snackbar} />
<Route name="tabs" handler={Tabs} />
<Route name="text-fields" handler={TextFields} />
<Route name="time-picker" handler={TimePicker} />
<Route name="toolbars" handler={Toolbars} />
<Redirect from="/components" to="appbar" />
</Route>
Expand Down
1 change: 1 addition & 0 deletions docs/src/app/components/pages/components.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class Components extends React.Component {
{ route: 'snackbar', text: 'Snackbar'},
{ route: 'tabs', text: 'Tabs'},
{ route: 'text-fields', text: 'Text Fields'},
{ route: 'time-picker', text: 'Time Picker'},
{ route: 'toolbars', text: 'Toolbars'},
];

Expand Down
85 changes: 85 additions & 0 deletions docs/src/app/components/pages/components/time-picker.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
var React = require('react');
var mui = require('mui');
var TimePicker = mui.TimePicker;
var ComponentDoc = require('../../component-doc.jsx');

var TimePickerPage = React.createClass({

render: function() {

var code =
'//The 12hr format \n' +
'<TimePicker\n' +
' format="ampm" \n' +
' hintText="12hr Format" />\n\n' +
'//The 24hr format \n' +
'<TimePicker\n' +
' format="24hr" \n' +
' hintText="24hr Format" /> ';

var componentInfo = [
{
name: 'Props',
infoArray: [
{
name: 'defaultTime',
type: 'date object',
header: 'optional',
desc: 'This is the initial time value of the component.'
},
{
name: 'format',
type: 'one of: ampm, 24hr',
header: 'default: ampm',
desc: 'Tells the component to display the picker in ampm (12hr) format or 24hr format.'
}
]
},
{
name: 'Methods',
infoArray: [
{
name: 'getTime',
header: 'DatePicker.getTime()',
desc: 'Returns the current time value.'
},
{
name: 'setTime',
header: 'DatePicker.setTime(t)',
desc: 'Sets the time value to t, where t is a date object.'
}
]
}
];

return (
<ComponentDoc
name="Time Picker"
code={code}
componentInfo={componentInfo}>

<TimePicker
ref="picker12hr"
format="ampm"
hintText="12hr Format"
onChange={this._changeTimePicker24} />

<TimePicker
ref="picker24hr"
format="24hr"
hintText="24hr Format"
onChange={this._changeTimePicker12} />

</ComponentDoc>
);
},
_changeTimePicker24: function(err, t){
this.refs.picker24hr.setTime(t);
},
_changeTimePicker12: function(err, t){
this.refs.picker12hr.setTime(t);
}

});

module.exports = TimePickerPage;
1 change: 1 addition & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ module.exports = {
Tab: require('./tabs/tab'),
Tabs: require('./tabs/tabs'),
Toggle: require('./toggle'),
TimePicker: require('./time-picker'),
TextField: require('./text-field'),
Toolbar: require('./toolbar/toolbar'),
ToolbarGroup: require('./toolbar/toolbar-group'),
Expand Down
8 changes: 8 additions & 0 deletions src/styles/themes/light-theme.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,14 @@ var LightTheme = {
backgroundColor: '#323232',
actionColor: palette.accent1Color
},
timePicker: {
color: Colors.white,
textColor: Colors.grey600,
accentColor: palette.primary1Color,
clockColor: Colors.black,
selectColor: palette.primary2Color,
selectTextColor: Colors.white
},
toggle: {
thumbOnColor: palette.primary1Color,
thumbOffColor: Colors.grey50,
Expand Down
96 changes: 96 additions & 0 deletions src/time-picker/clock-button.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
var React = require('react');
var StylePropable = require('../mixins/style-propable');
var EnhancedButton = require('../enhanced-button');
var Transitions = require('../styles/transitions');

var ClockButton = React.createClass({

mixins: [StylePropable],

contextTypes: {
theme: React.PropTypes.object
},

propTypes: {
position: React.PropTypes.oneOf(['left', 'right'])
},

getDefaultProps: function () {
return {
position: "left"
};
},
_handleTouchTap: function(){

this.setState({
selected: true
})
this.props.onTouchTap();
},
getTheme: function() {
return this.context.theme.component.timePicker;
},
render: function() {

var {
className,
...other} = this.props;

var styles = {
root: {
position: "absolute",
bottom: "65px",
pointerEvents: "auto",
height: "50px",
width: "50px",
borderRadius: "100%"
},

label : {
position: "absolute",
top: "17px",
left: "14px"
},

select: {
position: 'absolute',
height: 50,
width: 50,
top: "0px",
left: "0px",
opacity: 0,
borderRadius: '50%',
transform: 'scale(0)',
transition: Transitions.easeOut(),
backgroundColor: this.getTheme().accentColor,
},
};

if (this.props.selected) {
styles.label.color = this.getTheme().selectTextColor;
styles.select.opacity = 1;
styles.select.transform = 'scale(1)';
}

if( this.props.position == "right" ){
styles.root.right = "5px";
}else{
styles.root.left = "5px";
}



return (
<EnhancedButton {...other}
style={this.mergeAndPrefix(styles.root)}
disableFocusRipple={true}
disableTouchRipple={true}
onTouchTap={this._handleTouchTap}>
<span style={this.mergeAndPrefix(styles.select)} />
<span style={this.mergeAndPrefix(styles.label)} >{this.props.children}</span>
</EnhancedButton>
);
}
});

module.exports = ClockButton;
Loading