UNPKG

@material-ui/lab

Version:

Material-UI Lab - Incubator for Material-UI React components.

109 lines (81 loc) 3.52 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.createPickerRender = createPickerRender; exports.getAllByMuiTest = getAllByMuiTest; exports.getByMuiTest = getByMuiTest; exports.openDesktopPicker = openDesktopPicker; exports.openMobilePicker = openMobilePicker; exports.queryAllByMuiTest = exports.queryByMuiTest = exports.FakeTransitionComponent = exports.adapterToUse = exports.AdapterClassToUse = void 0; var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var React = _interopRequireWildcard(require("react")); var _dateFns = require("date-fns"); var _utils = require("test/utils"); var _pure = require("@testing-library/react/pure"); var _dateFns2 = _interopRequireDefault(require("../../dateAdapter/date-fns")); var _LocalizationProvider = _interopRequireDefault(require("../../LocalizationProvider")); // TODO make possible to pass here any utils using cli /** * Wrapper around `@date-io/date-fns` that resolves https://github.com/dmtrKovalenko/date-io/issues/479. * We're not using `adapter.date` in the implementation which means the implementation is safe. * But we do use it in tests where usage of ISO dates without timezone is problematic */ class AdapterClassToUse extends _dateFns2.default { date(value) { if (typeof value === 'string') { return (0, _dateFns.parseISO)(value); } return super.date(value); } } exports.AdapterClassToUse = AdapterClassToUse; const adapterToUse = new AdapterClassToUse(); exports.adapterToUse = adapterToUse; const FakeTransitionComponent = /*#__PURE__*/React.forwardRef(function FakeTransitionComponent({ children }, ref) { // set tabIndex in case it is used as a child of <TrapFocus /> return /*#__PURE__*/React.createElement("div", { ref: ref, tabIndex: -1 }, children); }); exports.FakeTransitionComponent = FakeTransitionComponent; function createPickerRender(_ref) { let { locale } = _ref, renderOptions = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["locale"]); const clientRender = (0, _utils.createClientRender)(renderOptions); return node => clientRender( /*#__PURE__*/React.createElement(_LocalizationProvider.default, { locale: locale, dateAdapter: AdapterClassToUse }, node)); } const queryByMuiTest = _pure.queryHelpers.queryByAttribute.bind(null, 'data-mui-test'); exports.queryByMuiTest = queryByMuiTest; const queryAllByMuiTest = _pure.queryHelpers.queryAllByAttribute.bind(null, 'data-mui-test'); exports.queryAllByMuiTest = queryAllByMuiTest; function getAllByMuiTest(id, container = document.body, options) { const els = queryAllByMuiTest(container, id, options); if (!els.length) { throw _pure.queryHelpers.getElementError(`Unable to find an element by: [data-mui-test="${id}"]`, container); } return els; } function getByMuiTest(...args) { const result = getAllByMuiTest(...args); if (result.length > 0) { return result[0]; } throw _pure.queryHelpers.getElementError(`Unable to find an element by: [data-mui-test="${args[0]}"]`, document.body); } function openDesktopPicker() { _utils.fireEvent.click(_utils.screen.getByLabelText(/choose date/i)); } function openMobilePicker() { _utils.fireEvent.click(_utils.screen.getByRole('textbox')); }