UNPKG

wix-style-react

Version:
58 lines 2.38 kB
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