Skip to content

Instantly share code, notes, and snippets.

@joeainsworth
Created November 14, 2017 11:55
Show Gist options
  • Save joeainsworth/a7daa1849c7ea8b603eaadd39b4bd93c to your computer and use it in GitHub Desktop.
Save joeainsworth/a7daa1849c7ea8b603eaadd39b4bd93c to your computer and use it in GitHub Desktop.
import React from 'react';
import PropTypes from 'prop-types';
import DatePicker from 'react-datepicker';
import moment from 'moment';
class SocialPostDates extends React.Component {
constructor(props) {
super(props);
}
static propTypes = {
scheduled_dates: PropTypes.array.isRequired,
updateScheduledDates: PropTypes.func.isRequired
};
componentWillReceiveProps(nextProps) {
if (nextProps.scheduled_dates.length) {
console.log(this.props.scheduled_dates);
}
};
updateScheduledDate = (index, date) => {
const scheduled_dates = [...this.props.scheduled_dates]
scheduled_dates[index] = date;
this.props.updateScheduledDates(scheduled_dates);
};
removeScheduledDate = (index) => {
const scheduled_dates = [...this.props.scheduled_dates]
scheduled_dates.splice(index, 1);
this.props.updateScheduledDates(scheduled_dates);
}
handleChange = (date, index) => {
this.updateScheduledDate(index, date);
};
render() {
let length = this.props.scheduled_dates.length;
return (
<div className="control-group" data-validate-visible="true" data-required="true">
<label className="control-label">Schedule at</label>
{this.props.scheduled_dates.map((date, index) => {
let button;
if (length === index + 1) {
button = (
<button type="button" className="icon-btn">
<i className="icon icon--plus"></i>
</button>
)
} else {
button = (
<button type="button" className="icon-btn"
onClick={(e) => this.removeScheduledDate(index)}>
<i className="icon icon--cross"></i>
</button>
)
};
return(
<div className="controls" style={{marginBottom: 15 + 'px'}}>
<div class="control-row aiir-sp-multischedule__row">
<div class="control-cell aiir-sp-multischedule__cell">
<div>
<DatePicker
selected={date}
onChange={(e) => this.handleChange(e, index)}
showTimeSelect
timeFormat="HH:mm"
timeIntervals={5}
dateFormat="LLL"
key={index}
/>
</div>
</div>
<div className="control-cell aiir-sp-multischedule__cell">
{button}
</div>
</div>
</div>
)
})}
</div>
)
}
}
export default SocialPostDates;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment