UNPKG

ldx-widgets

Version:

widgets

97 lines (78 loc) 2.57 kB
React = require 'react' createClass = require 'create-react-class' PropTypes = require 'prop-types' ReactDatepicker = React.createFactory(require('react-datepicker').default) moment = require 'moment' _ = require 'lodash' {div, span} = React.DOM DatePicker = createClass displayName: 'DatePicker' propTypes: placeholderText: PropTypes.oneOfType [ PropTypes.string PropTypes.number ] dateFormat: PropTypes.string wrapperClass: PropTypes.string className: PropTypes.string minDate: PropTypes.object maxDate: PropTypes.object onChange: PropTypes.func.isRequired tabIndex: PropTypes.number hasDefaultDate: PropTypes.bool selected: PropTypes.oneOfType [ PropTypes.string PropTypes.object ] getDefaultProps: -> hasDefaultDate: yes # yes to have a default date in the date picker placeholderText: 'Select a date' dateFormat: 'MM/DD/YYYY' className: null includeTime: no # yes to include time selection returnDateString: null # pass a date format string to get that format from the getValue method onChange: -> getInitialState: -> {hasDefaultDate} = @props # set initial state for selected # if selected is in props and hasDefaultDate value then props.selected date else if hasDefaultDate then today's date else null if hasDefaultDate and @props.selected? selected = @props.selected else if hasDefaultDate selected = moment() else selected = null { selected: selected } componentWillReceiveProps: (nextProps) -> if nextProps.selected?.format(@props.returnDateString or @props.dateFormat) isnt @props.selected?.format(@props.returnDateString or @props.dateFormat) @setState selected: nextProps.selected render: -> props = _.clone(@props) props.onChange = @handleDateChange {wrapperClass} = props mainClass = 'datepicker-wrapper' mainClass += " #{wrapperClass}" if wrapperClass? div { className: mainClass }, ReactDatepicker(props) handleDateChange: (date) -> @setState selected: date , => @props.onChange?(date) getValue: -> {returnDateString, hasDefaultDate} = @props {selected} = @state # if hasDefaultDate is false and nothing is selected then return an empty string if returnDateString? and selected? selected.format(returnDateString) else if selected? selected else if hasDefaultDate moment() else '' module.exports = DatePicker