UNPKG

wix-style-react

Version:
76 lines (64 loc) 3.07 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } import inputDriverFactory from '../Input/Input.driver'; import calendarDriverFactory from '../Calendar/Calendar.driver'; import popoverDriverFactory from '../Popover/Popover.driver'; import { dataHooks } from './constants'; var datePickerDriverFactory = function datePickerDriverFactory(_ref) { var element = _ref.element; var popoverElement = element.querySelector("[data-hook=".concat(dataHooks.datePickerPopover, "]")); var popoverContent = function popoverContent() { return popoverDriverFactory({ element: popoverElement }).getContentElement(); }; var calendarTestkit = function calendarTestkit() { return calendarDriverFactory({ element: popoverContent() }); }; var calendarDriver = _objectSpread({}, Object.keys(calendarDriverFactory({ element: element })).reduce(function (prev, current) { return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, current, function (args) { if (current === 'isVisible') { return popoverDriverFactory({ element: popoverElement }).isContentElementExists(); } if (current === 'mouseClickOutside') { return popoverDriverFactory({ element: popoverElement }).clickOutside(); } return calendarTestkit()[current](args); })); }, {})); // 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. var inputElement = popoverDriverFactory({ element: popoverElement }).getTargetElement().querySelector('[data-size]'); var inputDriver = inputDriverFactory({ element: inputElement }); var driver = { exists: function exists() { return !!element; }, open: function open() { return inputDriver.focus(); }, getWidth: function getWidth() { return element.style.width; } }; return { exists: driver.exists, driver: driver, inputDriver: inputDriver, calendarDriver: calendarDriver }; }; export default datePickerDriverFactory;