wix-style-react
Version:
wix-style-react
58 lines • 2.38 kB
JavaScript
import inputDriverFactory from '../Input/Input.driver';
import calendarDriverFactory from '../Calendar/Calendar.driver';
import { popoverLegacyDriverFactory } from '../Popover/Popover.driver';
import { dataHooks } from './constants';
const datePickerDriverFactory = ({ element, eventTrigger }) => {
const popoverElement = element.querySelector(`[data-hook=${dataHooks.datePickerPopover}]`);
const popoverContent = () => popoverLegacyDriverFactory({ element: popoverElement }).getContentElement();
const calendarTestkit = () => calendarDriverFactory({ element: popoverContent() });
const calendarDriver = {
...Object.keys(calendarDriverFactory({ element })).reduce((prev, current) => ({
...prev,
[current]: args => {
if (current === 'isVisible') {
return popoverLegacyDriverFactory({
element: popoverElement,
}).isContentElementExists();
}
if (current === 'mouseClickOutside') {
return popoverLegacyDriverFactory({
element: popoverElement,
}).clickOutside();
}
return calendarTestkit()[current](args);
},
}), {}),
};
const popoverDriver = popoverLegacyDriverFactory({ element: popoverElement });
// here we have a dirty hack for getting input element directly
// this is not the best wayt to do it, but knowing that we exposed
// input datahook - we cannot change this for now.
const inputElement = popoverLegacyDriverFactory({ element: popoverElement })
.getTargetElement()
.querySelector('[data-size]');
const inputDriver = inputDriverFactory({
element: inputElement,
eventTrigger,
});
const driver = {
exists: () => !!element,
open: () => {
inputDriver.click();
inputDriver.trigger('keyDown', {
key: 'ArrowUp',
keyCode: 38,
});
},
getWidth: () => element.style.width,
clickOutside: () => popoverDriver.clickOutside(),
};
return {
exists: driver.exists,
driver,
inputDriver,
calendarDriver,
};
};
export default datePickerDriverFactory;
//# sourceMappingURL=DatePicker.driver.js.map