Skip to content

Instantly share code, notes, and snippets.

@ryanflorence
Created September 25, 2015 17:24
Show Gist options
  • Save ryanflorence/e5d414d4f54ac60c39c0 to your computer and use it in GitHub Desktop.
Save ryanflorence/e5d414d4f54ac60c39c0 to your computer and use it in GitHub Desktop.
import React from 'react'
import $ from 'jquery'
import 'jquery-ui/datepicker'
import 'jquery-ui/themes/ui-lightness/jquery-ui.css'
var Datepicker = React.createClass({
getDefaultProps() {
return {
onChange() {}
}
},
getNode() {
var node = React.findDOMNode(this)
return $(node)
},
componentDidMount() {
this.getNode().datepicker({
onSelect: this.props.onChange,
onClose: () => {
this.props.onClose()
},
defaultDate: this.props.value,
})
},
componentDidUpdate(prevProps) {
if (prevProps.isOpen !== this.props.isOpen)
if (this.props.isOpen)
this.getNode().datepicker('show')
else
this.getNode().datepicker('hide')
},
handleChange(event) {
this.props.onChange(event.target.value)
},
render() {
console.log(this.props.value)
return <input {...this.props} onChange={this.handleChange}/>
}
})
var App = React.createClass({
getInitialState() {
var date = new Date()
return {
date: `${date.getMonth()+1}/${date.getDate()+1}/${date.getFullYear()}`,
datepickerIsOpen: false
}
},
handleDateChange(date) {
this.setState({ date })
},
toggleDatepicker() {
this.setState({
datepickerIsOpen: true
})
},
render() {
return (
<div>
<h1>Datepicker!</h1>
<p>{this.state.date}</p>
<button onClick={this.toggleDatepicker}>toggle</button>
<Datepicker
value={this.state.date}
onChange={this.handleDateChange}
isOpen={this.state.datepickerIsOpen}
onClose={() => this.setState({ datepickerIsOpen: false })}
/>
</div>
)
}
})
React.render(<App/>, document.getElementById('app'))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment