) {
[`${prefixCls}-rtl`]: direction === 'rtl',
})}
style={style}
+ onClick={onPickerClick}
+ onMouseDown={onPickerMouseDown}
{...getDataOrAriaProps(props)}
>
{
expect(wrapper.isOpen()).toBeFalsy();
});
});
+
+ describe('click at non-input elements', () => {
+ it('should focus on the first element by default', () => {
+ jest.useFakeTimers();
+ const wrapper = mount();
+ wrapper.find('.rc-picker').simulate('click');
+ expect(wrapper.isOpen()).toBeTruthy();
+ jest.runAllTimers();
+ expect(document.activeElement).toStrictEqual(
+ wrapper
+ .find('input')
+ .first()
+ .getDOMNode(),
+ );
+ jest.useRealTimers();
+ });
+ it('should focus on the second element if first is disabled', () => {
+ jest.useFakeTimers();
+ const wrapper = mount();
+ wrapper.find('.rc-picker').simulate('click');
+ expect(wrapper.isOpen()).toBeTruthy();
+ jest.runAllTimers();
+ expect(document.activeElement).toStrictEqual(
+ wrapper
+ .find('input')
+ .last()
+ .getDOMNode(),
+ );
+ jest.useRealTimers();
+ });
+ it("shouldn't let mousedown blur the input", () => {
+ jest.useFakeTimers();
+ const preventDefault = jest.fn();
+ const wrapper = mount(, {
+ attachTo: document.body,
+ });
+ wrapper.find('.rc-picker').simulate('click');
+ jest.runAllTimers();
+ wrapper.find('.rc-picker').simulate('mousedown', {
+ preventDefault,
+ });
+ expect(wrapper.isOpen()).toBeTruthy();
+ expect(preventDefault).toHaveBeenCalled();
+ jest.useRealTimers();
+ });
+ });
});