Обходным решением является добавление прослушивателя событий в customEditor. В то время как левый и правый все еще могут перемещаться по календарю, установить его состояние и продолжать отслеживать.
constructor(props) {
super(props);
this.state = {
dateEditor: props.value,
selectedDate: props.value
};
this.handleChange = this.handleChange.bind(this);
}
componentDidMount() {
document.addEventListener('keydown', this.handleKeyDown, true);
}
componentWillUnmount() {
document.removeEventListener('keydown', this.handleKeyDown, true);
}
handleKeyDown = (e) => {
if (e.keyCode === 37) {
// Arrow left subtract one day
this.setState({ selectedDate: moment(this.state.selectedDate).subtract(1, 'days').format('L')});
}
if (e.keyCode === 39) {
// Arrow right add one day
this.setState({ selectedDate: moment(this.state.selectedDate).add(1, 'days').format('L')});
}
if (e.keyCode === 13) {
// Enter will commit selected date
let value = this.state.selectedDate;
this.setState({ ["dateEditor"]: value }, () => this.props.onCommit());
}
};