onChange: PropTypes.func,
onOpen: PropTypes.func,
onClose: PropTypes.func,
+ onFocus: PropTypes.func,
+ onBlur: PropTypes.func,
addon: PropTypes.func,
name: PropTypes.string,
autoComplete: PropTypes.string,
onChange: noop,
onOpen: noop,
onClose: noop,
+ onFocus: noop,
+ onBlur: noop,
addon: noop,
use12Hours: false,
};
const {
prefixCls, placeholder, placement, align,
disabled, transitionName, style, className, getPopupContainer, name, autoComplete,
+ onFocus, onBlur,
} = this.props;
const { open, value } = this.state;
const popupClassName = this.getPopupClassName();
onKeyDown={this.onKeyDown}
disabled={disabled} value={value && value.format(this.getFormat()) || ''}
autoComplete={autoComplete}
+ onFocus={onFocus}
+ onBlur={onBlur}
/>
<span className={`${prefixCls}-icon`}/>
</span>
});
});
});
+
+ describe('other operations', () => {
+ it('focus/blur correctly', (done) => {
+ let focus = false;
+ let blur = false;
+
+ const picker = renderPicker({
+ onFocus: () => {
+ focus = true;
+ },
+ onBlur: () => {
+ blur = true;
+ },
+ });
+ expect(picker.state.open).not.to.be.ok();
+ const input = TestUtils.scryRenderedDOMComponentsWithClass(picker,
+ 'rc-time-picker-input')[0];
+
+ async.series([(next) => {
+ Simulate.focus(input);
+ setTimeout(next, 100);
+ }, (next) => {
+ expect(picker.state.open).to.be(false);
+
+ Simulate.blur(input);
+ setTimeout(next, 100);
+ }, (next) => {
+ expect(focus).to.be(true);
+ expect(blur).to.be(true);
+
+ next();
+ }], () => {
+ done();
+ });
+ });
+ });
});