UNPKG

@wix/design-system

Version:

@wix/design-system

4,059 lines 162 kB
"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _react2 = require("../../utils/test-utils/react");
var _unit = require("../../utils/test-utils/unit");
var _TimeInputPrivateUni = require("./TimeInput.private.uni.driver");
var _TimeInput = require("../TimeInput");
var _TimeInputUtils = require("../TimeInputUtils");
var _WixStyleReactEnvironmentProvider = require("../../WixStyleReactEnvironmentProvider");
var _InputSt = require("../../Input/Input.st.css");
var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/TimeInput/test/TimeInput.spec.jsx",
  _this = void 0;
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
describe(_TimeInput.TimeInput.displayName, function () {
  var render = (0, _unit.createRendererWithUniDriver)(_TimeInputPrivateUni.TimeInputPrivateDriverFactory);
  beforeAll(function () {
    var OriginalDateTimeFormat = Intl.DateTimeFormat;
    vi.spyOn(global.Intl, 'DateTimeFormat').mockImplementation(function (locale, options) {
      return new OriginalDateTimeFormat(locale, _objectSpread(_objectSpread({}, options), {}, {
        numberingSystem: 'latn'
      }));
    });
  });
  afterAll(function () {
    vi.restoreAllMocks();
  });
  describe('backgroundColor prop', function () {
    it('should pass the background color down to the input', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee() {
      var _render, container, inputRoot;
      return _regenerator().w(function (_context) {
        while (1) switch (_context.n) {
          case 0:
            _render = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              backgroundColor: "green",
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 31,
                columnNumber: 36
              }
            })), container = _render.container;
            inputRoot = container.querySelector('[data-input-root]');
            expect(inputRoot.style.getPropertyValue(_InputSt.vars['input-background'])).toBe('green');
          case 1:
            return _context.a(2);
        }
      }, _callee);
    })));
  });
  describe('onChange', function () {
    it("should call onChange with selected date as a parameter [when] second time slot in a list is chosen and value is confirmed", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee2() {
      var onChange, value, _render2, driver, timeSlots;
      return _regenerator().w(function (_context2) {
        while (1) switch (_context2.n) {
          case 0:
            onChange = vi.fn();
            value = new Date('2020-01-01 00:00');
            _render2 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              onChange: onChange,
              value: value,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 46,
                columnNumber: 9
              }
            })), driver = _render2.driver;
            timeSlots = (0, _TimeInputUtils.getTimeSlots)({
              value: value,
              timeStyle: _TimeInput.DEFAULT_TIME_STYLE,
              locale: 'en',
              step: _TimeInput.DEFAULT_STEP
            });
            _context2.n = 1;
            return driver.clickOnInput();
          case 1:
            _context2.n = 2;
            return driver.selectOptionAt(1);
          case 2:
            _context2.n = 3;
            return driver.confirmValue();
          case 3:
            expect(onChange).toHaveBeenCalledWith({
              date: new Date(timeSlots[1].id)
            });
          case 4:
            return _context2.a(2);
        }
      }, _callee2);
    })));
    it('should call onChange one time [when] time slot is selected from dropdown and value is confirmed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee3() {
      var onChange, _render3, driver;
      return _regenerator().w(function (_context3) {
        while (1) switch (_context3.n) {
          case 0:
            onChange = vi.fn();
            _render3 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              onChange: onChange,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 67,
                columnNumber: 33
              }
            })), driver = _render3.driver;
            _context3.n = 1;
            return driver.clickOnInput();
          case 1:
            expect(onChange).not.toHaveBeenCalled();
            _context3.n = 2;
            return driver.selectOptionAt(1);
          case 2:
            expect(onChange).toHaveBeenCalledTimes(1);
            _context3.n = 3;
            return driver.confirmValue();
          case 3:
            expect(onChange).toHaveBeenCalledTimes(1);
          case 4:
            return _context3.a(2);
        }
      }, _callee3);
    })));
    it("should call onChange with date object [when] manually typing time value and confirming it", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee4() {
      var onChange, value, _render4, driver;
      return _regenerator().w(function (_context4) {
        while (1) switch (_context4.n) {
          case 0:
            onChange = vi.fn();
            value = new Date('2020-01-01 00:00');
            _render4 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              onChange: onChange,
              value: value,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 83,
                columnNumber: 9
              }
            })), driver = _render4.driver;
            _context4.n = 1;
            return driver.setValue('12:48');
          case 1:
            _context4.n = 2;
            return driver.confirmValue();
          case 2:
            expect(onChange).toHaveBeenCalledWith({
              date: new Date('2020-01-01 12:48')
            });
          case 3:
            return _context4.a(2);
        }
      }, _callee4);
    })));
    it("should call onChange with date object [when] time from dropdown is typed in and value is confirmed", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee5() {
      var onChange, _render5, driver;
      return _regenerator().w(function (_context5) {
        while (1) switch (_context5.n) {
          case 0:
            onChange = vi.fn();
            _render5 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              onChange: onChange,
              locale: "en",
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 95,
                columnNumber: 33
              }
            })), driver = _render5.driver;
            _context5.n = 1;
            return driver.setValue('12:00 PM');
          case 1:
            _context5.n = 2;
            return driver.confirmValue();
          case 2:
            expect(onChange).toHaveBeenCalled();
          case 3:
            return _context5.a(2);
        }
      }, _callee5);
    })));
    it("should call onChange with null [when] clears value and confirms it", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee6() {
      var onChange, _render6, driver;
      return _regenerator().w(function (_context6) {
        while (1) switch (_context6.n) {
          case 0:
            onChange = vi.fn();
            _render6 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              onChange: onChange,
              value: new Date(),
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 106,
                columnNumber: 9
              }
            })), driver = _render6.driver;
            _context6.n = 1;
            return driver.setValue('');
          case 1:
            _context6.n = 2;
            return driver.confirmValue();
          case 2:
            expect(onChange).toHaveBeenCalledWith({
              date: null
            });
          case 3:
            return _context6.a(2);
        }
      }, _callee6);
    })));
  });
  describe('onInvalid', function () {
    it('should call onInvalid only once', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee7() {
      var onInvalid, MockedComponent, _render7, driver, invalidValue;
      return _regenerator().w(function (_context7) {
        while (1) switch (_context7.n) {
          case 0:
            onInvalid = vi.fn();
            MockedComponent = function MockedComponent() {
              var _React$useState = _react["default"].useState(),
                _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
                _invalidValue = _React$useState2[0],
                setInvalidValue = _React$useState2[1];
              var handleInvalid = function handleInvalid(value) {
                onInvalid();
                setInvalidValue(value);
              };
              return /*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                size: "medium",
                onInvalid: handleInvalid,
                value: null,
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 131,
                  columnNumber: 11
                }
              });
            };
            _render7 = render(/*#__PURE__*/_react["default"].createElement(MockedComponent, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 135,
                columnNumber: 33
              }
            })), driver = _render7.driver;
            invalidValue = 'typing time';
            _context7.n = 1;
            return driver.setValue(invalidValue);
          case 1:
            _context7.n = 2;
            return driver.blur();
          case 2:
            expect(onInvalid).toHaveBeenCalledTimes(1);
          case 3:
            return _context7.a(2);
        }
      }, _callee7);
    })));
    it('should call onInvalid with "formatError" [when] user types invalid value', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee8() {
      var onInvalid, _render8, driver, invalidValue;
      return _regenerator().w(function (_context8) {
        while (1) switch (_context8.n) {
          case 0:
            onInvalid = vi.fn();
            _render8 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              onInvalid: onInvalid,
              invalidMessage: "Invalid message",
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 147,
                columnNumber: 9
              }
            })), driver = _render8.driver;
            invalidValue = 'typing time';
            _context8.n = 1;
            return driver.setValue(invalidValue);
          case 1:
            expect(onInvalid).toHaveBeenCalledWith({
              validationType: 'formatError',
              value: invalidValue
            });
          case 2:
            return _context8.a(2);
        }
      }, _callee8);
    })));
    it('should call onInvalid and not call onChange [when] user types value that can`t be parsed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee9() {
      var onInvalid, onChange, _render9, driver, invalidValue;
      return _regenerator().w(function (_context9) {
        while (1) switch (_context9.n) {
          case 0:
            onInvalid = vi.fn();
            onChange = vi.fn();
            _render9 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              onInvalid: onInvalid,
              onChange: onChange,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 164,
                columnNumber: 9
              }
            })), driver = _render9.driver;
            invalidValue = '12a';
            _context9.n = 1;
            return driver.setValue(invalidValue);
          case 1:
            _context9.n = 2;
            return driver.confirmValue();
          case 2:
            expect(onInvalid).toHaveBeenCalledWith({
              validationType: 'formatError',
              value: invalidValue
            });
            expect(onChange).not.toHaveBeenCalled();
          case 3:
            return _context9.a(2);
        }
      }, _callee9);
    })));
    it('should call onInvalid and not call onChange [when] user types invalid numbers', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee0() {
      var onInvalid, onChange, _render0, driver, invalidValue;
      return _regenerator().w(function (_context0) {
        while (1) switch (_context0.n) {
          case 0:
            onInvalid = vi.fn();
            onChange = vi.fn();
            _render0 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              onInvalid: onInvalid,
              onChange: onChange,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 182,
                columnNumber: 9
              }
            })), driver = _render0.driver;
            invalidValue = '27:99 PM';
            _context0.n = 1;
            return driver.setValue(invalidValue);
          case 1:
            _context0.n = 2;
            return driver.confirmValue();
          case 2:
            expect(onInvalid).toHaveBeenCalledWith({
              validationType: 'formatError',
              value: invalidValue
            });
            expect(onChange).not.toHaveBeenCalled();
          case 3:
            return _context0.a(2);
        }
      }, _callee0);
    })));
    it('should not call onInvalid and not set status to `error` [when] user clears value and confirms it', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee1() {
      var status, onInvalid, _render1, driver, _t;
      return _regenerator().w(function (_context1) {
        while (1) switch (_context1.n) {
          case 0:
            status = 'error';
            onInvalid = vi.fn();
            _render1 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              value: new Date(),
              onInvalid: onInvalid,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 199,
                columnNumber: 9
              }
            })), driver = _render1.driver;
            _context1.n = 1;
            return driver.setValue('');
          case 1:
            _context1.n = 2;
            return driver.confirmValue();
          case 2:
            _t = expect;
            _context1.n = 3;
            return driver.hasStatus(status);
          case 3:
            _t(_context1.v).toBe(false);
            expect(onInvalid).not.toHaveBeenCalled();
          case 4:
            return _context1.a(2);
        }
      }, _callee1);
    })));
  });
  describe('user interactions', function () {
    it("dropdown opens [when] clicked on input", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee10() {
      var _render10, driver, _t2;
      return _regenerator().w(function (_context10) {
        while (1) switch (_context10.n) {
          case 0:
            _render10 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 212,
                columnNumber: 33
              }
            })), driver = _render10.driver;
            _context10.n = 1;
            return driver.clickOnInput();
          case 1:
            _t2 = expect;
            _context10.n = 2;
            return driver.isDropdownShown();
          case 2:
            _t2(_context10.v).toBe(true);
          case 3:
            return _context10.a(2);
        }
      }, _callee10);
    })));
    it("dropdown closes [when] option is selected", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee14() {
      var _render11, driver, _t4;
      return _regenerator().w(function (_context14) {
        while (1) switch (_context14.n) {
          case 0:
            _render11 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 219,
                columnNumber: 33
              }
            })), driver = _render11.driver;
            _context14.n = 1;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee11() {
              return _regenerator().w(function (_context11) {
                while (1) switch (_context11.n) {
                  case 0:
                    _context11.n = 1;
                    return driver.clickOnInput();
                  case 1:
                    return _context11.a(2);
                }
              }, _callee11);
            })));
          case 1:
            _t4 = expect;
            _context14.n = 2;
            return driver.isDropdownShown();
          case 2:
            _t4(_context14.v).toBe(true);
            _context14.n = 3;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee12() {
              return _regenerator().w(function (_context12) {
                while (1) switch (_context12.n) {
                  case 0:
                    _context12.n = 1;
                    return driver.selectOptionAt(1);
                  case 1:
                    return _context12.a(2);
                }
              }, _callee12);
            })));
          case 3:
            _context14.n = 4;
            return (0, _react2.waitFor)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee13() {
              var _t3;
              return _regenerator().w(function (_context13) {
                while (1) switch (_context13.n) {
                  case 0:
                    _t3 = expect;
                    _context13.n = 1;
                    return driver.isDropdownShown();
                  case 1:
                    _t3(_context13.v).toBe(false);
                  case 2:
                    return _context13.a(2);
                }
              }, _callee13);
            })));
          case 4:
            return _context14.a(2);
        }
      }, _callee14);
    })));
    it("dropdown closes [when] clicked outside", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee19() {
      var _render12, driver;
      return _regenerator().w(function (_context19) {
        while (1) switch (_context19.n) {
          case 0:
            _render12 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 237,
                columnNumber: 33
              }
            })), driver = _render12.driver;
            _context19.n = 1;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee15() {
              return _regenerator().w(function (_context15) {
                while (1) switch (_context15.n) {
                  case 0:
                    _context15.n = 1;
                    return driver.clickOnInput();
                  case 1:
                    return _context15.a(2);
                }
              }, _callee15);
            })));
          case 1:
            _context19.n = 2;
            return (0, _react2.waitFor)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee16() {
              var _t5;
              return _regenerator().w(function (_context16) {
                while (1) switch (_context16.n) {
                  case 0:
                    _t5 = expect;
                    _context16.n = 1;
                    return driver.isDropdownShown();
                  case 1:
                    _t5(_context16.v).toBe(true);
                  case 2:
                    return _context16.a(2);
                }
              }, _callee16);
            })));
          case 2:
            _context19.n = 3;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee17() {
              return _regenerator().w(function (_context17) {
                while (1) switch (_context17.n) {
                  case 0:
                    _context17.n = 1;
                    return driver.clickOutside();
                  case 1:
                    return _context17.a(2);
                }
              }, _callee17);
            })));
          case 3:
            _context19.n = 4;
            return (0, _react2.waitFor)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee18() {
              var _t6;
              return _regenerator().w(function (_context18) {
                while (1) switch (_context18.n) {
                  case 0:
                    _t6 = expect;
                    _context18.n = 1;
                    return driver.isDropdownShown();
                  case 1:
                    _t6(_context18.v).toBe(false);
                  case 2:
                    return _context18.a(2);
                }
              }, _callee18);
            })));
          case 4:
            return _context19.a(2);
        }
      }, _callee19);
    })));
    it("input value is set [when] option from dropdown is selected", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee20() {
      var value, step, _render13, driver, _t7;
      return _regenerator().w(function (_context20) {
        while (1) switch (_context20.n) {
          case 0:
            value = new Date('2020-05-06 00:00');
            step = 15;
            _render13 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              value: value,
              step: step,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 259,
                columnNumber: 33
              }
            })), driver = _render13.driver;
            _context20.n = 1;
            return driver.clickOnInput();
          case 1:
            _context20.n = 2;
            return driver.selectOptionAt(1);
          case 2:
            _t7 = expect;
            _context20.n = 3;
            return driver.getInputValue();
          case 3:
            _t7(_context20.v).toBe('12:15 AM');
          case 4:
            return _context20.a(2);
        }
      }, _callee20);
    })));
    it('should close dropdown [when] Escape is pressed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee24() {
      var _render14, driver;
      return _regenerator().w(function (_context24) {
        while (1) switch (_context24.n) {
          case 0:
            _render14 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 267,
                columnNumber: 33
              }
            })), driver = _render14.driver;
            _context24.n = 1;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee21() {
              return _regenerator().w(function (_context21) {
                while (1) switch (_context21.n) {
                  case 0:
                    _context21.n = 1;
                    return driver.clickOnInput();
                  case 1:
                    return _context21.a(2);
                }
              }, _callee21);
            })));
          case 1:
            _context24.n = 2;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee22() {
              return _regenerator().w(function (_context22) {
                while (1) switch (_context22.n) {
                  case 0:
                    _context22.n = 1;
                    return driver.pressKey('Escape');
                  case 1:
                    return _context22.a(2);
                }
              }, _callee22);
            })));
          case 2:
            _context24.n = 3;
            return (0, _react2.waitFor)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee23() {
              var _t8;
              return _regenerator().w(function (_context23) {
                while (1) switch (_context23.n) {
                  case 0:
                    _t8 = expect;
                    _context23.n = 1;
                    return driver.isDropdownShown();
                  case 1:
                    _t8(_context23.v).toBe(false);
                  case 2:
                    return _context23.a(2);
                }
              }, _callee23);
            })));
          case 3:
            return _context24.a(2);
        }
      }, _callee24);
    })));
    it('should close dropdown [when] Enter is pressed and no option is highlighted', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee25() {
      var _render15, driver, _t9;
      return _regenerator().w(function (_context25) {
        while (1) switch (_context25.n) {
          case 0:
            _render15 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 282,
                columnNumber: 33
              }
            })), driver = _render15.driver;
            _context25.n = 1;
            return driver.clickOnInput();
          case 1:
            _context25.n = 2;
            return driver.setValue('13');
          case 2:
            _context25.n = 3;
            return driver.pressKey('Enter');
          case 3:
            _t9 = expect;
            _context25.n = 4;
            return driver.isDropdownShown();
          case 4:
            _t9(_context25.v).toBe(false);
          case 5:
            return _context25.a(2);
        }
      }, _callee25);
    })));
    it('should open dropdown [when] ArrowDown is pressed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee26() {
      var _render16, driver, _t0;
      return _regenerator().w(function (_context26) {
        while (1) switch (_context26.n) {
          case 0:
            _render16 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 292,
                columnNumber: 33
              }
            })), driver = _render16.driver;
            _context26.n = 1;
            return driver.pressKey('ArrowDown');
          case 1:
            _t0 = expect;
            _context26.n = 2;
            return driver.isDropdownShown();
          case 2:
            _t0(_context26.v).toBe(true);
          case 3:
            return _context26.a(2);
        }
      }, _callee26);
    })));
    it('should not close dropdown and add space to input value [when] option is hovered and Spacebar is pressed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee27() {
      var _render17, driver, _t1;
      return _regenerator().w(function (_context27) {
        while (1) switch (_context27.n) {
          case 0:
            _render17 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 300,
                columnNumber: 33
              }
            })), driver = _render17.driver;
            _context27.n = 1;
            return driver.setValue('16');
          case 1:
            _context27.n = 2;
            return driver.pressKey('Spacebar');
          case 2:
            _t1 = expect;
            _context27.n = 3;
            return driver.isDropdownShown();
          case 3:
            _t1(_context27.v).toBe(true);
          case 4:
            return _context27.a(2);
        }
      }, _callee27);
    })));
    it('should stop selecting option [when] there is no matching value to input value', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee28() {
      var _render18, driver, _t10;
      return _regenerator().w(function (_context28) {
        while (1) switch (_context28.n) {
          case 0:
            _render18 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              value: new Date('2021-09-10 12:30'),
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 311,
                columnNumber: 9
              }
            })), driver = _render18.driver;
            _context28.n = 1;
            return driver.setValue('');
          case 1:
            _t10 = expect;
            _context28.n = 2;
            return driver.getSelectedOptionId();
          case 2:
            _t10(_context28.v).toBe(null);
          case 3:
            return _context28.a(2);
        }
      }, _callee28);
    })));
    it('should open dropdown [when] value is selected with `enter` and user types again', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee29() {
      var _render19, driver, _t11, _t12;
      return _regenerator().w(function (_context29) {
        while (1) switch (_context29.n) {
          case 0:
            _render19 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 320,
                columnNumber: 33
              }
            })), driver = _render19.driver;
            _context29.n = 1;
            return driver.setValue('2');
          case 1:
            _context29.n = 2;
            return driver.pressKey('Enter');
          case 2:
            _t11 = expect;
            _context29.n = 3;
            return driver.isDropdownShown();
          case 3:
            _t11(_context29.v).toBe(false);
            _context29.n = 4;
            return driver.setValue('2');
          case 4:
            _t12 = expect;
            _context29.n = 5;
            return driver.isDropdownShown();
          case 5:
            _t12(_context29.v).toBe(true);
          case 6:
            return _context29.a(2);
        }
      }, _callee29);
    })));
    it('preserves the selected option id when the typed value matches its display value (regression: selectedId comparison fix)', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee30() {
      var value, _render20, driver, initialSelectedId, _t13;
      return _regenerator().w(function (_context30) {
        while (1) switch (_context30.n) {
          case 0:
            value = new Date('2021-01-01 10:30');
            _render20 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              value: value,
              locale: "en",
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 332,
                columnNumber: 33
              }
            })), driver = _render20.driver; // syncExternalValue picks 10:30 AM as the selected slot. Re-typing
            // the exact display value should not clear the selection — previously
            // the comparison `inputValue !== timeSlots[state.selectedId]` always
            // nuked selectedId because the timestamp was used as an array index.
            _context30.n = 1;
            return driver.clickOnInput();
          case 1:
            _context30.n = 2;
            return driver.getSelectedOptionId();
          case 2:
            initialSelectedId = _context30.v;
            expect(initialSelectedId).toBeTruthy();
            _context30.n = 3;
            return driver.setValue('10:30 AM');
          case 3:
            _t13 = expect;
            _context30.n = 4;
            return driver.getSelectedOptionId();
          case 4:
            _t13(_context30.v).toBe(initialSelectedId);
          case 5:
            return _context30.a(2);
        }
      }, _callee30);
    })));
    it('should fill input with highlighted value [when] input loses focus', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee31() {
      var _render21, driver, _t14;
      return _regenerator().w(function (_context31) {
        while (1) switch (_context31.n) {
          case 0:
            _render21 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 348,
                columnNumber: 33
              }
            })), driver = _render21.driver;
            _context31.n = 1;
            return driver.setValue('2:00 P');
          case 1:
            _context31.n = 2;
            return driver.confirmValue();
          case 2:
            _t14 = expect;
            _context31.n = 3;
            return driver.getInputValue();
          case 3:
            _t14(_context31.v).toBe('2:00 PM');
          case 4:
            return _context31.a(2);
        }
      }, _callee31);
    })));
    it('should close dropdown [when] input loses focus', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee33() {
      var _render22, driver, _t16;
      return _regenerator().w(function (_context33) {
        while (1) switch (_context33.n) {
          case 0:
            _render22 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 357,
                columnNumber: 33
              }
            })), driver = _render22.driver;
            _context33.n = 1;
            return driver.clickOnInput();
          case 1:
            _t16 = expect;
            _context33.n = 2;
            return driver.isDropdownShown();
          case 2:
            _t16(_context33.v).toBe(true);
            _context33.n = 3;
            return driver.confirmValue();
          case 3:
            _context33.n = 4;
            return (0, _react2.waitFor)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee32() {
              var _t15;
              return _regenerator().w(function (_context32) {
                while (1) switch (_context32.n) {
                  case 0:
                    _t15 = expect;
                    _context32.n = 1;
                    return driver.isDropdownShown();
                  case 1:
                    _t15(_context32.v).toBe(false);
                  case 2:
                    return _context32.a(2);
                }
              }, _callee32);
            })));
          case 4:
            return _context33.a(2);
        }
      }, _callee33);
    })));
    it('should scroll to nearest input value [when] dropdown is opened and there is no selected or autocompleted value', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee34() {
      var _render23, driver, expectedScrollToOption, _t17, _t18;
      return _regenerator().w(function (_context34) {
        while (1) switch (_context34.n) {
          case 0:
            _render23 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              step: 15,
              value: new Date('2021-11-16 11:33'),
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 370,
                columnNumber: 9
              }
            })), driver = _render23.driver;
            expectedScrollToOption = new Date('2021-11-16 11:45').getTime();
            _t17 = expect;
            _context34.n = 1;
            return driver.getScrollToOptionValue();
          case 1:
            _t17(_context34.v).toBe(null);
            _context34.n = 2;
            return driver.clickOnInput();
          case 2:
            _t18 = expect;
            _context34.n = 3;
            return driver.getScrollToOptionValue();
          case 3:
            _t18(_context34.v).toContain("".concat(expectedScrollToOption));
          case 4:
            return _context34.a(2);
        }
      }, _callee34);
    })));
    it('should scroll to nearest input value [when] custom value is set and dropdown is opened', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee35() {
      var _render24, driver, expectedScrollToOption, _t19;
      return _regenerator().w(function (_context35) {
        while (1) switch (_context35.n) {
          case 0:
            Date.now = vi.fn(function () {
              return new Date('2021-01-01 05:00').valueOf();
            });
            _render24 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              step: 15,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 384,
                columnNumber: 33
              }
            })), driver = _render24.driver;
            expectedScrollToOption = new Date('2021-01-01 12:00').getTime();
            _context35.n = 1;
            return driver.setValue('11:48');
          case 1:
            _context35.n = 2;
            return driver.confirmValue();
          case 2:
            _context35.n = 3;
            return driver.clickOnInput();
          case 3:
            _t19 = expect;
            _context35.n = 4;
            return driver.getScrollToOptionValue();
          case 4:
            _t19(_context35.v).toContain("".concat(expectedScrollToOption));
          case 5:
            return _context35.a(2);
        }
      }, _callee35);
    })));
    it('should set to 11:50 AM custom input value [when] 11:5 is typed and `Enter` is pressed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee36() {
      var _render25, driver, _t20;
      return _regenerator().w(function (_context36) {
        while (1) switch (_context36.n) {
          case 0:
            _render25 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              step: 15,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 397,
                columnNumber: 33
              }
            })), driver = _render25.driver;
            _context36.n = 1;
            return driver.setValue('11:5');
          case 1:
            _context36.n = 2;
            return driver.pressKey('Enter');
          case 2:
            _t20 = expect;
            _context36.n = 3;
            return driver.getInputValue();
          case 3:
            _t20(_context36.v).toBe('11:50 AM');
          case 4:
            return _context36.a(2);
        }
      }, _callee36);
    })));
    it('should not submit value on blur [when] input is not valid', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee37() {
      var onChange, _render26, driver, _t21;
      return _regenerator().w(function (_context37) {
        while (1) switch (_context37.n) {
          case 0:
            onChange = vi.fn();
            _render26 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              onChange: onChange,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 407,
                columnNumber: 33
              }
            })), driver = _render26.driver;
            _context37.n = 1;
            return driver.setValue('123123123');
          case 1:
            _context37.n = 2;
            return driver.confirmValue();
          case 2:
            _t21 = expect;
            _context37.n = 3;
            return driver.getInputValue();
          case 3:
            _t21(_context37.v).toBe('123123123');
            expect(onChange).not.toHaveBeenCalled();
          case 4:
            return _context37.a(2);
        }
      }, _callee37);
    })));
  });
  describe('aria', function () {
    it('should have collapsed dropdown aria attributes [when] dropdown is closed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee38() {
      var _render27, driver, _t22, _t23, _t24, _t25;
      return _regenerator().w(function (_context38) {
        while (1) switch (_context38.n) {
          case 0:
            _render27 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 419,
                columnNumber: 33
              }
            })), driver = _render27.driver;
            _t22 = expect;
            _context38.n = 1;
            return driver.getInputAttribute('aria-expanded');
          case 1:
            _t22(_context38.v).toBe('false');
            _t23 = expect;
            _context38.n = 2;
            return driver.getInputAttribute('aria-autocomplete');
          case 2:
            _t23(_context38.v).toBe('list');
            _t24 = expect;
            _context38.n = 3;
            return driver.getInputAttribute('aria-controls');
          case 3:
            _t24(_context38.v).toBeNull();
            _t25 = expect;
            _context38.n = 4;
            return driver.getInputAttribute('aria-activedescendant');
          case 4:
            _t25(_context38.v).toBeNull();
          case 5:
            return _context38.a(2);
        }
      }, _callee38);
    })));
    it('should have dropdown aria attributes [when] dropdown is open', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee39() {
      var _render28, driver, _t26, _t27, _t28, _t29;
      return _regenerator().w(function (_context39) {
        while (1) switch (_context39.n) {
          case 0:
            _render28 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              value: new Date('2020-01-01 00:00'),
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 430,
                columnNumber: 9
              }
            })), driver = _render28.driver;
            _context39.n = 1;
            return driver.clickOnInput();
          case 1:
            _t26 = expect;
            _context39.n = 2;
            return driver.getInputAttribute('aria-autocomplete');
          case 2:
            _t26(_context39.v).toBe('list');
            _t27 = expect;
            _context39.n = 3;
            return driver.getInputAttribute('aria-expanded');
          case 3:
            _t27(_context39.v).toBe('true');
            _t28 = expect;
            _context39.n = 4;
            return driver.getInputAttribute('aria-controls');
          case 4:
            _t28(_context39.v).toBeDefined();
            _t29 = expect;
            _context39.n = 5;
            return driver.getInputAttribute('aria-activedescendant');
          case 5:
            _t29(_context39.v).toBe('dropdown-item-0');
          case 6:
            return _context39.a(2);
        }
      }, _callee39);
    })));
  });
  describe('ref', function () {
    it('should access focus method through ref [when] ref is passed to component', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee41() {
      var timeInputRef, _render29, driver, _t30;
      return _regenerator().w(function (_context41) {
        while (1) switch (_context41.n) {
          case 0:
            timeInputRef = /*#__PURE__*/_react["default"].createRef();
            _render29 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              ref: timeInputRef,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 445,
                columnNumber: 33
              }
            })), driver = _render29.driver;
            _context41.n = 1;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee40() {
              return _regenerator().w(function (_context40) {
                while (1) switch (_context40.n) {
                  case 0:
                    return _context40.a(2, timeInputRef.current.focus());
                }
              }, _callee40);
            })));
          case 1:
            _t30 = expect;
            _context41.n = 2;
            return driver.isFocused();
          case 2:
            _t30(_context41.v).toEqual(true);
          case 3:
            return _context41.a(2);
        }
      }, _callee41);
    })));
    it('should open dropdown when focus called on ref', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee43() {
      var timeInputRef, _render30, driver, _t31, _t32;
      return _regenerator().w(function (_context43) {
        while (1) switch (_context43.n) {
          case 0:
            timeInputRef = /*#__PURE__*/_react["default"].createRef();
            _render30 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              ref: timeInputRef,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 454,
                columnNumber: 33
              }
            })), driver = _render30.driver;
            _context43.n = 1;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee42() {
              return _regenerator().w(function (_context42) {
                while (1) switch (_context42.n) {
                  case 0:
                    return _context42.a(2, timeInputRef.current.focus());
                }
              }, _callee42);
            })));
          case 1:
            _t31 = expect;
            _context43.n = 2;
            return driver.isFocused();
          case 2:
            _t31(_context43.v).toEqual(true);
            _t32 = expect;
            _context43.n = 3;
            return driver.isDropdownShown();
          case 3:
            _t32(_context43.v).toEqual(true);
          case 4:
            return _context43.a(2);
        }
      }, _callee43);
    })));
    it('should not open dropdown when input is readOnly and focus called on ref', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee45() {
      var timeInputRef, _render31, driver, _t33, _t34;
      return _regenerator().w(function (_context45) {
        while (1) switch (_context45.n) {
          case 0:
            timeInputRef = /*#__PURE__*/_react["default"].createRef();
            _render31 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              ref: timeInputRef,
              readOnly: true,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 464,
                columnNumber: 33
              }
            })), driver = _render31.driver;
            _context45.n = 1;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee44() {
              return _regenerator().w(function (_context44) {
                while (1) switch (_context44.n) {
                  case 0:
                    return _context44.a(2, timeInputRef.current.focus());
                }
              }, _callee44);
            })));
          case 1:
            _t33 = expect;
            _context45.n = 2;
            return driver.isFocused();
          case 2:
            _t33(_context45.v).toEqual(true);
            _t34 = expect;
            _context45.n = 3;
            return driver.isDropdownShown();
          case 3:
            _t34(_context45.v).toEqual(false);
          case 4:
            return _context45.a(2);
        }
      }, _callee45);
    })));
    it('should blur input when blur called on ref', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee47() {
      var timeInputRef, _render32, driver, _t35, _t36;
      return _regenerator().w(function (_context47) {
        while (1) switch (_context47.n) {
          case 0:
            timeInputRef = /*#__PURE__*/_react["default"].createRef();
            _render32 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              ref: timeInputRef,
              readOnly: true,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 474,
                columnNumber: 33
              }
            })), driver = _render32.driver;
            _context47.n = 1;
            return driver.clickOnInput();
          case 1:
            _t35 = expect;
            _context47.n = 2;
            return driver.isFocused();
          case 2:
            _t35(_context47.v).toEqual(true);
            _context47.n = 3;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee46() {
              return _regenerator().w(function (_context46) {
                while (1) switch (_context46.n) {
                  case 0:
                    return _context46.a(2, timeInputRef.current.blur());
                }
              }, _callee46);
            })));
          case 3:
            _t36 = expect;
            _context47.n = 4;
            return driver.isFocused();
          case 4:
            _t36(_context47.v).toEqual(false);
          case 5:
            return _context47.a(2);
        }
      }, _callee47);
    })));
    it('should clear correct date inputValue on `clear` call', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee49() {
      var timeInputRef, _render33, driver, _t37, _t38;
      return _regenerator().w(function (_context49) {
        while (1) switch (_context49.n) {
          case 0:
            timeInputRef = /*#__PURE__*/_react["default"].createRef();
            _render33 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              ref: timeInputRef,
              value: null,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 485,
                columnNumber: 33
              }
            })), driver = _render33.driver;
            _context49.n = 1;
            return driver.setValue('12:00');
          case 1:
            _t37 = expect;
            _context49.n = 2;
            return driver.getInputValue();
          case 2:
            _t37(_context49.v).toEqual('12:00 PM');
            _context49.n = 3;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee48() {
              return _regenerator().w(function (_context48) {
                while (1) switch (_context48.n) {
                  case 0:
                    return _context48.a(2, timeInputRef.current.clear());
                }
              }, _callee48);
            })));
          case 3:
            _t38 = expect;
            _context49.n = 4;
            return driver.getInputValue();
          case 4:
            _t38(_context49.v).toEqual('');
          case 5:
            return _context49.a(2);
        }
      }, _callee49);
    })));
    it('should clear a random string inputValue on `clear` call', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee51() {
      var timeInputRef, _render34, driver, _t39, _t40;
      return _regenerator().w(function (_context51) {
        while (1) switch (_context51.n) {
          case 0:
            timeInputRef = /*#__PURE__*/_react["default"].createRef();
            _render34 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              ref: timeInputRef,
              value: null,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 496,
                columnNumber: 33
              }
            })), driver = _render34.driver;
            _context51.n = 1;
            return driver.setValue('just a random string');
          case 1:
            _t39 = expect;
            _context51.n = 2;
            return driver.getInputValue();
          case 2:
            _t39(_context51.v).toEqual('just a random string');
            _context51.n = 3;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee50() {
              return _regenerator().w(function (_context50) {
                while (1) switch (_context50.n) {
                  case 0:
                    return _context50.a(2, timeInputRef.current.clear());
                }
              }, _callee50);
            })));
          case 3:
            _t40 = expect;
            _context51.n = 4;
            return driver.getInputValue();
          case 4:
            _t40(_context51.v).toEqual('');
          case 5:
            return _context51.a(2);
        }
      }, _callee51);
    })));
    it('should call `onChange` when `clear` is called', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee53() {
      var timeInputRef, onChangeMock;
      return _regenerator().w(function (_context53) {
        while (1) switch (_context53.n) {
          case 0:
            timeInputRef = /*#__PURE__*/_react["default"].createRef();
            onChangeMock = vi.fn();
            render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              onChange: onChangeMock,
              ref: timeInputRef,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 509,
                columnNumber: 14
              }
            }));
            _context53.n = 1;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee52() {
              return _regenerator().w(function (_context52) {
                while (1) switch (_context52.n) {
                  case 0:
                    return _context52.a(2, timeInputRef.current.clear());
                }
              }, _callee52);
            })));
          case 1:
            expect(onChangeMock).toHaveBeenCalledTimes(1);
            expect(onChangeMock).toHaveBeenCalledWith({
              date: null
            });
          case 2:
            return _context53.a(2);
        }
      }, _callee53);
    })));
  });
  describe('inputRef prop', function () {
    it('invokes a callback ref with the element on mount and null on unmount', function () {
      var inputRef = vi.fn();
      var _render35 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
          inputRef: inputRef,
          __self: _this,
          __source: {
            fileName: _jsxFileName,
            lineNumber: 521,
            columnNumber: 34
          }
        })),
        unmount = _render35.unmount;
      expect(inputRef.mock.calls[0][0]).toBeInstanceOf(HTMLInputElement);
      unmount();
      expect(inputRef).toHaveBeenLastCalledWith(null);
    });
    it('populates an object ref on mount and clears it on unmount', function () {
      var inputRef = /*#__PURE__*/_react["default"].createRef();
      var _render36 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
          inputRef: inputRef,
          __self: _this,
          __source: {
            fileName: _jsxFileName,
            lineNumber: 531,
            columnNumber: 34
          }
        })),
        unmount = _render36.unmount;
      expect(inputRef.current).toBeInstanceOf(HTMLInputElement);
      unmount();
      expect(inputRef.current).toBeNull();
    });
    it('coexists with the component-level imperative ref', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee55() {
      var timeInputRef, inputRef, _render37, driver, _t41;
      return _regenerator().w(function (_context55) {
        while (1) switch (_context55.n) {
          case 0:
            timeInputRef = /*#__PURE__*/_react["default"].createRef();
            inputRef = /*#__PURE__*/_react["default"].createRef();
            _render37 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              ref: timeInputRef,
              inputRef: inputRef,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 543,
                columnNumber: 9
              }
            })), driver = _render37.driver;
            expect(inputRef.current).toBeInstanceOf(HTMLInputElement);
            _context55.n = 1;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee54() {
              return _regenerator().w(function (_context54) {
                while (1) switch (_context54.n) {
                  case 0:
                    return _context54.a(2, timeInputRef.current.focus());
                }
              }, _callee54);
            })));
          case 1:
            _t41 = expect;
            _context55.n = 2;
            return driver.isFocused();
          case 2:
            _t41(_context55.v).toEqual(true);
          case 3:
            return _context55.a(2);
        }
      }, _callee55);
    })));
  });
  describe('customInput prop', function () {
    it('renders the custom input in place of the default <input>', function () {
      var CustomInput = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
        return /*#__PURE__*/_react["default"].createElement("input", (0, _extends2["default"])({
          "data-custom-input": true,
          ref: ref
        }, props, {
          __self: _this,
          __source: {
            fileName: _jsxFileName,
            lineNumber: 556,
            columnNumber: 9
          }
        }));
      });
      var _render38 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
          customInput: CustomInput,
          __self: _this,
          __source: {
            fileName: _jsxFileName,
            lineNumber: 558,
            columnNumber: 36
          }
        })),
        container = _render38.container;
      expect(container.querySelector('[data-custom-input]')).not.toBeNull();
    });
    it('preserves the component-level imperative ref alongside customInput', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee57() {
      var CustomInput, timeInputRef, _render39, driver, _t42;
      return _regenerator().w(function (_context57) {
        while (1) switch (_context57.n) {
          case 0:
            CustomInput = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
              return /*#__PURE__*/_react["default"].createElement("input", (0, _extends2["default"])({
                ref: ref
              }, props, {
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 565,
                  columnNumber: 9
                }
              }));
            });
            timeInputRef = /*#__PURE__*/_react["default"].createRef();
            _render39 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              customInput: CustomInput,
              ref: timeInputRef,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 569,
                columnNumber: 9
              }
            })), driver = _render39.driver;
            _context57.n = 1;
            return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee56() {
              return _regenerator().w(function (_context56) {
                while (1) switch (_context56.n) {
                  case 0:
                    return _context56.a(2, timeInputRef.current.focus());
                }
              }, _callee56);
            })));
          case 1:
            _t42 = expect;
            _context57.n = 2;
            return driver.isFocused();
          case 2:
            _t42(_context57.v).toEqual(true);
          case 3:
            return _context57.a(2);
        }
      }, _callee57);
    })));
  });
  describe('properties', function () {
    describe('value', function () {
      it('should not mutate original value prop', function () {
        var timestamp = 1713252540002;
        var selectedDate = new Date(timestamp);
        render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
          value: selectedDate,
          __self: _this,
          __source: {
            fileName: _jsxFileName,
            lineNumber: 582,
            columnNumber: 16
          }
        }));
        expect(selectedDate.getTime()).toBe(timestamp);
      });
      it("should pass correct Date value to value prop [when] it is passed to value prop", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee58() {
        var expectedValue, _render40, driver, _t43;
        return _regenerator().w(function (_context58) {
          while (1) switch (_context58.n) {
            case 0:
              expectedValue = new Date('2020-05-06 18:43');
              _render40 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                value: expectedValue,
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 589,
                  columnNumber: 35
                }
              })), driver = _render40.driver;
              _t43 = expect;
              _context58.n = 1;
              return driver.getValue();
            case 1:
              _t43(_context58.v).toEqual(expectedValue);
            case 2:
              return _context58.a(2);
          }
        }, _callee58);
      })));
      it('should set input value as a nearest time slot to current time [when] value prop is not defined', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee59() {
        var _render41, driver, timeSlots, expectedValue, _t44;
        return _regenerator().w(function (_context59) {
          while (1) switch (_context59.n) {
            case 0:
              _render41 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                step: 20,
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 595,
                  columnNumber: 35
                }
              })), driver = _render41.driver;
              timeSlots = (0, _TimeInputUtils.getTimeSlots)({
                locale: 'en',
                timeStyle: 'short',
                step: 20
              });
              expectedValue = (0, _TimeInputUtils.getClosestTimeSlot)({
                timeSlots: timeSlots
              });
              _t44 = expect;
              _context59.n = 1;
              return driver.getInputValue();
            case 1:
              _t44(_context59.v).toBe(expectedValue.value);
            case 2:
              return _context59.a(2);
          }
        }, _callee59);
      })));
      it("should set value prop [when] value is typed in", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee60() {
        var _render42, driver, _t45;
        return _regenerator().w(function (_context60) {
          while (1) switch (_context60.n) {
            case 0:
              _render42 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 610,
                  columnNumber: 35
                }
              })), driver = _render42.driver;
              _context60.n = 1;
              return driver.clickOnInput();
            case 1:
              _context60.n = 2;
              return driver.setValue('16:15');
            case 2:
              _t45 = expect;
              _context60.n = 3;
              return driver.getInputValue();
            case 3:
              _t45(_context60.v).toBe('16:15');
            case 4:
              return _context60.a(2);
          }
        }, _callee60);
      })));
      it("should set value prop [when] date value in milliseconds is 0", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee61() {
        var _render43, driver, _t46;
        return _regenerator().w(function (_context61) {
          while (1) switch (_context61.n) {
            case 0:
              _render43 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                value: new Date(0),
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 618,
                  columnNumber: 35
                }
              })), driver = _render43.driver;
              _t46 = expect;
              _context61.n = 1;
              return driver.getInputValue();
            case 1:
              _t46(_context61.v).toMatch(/[0-9]{1,2}:00 AM/);
            case 2:
              return _context61.a(2);
          }
        }, _callee61);
      })));
      it('should update value prop [when] value prop is changed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee62() {
        var _render44, driver, rerender, _t47;
        return _regenerator().w(function (_context62) {
          while (1) switch (_context62.n) {
            case 0:
              _render44 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                value: new Date('2020-02-02 03:03'),
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 625,
                  columnNumber: 11
                }
              })), driver = _render44.driver, rerender = _render44.rerender;
              rerender(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                value: new Date('2020-02-02 02:02'),
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 628,
                  columnNumber: 18
                }
              }));
              _t47 = expect;
              _context62.n = 1;
              return driver.getInputValue();
            case 1:
              _t47(_context62.v).toBe('2:02 AM');
            case 2:
              return _context62.a(2);
          }
        }, _callee62);
      })));
      it('input should be empty [when] value prop equals null', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee63() {
        var _render45, driver, _t48;
        return _regenerator().w(function (_context63) {
          while (1) switch (_context63.n) {
            case 0:
              _render45 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                value: null,
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 634,
                  columnNumber: 35
                }
              })), driver = _render45.driver;
              _t48 = expect;
              _context63.n = 1;
              return driver.getInputValue();
            case 1:
              _t48(_context63.v).toEqual('');
            case 2:
              return _context63.a(2);
          }
        }, _callee63);
      })));
      it('input should be empty and have no error state [when] value prop equals null, input focused and then blurred', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee64() {
        var _render46, driver, _t49, _t50, _t51;
        return _regenerator().w(function (_context64) {
          while (1) switch (_context64.n) {
            case 0:
              _render46 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                value: null,
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 639,
                  columnNumber: 35
                }
              })), driver = _render46.driver;
              _context64.n = 1;
              return driver.clickOnInput();
            case 1:
              _t49 = expect;
              _context64.n = 2;
              return driver.getInputValue();
            case 2:
              _t49(_context64.v).toEqual('');
              _context64.n = 3;
              return driver.confirmValue();
            case 3:
              _t50 = expect;
              _context64.n = 4;
              return driver.getInputValue();
            case 4:
              _t50(_context64.v).toEqual('');
              _t51 = expect;
              _context64.n = 5;
              return driver.hasStatus('error');
            case 5:
              _t51(_context64.v).toEqual(false);
            case 6:
              return _context64.a(2);
          }
        }, _callee64);
      })));
    });
    describe('disable', function () {
      it("should disable input [when] disable prop is true", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee65() {
        var _render47, driver, _t52;
        return _regenerator().w(function (_context65) {
          while (1) switch (_context65.n) {
            case 0:
              _render47 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                disabled: true,
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 653,
                  columnNumber: 35
                }
              })), driver = _render47.driver;
              _t52 = expect;
              _context65.n = 1;
              return driver.isDisabled();
            case 1:
              _t52(_context65.v).toBe(true);
            case 2:
              return _context65.a(2);
          }
        }, _callee65);
      })));
    });
    describe('disableKeyboardType', function () {
      it("should be readOnly when disableKeyboardType is true", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee66() {
        var onChange, _render48, driver;
        return _regenerator().w(function (_context66) {
          while (1) switch (_context66.n) {
            case 0:
              onChange = vi.fn();
              _render48 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                disableKeyboardType: true,
                onChange: onChange,
                value: new Date(),
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 663,
                  columnNumber: 11
                }
              })), driver = _render48.driver;
              _context66.n = 1;
              return driver.setValue('');
            case 1:
              _context66.n = 2;
              return driver.confirmValue();
            case 2:
              expect(onChange).not.toHaveBeenCalledWith({
                date: null
              });
            case 3:
              return _context66.a(2);
          }
        }, _callee66);
      })));
      it("should allow typing when disableKeyboardType is false", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee67() {
        var onChange, _render49, driver;
        return _regenerator().w(function (_context67) {
          while (1) switch (_context67.n) {
            case 0:
              onChange = vi.fn();
              _render49 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                disableKeyboardType: false,
                onChange: onChange,
                value: new Date(),
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 681,
                  columnNumber: 11
                }
              })), driver = _render49.driver;
              _context67.n = 1;
              return driver.setValue('');
            case 1:
              _context67.n = 2;
              return driver.confirmValue();
            case 2:
              expect(onChange).toHaveBeenCalledWith({
                date: null
              });
            case 3:
              return _context67.a(2);
          }
        }, _callee67);
      })));
      it("should allow typing when disableKeyboardType is not declared", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee68() {
        var onChange, _render50, driver;
        return _regenerator().w(function (_context68) {
          while (1) switch (_context68.n) {
            case 0:
              onChange = vi.fn();
              _render50 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                onChange: onChange,
                value: new Date(),
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 699,
                  columnNumber: 11
                }
              })), driver = _render50.driver;
              _context68.n = 1;
              return driver.setValue('');
            case 1:
              _context68.n = 2;
              return driver.confirmValue();
            case 2:
              expect(onChange).toHaveBeenCalledWith({
                date: null
              });
            case 3:
              return _context68.a(2);
          }
        }, _callee68);
      })));
    });
    describe('readOnly', function () {
      it("should not open dropdown on input click [when] readOnly prop is true", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee69() {
        var _render51, driver, _t53;
        return _regenerator().w(function (_context69) {
          while (1) switch (_context69.n) {
            case 0:
              _render51 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                readOnly: true,
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 713,
                  columnNumber: 35
                }
              })), driver = _render51.driver;
              _context69.n = 1;
              return driver.clickOnInput();
            case 1:
              _t53 = expect;
              _context69.n = 2;
              return driver.isDropdownShown();
            case 2:
              _t53(_context69.v).toBe(false);
            case 3:
              return _context69.a(2);
          }
        }, _callee69);
      })));
    });
    describe('statusMessage', function () {
      it('should display error status [when] status prop is set to `error`', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee70() {
        var status, statusMessage, _render52, driver, _t54, _t55;
        return _regenerator().w(function (_context70) {
          while (1) switch (_context70.n) {
            case 0:
              status = 'error';
              statusMessage = 'Error message';
              _render52 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                status: status,
                statusMessage: statusMessage,
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 726,
                  columnNumber: 11
                }
              })), driver = _render52.driver;
              _t54 = expect;
              _context70.n = 1;
              return driver.hasStatus(status);
            case 1:
              _t54(_context70.v).toBe(true);
              _t55 = expect;
              _context70.n = 2;
              return driver.getStatusMessage();
            case 2:
              _t55(_context70.v).toBe(statusMessage);
            case 3:
              return _context70.a(2);
          }
        }, _callee70);
      })));
      it('should not display status [when] status prop is not passed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee71() {
        var _render53, driver, _t56;
        return _regenerator().w(function (_context71) {
          while (1) switch (_context71.n) {
            case 0:
              _render53 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 734,
                  columnNumber: 35
                }
              })), driver = _render53.driver;
              _t56 = expect;
              _context71.n = 1;
              return driver.hasStatus('error');
            case 1:
              _t56(_context71.v).toBe(false);
            case 2:
              return _context71.a(2);
          }
        }, _callee71);
      })));
    });
    describe('invalidMessage', function () {
      it('should display invalid message and error status [when] invalidMessage prop is passed and user types invalid value', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee72() {
        var status, invalidMessage, _render54, driver, _t57, _t58;
        return _regenerator().w(function (_context72) {
          while (1) switch (_context72.n) {
            case 0:
              status = 'error';
              invalidMessage = 'Custom invalid message';
              _render54 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                invalidMessage: invalidMessage,
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 746,
                  columnNumber: 11
                }
              })), driver = _render54.driver;
              _context72.n = 1;
              return driver.setValue('aa');
            case 1:
              _t57 = expect;
              _context72.n = 2;
              return driver.hasStatus(status);
            case 2:
              _t57(_context72.v).toBe(true);
              _t58 = expect;
              _context72.n = 3;
              return driver.getStatusMessage();
            case 3:
              _t58(_context72.v).toBe(invalidMessage);
            case 4:
              return _context72.a(2);
          }
        }, _callee72);
      })));
      it('should not display error status [when] invalidMessage prop is NOT passed and user types invalid value', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee73() {
        var status, _render55, driver, _t59;
        return _regenerator().w(function (_context73) {
          while (1) switch (_context73.n) {
            case 0:
              status = 'error';
              _render55 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 757,
                  columnNumber: 35
                }
              })), driver = _render55.driver;
              _context73.n = 1;
              return driver.setValue('aa');
            case 1:
              _t59 = expect;
              _context73.n = 2;
              return driver.hasStatus(status);
            case 2:
              _t59(_context73.v).toBe(false);
            case 3:
              return _context73.a(2);
          }
        }, _callee73);
      })));
    });
    describe('timeStyle', function () {
      it('should set timeStyle prop to short [when] timeStyle prop is `short`', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee74() {
        var _render56, driver, _t60;
        return _regenerator().w(function (_context74) {
          while (1) switch (_context74.n) {
            case 0:
              _render56 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 767,
                  columnNumber: 35
                }
              })), driver = _render56.driver;
              _t60 = expect;
              _context74.n = 1;
              return driver.getTimeStyle();
            case 1:
              _t60(_context74.v).toBe('short');
            case 2:
              return _context74.a(2);
          }
        }, _callee74);
      })));
      it('should set timeStyle prop to long [when] timeStyle prop is `long`', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee75() {
        var _render57, driver, _t61;
        return _regenerator().w(function (_context75) {
          while (1) switch (_context75.n) {
            case 0:
              _render57 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                timeStyle: "long",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 773,
                  columnNumber: 35
                }
              })), driver = _render57.driver;
              _t61 = expect;
              _context75.n = 1;
              return driver.getTimeStyle();
            case 1:
              _t61(_context75.v).toBe('long');
            case 2:
              return _context75.a(2);
          }
        }, _callee75);
      })));
    });
    describe('locale', function () {
      it('should set locale prop to `hi` [when] locale prop is set to `hi`', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee76() {
        var _render58, driver, _t62;
        return _regenerator().w(function (_context76) {
          while (1) switch (_context76.n) {
            case 0:
              _render58 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "hi",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 781,
                  columnNumber: 35
                }
              })), driver = _render58.driver;
              _t62 = expect;
              _context76.n = 1;
              return driver.getLocale();
            case 1:
              _t62(_context76.v).toBe('hi');
            case 2:
              return _context76.a(2);
          }
        }, _callee76);
      })));
      it('should set the locale prop to `es` [when] locale prop is set to `es` in WixStyleReactEnvironmentProvider', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee77() {
        var _render59, driver, _t63;
        return _regenerator().w(function (_context77) {
          while (1) switch (_context77.n) {
            case 0:
              _render59 = render(/*#__PURE__*/_react["default"].createElement(_WixStyleReactEnvironmentProvider.WixStyleReactEnvironmentProvider, {
                locale: "es",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 788,
                  columnNumber: 11
                }
              }, /*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 789,
                  columnNumber: 13
                }
              }))), driver = _render59.driver;
              _t63 = expect;
              _context77.n = 1;
              return driver.getLocale();
            case 1:
              _t63(_context77.v).toBe('es');
            case 2:
              return _context77.a(2);
          }
        }, _callee77);
      })));
      it('should set locale prop instead of WixStyleReactEnvironmentProvider [when] given both', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee78() {
        var _render60, driver, _t64;
        return _regenerator().w(function (_context78) {
          while (1) switch (_context78.n) {
            case 0:
              _render60 = render(/*#__PURE__*/_react["default"].createElement(_WixStyleReactEnvironmentProvider.WixStyleReactEnvironmentProvider, {
                locale: "es",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 798,
                  columnNumber: 11
                }
              }, /*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "lt",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 799,
                  columnNumber: 13
                }
              }))), driver = _render60.driver;
              _t64 = expect;
              _context78.n = 1;
              return driver.getLocale();
            case 1:
              _t64(_context78.v).toBe('lt');
            case 2:
              return _context78.a(2);
          }
        }, _callee78);
      })));
      it('should set locale prop to `en` [when] locale prop is not set', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee79() {
        var _render61, driver, _t65;
        return _regenerator().w(function (_context79) {
          while (1) switch (_context79.n) {
            case 0:
              _render61 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 807,
                  columnNumber: 35
                }
              })), driver = _render61.driver;
              _t65 = expect;
              _context79.n = 1;
              return driver.getLocale();
            case 1:
              _t65(_context79.v).toBe('en');
            case 2:
              return _context79.a(2);
          }
        }, _callee79);
      })));
    });
  });
  describe('autocomplete', function () {
    describe('with en locale (12 hour format) and current time is 12:18 PM', function () {
      it("shouldn't highlight anything [when] 0 is typed in", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee80() {
        var _render62, driver, _t66;
        return _regenerator().w(function (_context80) {
          while (1) switch (_context80.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 12:18').valueOf();
              });
              _render62 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "en",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 818,
                  columnNumber: 35
                }
              })), driver = _render62.driver;
              _context80.n = 1;
              return driver.clickOnInput();
            case 1:
              _context80.n = 2;
              return driver.setValue('0');
            case 2:
              _t66 = expect;
              _context80.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t66(_context80.v).toBe(null);
            case 4:
              return _context80.a(2);
          }
        }, _callee80);
      })));
      it('should highlight 12:30 PM [when] 1 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee81() {
        var _render63, driver, _t67;
        return _regenerator().w(function (_context81) {
          while (1) switch (_context81.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 12:18').valueOf();
              });
              _render63 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "en",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 828,
                  columnNumber: 35
                }
              })), driver = _render63.driver;
              _context81.n = 1;
              return driver.clickOnInput();
            case 1:
              _context81.n = 2;
              return driver.setValue('1');
            case 2:
              _t67 = expect;
              _context81.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t67(_context81.v).toBe('12:30 PM');
            case 4:
              return _context81.a(2);
          }
        }, _callee81);
      })));
      it('should highlight 2:00 PM [when] 2 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee82() {
        var _render64, driver, _t68;
        return _regenerator().w(function (_context82) {
          while (1) switch (_context82.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 12:18').valueOf();
              });
              _render64 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "en",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 838,
                  columnNumber: 35
                }
              })), driver = _render64.driver;
              _context82.n = 1;
              return driver.clickOnInput();
            case 1:
              _context82.n = 2;
              return driver.setValue('2');
            case 2:
              _t68 = expect;
              _context82.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t68(_context82.v).toBe('2:00 PM');
            case 4:
              return _context82.a(2);
          }
        }, _callee82);
      })));
      it('should highlight 1:00 PM [when] 01 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee83() {
        var _render65, driver, _t69;
        return _regenerator().w(function (_context83) {
          while (1) switch (_context83.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 12:18').valueOf();
              });
              _render65 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "en",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 848,
                  columnNumber: 35
                }
              })), driver = _render65.driver;
              _context83.n = 1;
              return driver.clickOnInput();
            case 1:
              _context83.n = 2;
              return driver.setValue('01');
            case 2:
              _t69 = expect;
              _context83.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t69(_context83.v).toBe('1:00 PM');
            case 4:
              return _context83.a(2);
          }
        }, _callee83);
      })));
      it("shouldn't highlight anything [when] 18 is typed in", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee84() {
        var _render66, driver, _t70;
        return _regenerator().w(function (_context84) {
          while (1) switch (_context84.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 12:18').valueOf();
              });
              _render66 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "en",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 858,
                  columnNumber: 35
                }
              })), driver = _render66.driver;
              _context84.n = 1;
              return driver.clickOnInput();
            case 1:
              _context84.n = 2;
              return driver.setValue('18');
            case 2:
              _t70 = expect;
              _context84.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t70(_context84.v).toBe(null);
            case 4:
              return _context84.a(2);
          }
        }, _callee84);
      })));
      it('should highlight 1:15 PM [when] 1:1 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee85() {
        var _render67, driver, _t71;
        return _regenerator().w(function (_context85) {
          while (1) switch (_context85.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 12:18').valueOf();
              });
              _render67 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "en",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 868,
                  columnNumber: 35
                }
              })), driver = _render67.driver;
              _context85.n = 1;
              return driver.clickOnInput();
            case 1:
              _context85.n = 2;
              return driver.setValue('1:1');
            case 2:
              _t71 = expect;
              _context85.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t71(_context85.v).toBe('1:15 PM');
            case 4:
              return _context85.a(2);
          }
        }, _callee85);
      })));
      it('should highlight 1:15 PM [when] 01:1 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee86() {
        var _render68, driver, _t72;
        return _regenerator().w(function (_context86) {
          while (1) switch (_context86.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 12:18').valueOf();
              });
              _render68 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "en",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 878,
                  columnNumber: 35
                }
              })), driver = _render68.driver;
              _context86.n = 1;
              return driver.clickOnInput();
            case 1:
              _context86.n = 2;
              return driver.setValue('01:1');
            case 2:
              _t72 = expect;
              _context86.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t72(_context86.v).toBe('1:15 PM');
            case 4:
              return _context86.a(2);
          }
        }, _callee86);
      })));
      it("shouldn't highlight anything [when] 2:40 is typed in and step prop is set to 15", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee87() {
        var _render69, driver, _t73;
        return _regenerator().w(function (_context87) {
          while (1) switch (_context87.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 12:18').valueOf();
              });
              _render69 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "en",
                step: 15,
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 888,
                  columnNumber: 35
                }
              })), driver = _render69.driver;
              _context87.n = 1;
              return driver.clickOnInput();
            case 1:
              _context87.n = 2;
              return driver.setValue('2:40');
            case 2:
              _t73 = expect;
              _context87.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t73(_context87.v).toBe(null);
            case 4:
              return _context87.a(2);
          }
        }, _callee87);
      })));
      it('should highlight 11:15 PM [when] 1115 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee88() {
        var _render70, driver, _t74;
        return _regenerator().w(function (_context88) {
          while (1) switch (_context88.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 12:18').valueOf();
              });
              _render70 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "en",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 898,
                  columnNumber: 35
                }
              })), driver = _render70.driver;
              _context88.n = 1;
              return driver.clickOnInput();
            case 1:
              _context88.n = 2;
              return driver.setValue('1115');
            case 2:
              _t74 = expect;
              _context88.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t74(_context88.v).toBe('11:15 PM');
            case 4:
              return _context88.a(2);
          }
        }, _callee88);
      })));
      it('should highlight 1:15 PM [when] 115 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee89() {
        var _render71, driver, _t75;
        return _regenerator().w(function (_context89) {
          while (1) switch (_context89.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 12:18').valueOf();
              });
              _render71 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "en",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 908,
                  columnNumber: 35
                }
              })), driver = _render71.driver;
              _context89.n = 1;
              return driver.clickOnInput();
            case 1:
              _context89.n = 2;
              return driver.setValue('115');
            case 2:
              _t75 = expect;
              _context89.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t75(_context89.v).toBe('1:15 PM');
            case 4:
              return _context89.a(2);
          }
        }, _callee89);
      })));
    });
    describe('with en locale (12 hour format) and current time is 11:18 PM', function () {
      it('should highlight 2:00 AM [when] 2 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee90() {
        var _render72, driver, _t76;
        return _regenerator().w(function (_context90) {
          while (1) switch (_context90.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 23:18').valueOf();
              });
              _render72 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "en",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 920,
                  columnNumber: 35
                }
              })), driver = _render72.driver;
              _context90.n = 1;
              return driver.clickOnInput();
            case 1:
              _context90.n = 2;
              return driver.setValue('2');
            case 2:
              _t76 = expect;
              _context90.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t76(_context90.v).toBe('2:00 AM');
            case 4:
              return _context90.a(2);
          }
        }, _callee90);
      })));
      it('should highlight 1:00 AM [when] 01 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee91() {
        var _render73, driver, _t77;
        return _regenerator().w(function (_context91) {
          while (1) switch (_context91.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 23:18').valueOf();
              });
              _render73 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "en",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 930,
                  columnNumber: 35
                }
              })), driver = _render73.driver;
              _context91.n = 1;
              return driver.clickOnInput();
            case 1:
              _context91.n = 2;
              return driver.setValue('01');
            case 2:
              _t77 = expect;
              _context91.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t77(_context91.v).toBe('1:00 AM');
            case 4:
              return _context91.a(2);
          }
        }, _callee91);
      })));
      it('should highlight 10:15 AM [when] 10:15 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee92() {
        var _render74, driver, _t78;
        return _regenerator().w(function (_context92) {
          while (1) switch (_context92.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 23:18').valueOf();
              });
              _render74 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "en",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 940,
                  columnNumber: 35
                }
              })), driver = _render74.driver;
              _context92.n = 1;
              return driver.clickOnInput();
            case 1:
              _context92.n = 2;
              return driver.setValue('10:15');
            case 2:
              _t78 = expect;
              _context92.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t78(_context92.v).toBe('10:15 AM');
            case 4:
              return _context92.a(2);
          }
        }, _callee92);
      })));
    });
    describe('with lt locale (24 hour format) and current time is 09:12', function () {
      it('should highlight 10:00 [when] 1 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee93() {
        var _render75, driver, _t79;
        return _regenerator().w(function (_context93) {
          while (1) switch (_context93.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 09:12').valueOf();
              });
              _render75 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "lt",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 952,
                  columnNumber: 35
                }
              })), driver = _render75.driver;
              _context93.n = 1;
              return driver.clickOnInput();
            case 1:
              _context93.n = 2;
              return driver.setValue('1');
            case 2:
              _t79 = expect;
              _context93.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t79(_context93.v).toBe('10:00');
            case 4:
              return _context93.a(2);
          }
        }, _callee93);
      })));
      it('should highlight 01:00 [when] 01 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee94() {
        var _render76, driver, _t80;
        return _regenerator().w(function (_context94) {
          while (1) switch (_context94.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 09:12').valueOf();
              });
              _render76 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "lt",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 962,
                  columnNumber: 35
                }
              })), driver = _render76.driver;
              _context94.n = 1;
              return driver.clickOnInput();
            case 1:
              _context94.n = 2;
              return driver.setValue('01');
            case 2:
              _t80 = expect;
              _context94.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t80(_context94.v).toBe('01:00');
            case 4:
              return _context94.a(2);
          }
        }, _callee94);
      })));
      it('should highlight 12:00 [when] 12 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee95() {
        var _render77, driver, _t81;
        return _regenerator().w(function (_context95) {
          while (1) switch (_context95.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 09:12').valueOf();
              });
              _render77 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "lt",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 972,
                  columnNumber: 35
                }
              })), driver = _render77.driver;
              _context95.n = 1;
              return driver.clickOnInput();
            case 1:
              _context95.n = 2;
              return driver.setValue('12');
            case 2:
              _t81 = expect;
              _context95.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t81(_context95.v).toBe('12:00');
            case 4:
              return _context95.a(2);
          }
        }, _callee95);
      })));
      it('should highlight 01:15 [when] 1:1 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee96() {
        var _render78, driver, _t82;
        return _regenerator().w(function (_context96) {
          while (1) switch (_context96.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 09:12').valueOf();
              });
              _render78 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "lt",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 982,
                  columnNumber: 35
                }
              })), driver = _render78.driver;
              _context96.n = 1;
              return driver.clickOnInput();
            case 1:
              _context96.n = 2;
              return driver.setValue('1:1');
            case 2:
              _t82 = expect;
              _context96.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t82(_context96.v).toBe('01:15');
            case 4:
              return _context96.a(2);
          }
        }, _callee96);
      })));
      it("shouldn't highlight anything [when] 1:10 is typed in and step prop is set to 15", /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee97() {
        var _render79, driver, _t83;
        return _regenerator().w(function (_context97) {
          while (1) switch (_context97.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 09:12').valueOf();
              });
              _render79 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "lt",
                step: 15,
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 992,
                  columnNumber: 35
                }
              })), driver = _render79.driver;
              _context97.n = 1;
              return driver.clickOnInput();
            case 1:
              _context97.n = 2;
              return driver.setValue('1:10');
            case 2:
              _t83 = expect;
              _context97.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t83(_context97.v).toBe(null);
            case 4:
              return _context97.a(2);
          }
        }, _callee97);
      })));
      it('should highlight 15:30 [when] 1530 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee98() {
        var _render80, driver, _t84;
        return _regenerator().w(function (_context98) {
          while (1) switch (_context98.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 09:12').valueOf();
              });
              _render80 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "lt",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 1002,
                  columnNumber: 35
                }
              })), driver = _render80.driver;
              _context98.n = 1;
              return driver.clickOnInput();
            case 1:
              _context98.n = 2;
              return driver.setValue('1530');
            case 2:
              _t84 = expect;
              _context98.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t84(_context98.v).toBe('15:30');
            case 4:
              return _context98.a(2);
          }
        }, _callee98);
      })));
      it('should highlight 16:45 [when] 164 is typed in', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee99() {
        var _render81, driver, _t85;
        return _regenerator().w(function (_context99) {
          while (1) switch (_context99.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 09:12').valueOf();
              });
              _render81 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "lt",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 1012,
                  columnNumber: 35
                }
              })), driver = _render81.driver;
              _context99.n = 1;
              return driver.clickOnInput();
            case 1:
              _context99.n = 2;
              return driver.setValue('164');
            case 2:
              _t85 = expect;
              _context99.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t85(_context99.v).toBe('16:45');
            case 4:
              return _context99.a(2);
          }
        }, _callee99);
      })));
    });
    describe('with locale where time has prefix and current time is 07:12 AM', function () {
      it('should highlight 06:00  [when] 6 is typed in and locale is set to zh', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee100() {
        var _render82, driver, _t86;
        return _regenerator().w(function (_context100) {
          while (1) switch (_context100.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 07:12').valueOf();
              });
              _render82 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "zh",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 1024,
                  columnNumber: 35
                }
              })), driver = _render82.driver;
              _context100.n = 1;
              return driver.clickOnInput();
            case 1:
              _context100.n = 2;
              return driver.setValue('6');
            case 2:
              _t86 = expect;
              _context100.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t86(_context100.v).toBe('06:00');
            case 4:
              return _context100.a(2);
          }
        }, _callee100);
      })));
      it('should highlight 오후 6:00  [when] 6 is typed in and locale is set to ko', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee101() {
        var _render83, driver, _t87;
        return _regenerator().w(function (_context101) {
          while (1) switch (_context101.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 07:12').valueOf();
              });
              _render83 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "ko",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 1034,
                  columnNumber: 35
                }
              })), driver = _render83.driver;
              _context101.n = 1;
              return driver.clickOnInput();
            case 1:
              _context101.n = 2;
              return driver.setValue('6');
            case 2:
              _t87 = expect;
              _context101.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t87(_context101.v).toBe('오후 6:00');
            case 4:
              return _context101.a(2);
          }
        }, _callee101);
      })));
      it('should highlight 오전 8:00 [when] 08 is typed in and locale is set to ko', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee102() {
        var _render84, driver, _t88;
        return _regenerator().w(function (_context102) {
          while (1) switch (_context102.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 07:12').valueOf();
              });
              _render84 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "ko",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 1044,
                  columnNumber: 35
                }
              })), driver = _render84.driver;
              _context102.n = 1;
              return driver.clickOnInput();
            case 1:
              _context102.n = 2;
              return driver.setValue('08');
            case 2:
              _t88 = expect;
              _context102.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t88(_context102.v).toBe('오전 8:00');
            case 4:
              return _context102.a(2);
          }
        }, _callee102);
      })));
      it('should highlight 08:00 [when] 上午08 is typed in and locale is set to zh', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee103() {
        var _render85, driver, _t89;
        return _regenerator().w(function (_context103) {
          while (1) switch (_context103.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 07:12').valueOf();
              });
              _render85 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "zh",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 1054,
                  columnNumber: 35
                }
              })), driver = _render85.driver;
              _context103.n = 1;
              return driver.clickOnInput();
            case 1:
              _context103.n = 2;
              return driver.setValue('上午08');
            case 2:
              _t89 = expect;
              _context103.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t89(_context103.v).toBe('08:00');
            case 4:
              return _context103.a(2);
          }
        }, _callee103);
      })));
      it('should highlight 08:00 [when] 上午8 is typed in and locale is set to zh', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee104() {
        var _render86, driver, _t90;
        return _regenerator().w(function (_context104) {
          while (1) switch (_context104.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 07:12').valueOf();
              });
              _render86 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "zh",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 1064,
                  columnNumber: 35
                }
              })), driver = _render86.driver;
              _context104.n = 1;
              return driver.clickOnInput();
            case 1:
              _context104.n = 2;
              return driver.setValue('上午8');
            case 2:
              _t90 = expect;
              _context104.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t90(_context104.v).toBe('08:00');
            case 4:
              return _context104.a(2);
          }
        }, _callee104);
      })));
    });
    describe('with locale that has dot (.) divider and current time is 07:12', function () {
      it('should highlight 13.00 [when] 13 is typed in and locale is set to fi', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee105() {
        var _render87, driver, _t91;
        return _regenerator().w(function (_context105) {
          while (1) switch (_context105.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 07:12').valueOf();
              });
              _render87 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: "fi",
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 1076,
                  columnNumber: 35
                }
              })), driver = _render87.driver;
              _context105.n = 1;
              return driver.clickOnInput();
            case 1:
              _context105.n = 2;
              return driver.setValue('13');
            case 2:
              _t91 = expect;
              _context105.n = 3;
              return driver.getHighlightedOption();
            case 3:
              _t91(_context105.v).toBe('13.00');
            case 4:
              return _context105.a(2);
          }
        }, _callee105);
      })));
    });
  });
  describe('validation', function () {
    describe('should show error', function () {
      it.each(['a', '269', '12:8', '15:69'])('[when] value is set to %s', /*#__PURE__*/function () {
        var _ref106 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee106(value) {
          var invalidMessage, _render88, driver, _t92, _t93;
          return _regenerator().w(function (_context106) {
            while (1) switch (_context106.n) {
              case 0:
                invalidMessage = 'Invalid message';
                _render88 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                  invalidMessage: invalidMessage,
                  __self: _this,
                  __source: {
                    fileName: _jsxFileName,
                    lineNumber: 1093,
                    columnNumber: 13
                  }
                })), driver = _render88.driver;
                _context106.n = 1;
                return driver.clickOnInput();
              case 1:
                _context106.n = 2;
                return driver.setValue(value);
              case 2:
                _t92 = expect;
                _context106.n = 3;
                return driver.hasStatus('error');
              case 3:
                _t92(_context106.v).toBe(true);
                _t93 = expect;
                _context106.n = 4;
                return driver.getStatusMessage();
              case 4:
                _t93(_context106.v).toBe(invalidMessage);
              case 5:
                return _context106.a(2);
            }
          }, _callee106);
        }));
        return function (_x) {
          return _ref106.apply(this, arguments);
        };
      }());
    });
    describe('should not set status to `error`', function () {
      it.each(['上午 ', '전후 08:12', '23', '12', '5', '12:', '12:0', '15:25', '09:05 PM', '10:59 p.m.', '1000', '11 PM', '250'])('[when] value is set to %s', /*#__PURE__*/function () {
        var _ref107 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee107(value) {
          var invalidMessage, _render89, driver, _t94;
          return _regenerator().w(function (_context107) {
            while (1) switch (_context107.n) {
              case 0:
                invalidMessage = 'Invalid message';
                _render89 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                  invalidMessage: invalidMessage,
                  __self: _this,
                  __source: {
                    fileName: _jsxFileName,
                    lineNumber: 1122,
                    columnNumber: 11
                  }
                })), driver = _render89.driver;
                _context107.n = 1;
                return driver.clickOnInput();
              case 1:
                _context107.n = 2;
                return driver.setValue(value);
              case 2:
                _t94 = expect;
                _context107.n = 3;
                return driver.hasStatus('error');
              case 3:
                _t94(_context107.v).toBe(false);
              case 4:
                return _context107.a(2);
            }
          }, _callee107);
        }));
        return function (_x2) {
          return _ref107.apply(this, arguments);
        };
      }());
    });
    it('should set status to `error` [when] status prop is set to warning, `invalidMessage` is set and user types invalid time value', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee108() {
      var status, invalidMessage, _render90, driver, _t95, _t96;
      return _regenerator().w(function (_context108) {
        while (1) switch (_context108.n) {
          case 0:
            status = 'error';
            invalidMessage = 'Invalid message';
            _render90 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              status: "warning",
              statusMessage: "warning message",
              invalidMessage: invalidMessage,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 1136,
                columnNumber: 9
              }
            })), driver = _render90.driver;
            _context108.n = 1;
            return driver.setValue('aa');
          case 1:
            _t95 = expect;
            _context108.n = 2;
            return driver.hasStatus(status);
          case 2:
            _t95(_context108.v).toBe(true);
            _t96 = expect;
            _context108.n = 3;
            return driver.getStatusMessage();
          case 3:
            _t96(_context108.v).toBe(invalidMessage);
          case 4:
            return _context108.a(2);
        }
      }, _callee108);
    })));
  });
  describe('autofill', function () {
    describe.each([{
      input: '10',
      autofill: ':00 AM',
      output: '10:00 AM',
      locale: 'en'
    }, {
      input: '11:00 ',
      autofill: 'AM',
      output: '11:00 AM',
      locale: 'en'
    }, {
      input: '12:00 A',
      autofill: 'M',
      output: '12:00 AM',
      locale: 'en'
    }, {
      input: '8:',
      autofill: '00 AM',
      output: '8:00 AM',
      locale: 'en'
    }, {
      input: '09:',
      autofill: '00 AM',
      output: '09:00 AM',
      locale: 'en'
    }, {
      input: '09:',
      autofill: '00 AM',
      output: '09:00 AM',
      locale: 'en'
    }, {
      input: '094',
      autofill: '5 AM',
      output: '0945 AM',
      locale: 'en'
    }, {
      input: '13',
      autofill: '0 AM',
      output: '130 AM',
      locale: 'en'
    }, {
      input: '43',
      autofill: '0 AM',
      output: '430 AM',
      locale: 'en'
    }, {
      input: '05',
      autofill: ':00 AM',
      output: '05:00 AM',
      locale: 'en'
    }, {
      input: '13',
      autofill: ':00',
      output: '13:00',
      locale: 'de'
    }, {
      input: '22:0',
      autofill: '0',
      output: '22:00',
      locale: 'de'
    }, {
      input: '6',
      autofill: ':00',
      output: '6:00',
      locale: 'de'
    }, {
      input: '04',
      autofill: ':00',
      output: '04:00',
      locale: 'de'
    }, {
      input: '164',
      autofill: '5',
      output: '1645',
      locale: 'de'
    }, {
      input: '021',
      autofill: '5',
      output: '0215',
      locale: 'de'
    }, {
      input: '233',
      autofill: '0',
      output: '2330',
      locale: 'de'
    }, {
      input: '9',
      autofill: ':00',
      output: '9:00',
      locale: 'ko'
    }, {
      input: '08',
      autofill: ':00',
      output: '08:00',
      locale: 'ko'
    }])('should autofill', function (_ref109) {
      var input = _ref109.input,
        autofill = _ref109.autofill,
        output = _ref109.output,
        locale = _ref109.locale;
      it("with value ".concat(autofill, " [when] user types ").concat(input, " and locale is ").concat(locale), /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee109() {
        var _render91, driver, _t97, _t98;
        return _regenerator().w(function (_context109) {
          while (1) switch (_context109.n) {
            case 0:
              Date.now = vi.fn(function () {
                return new Date('2021-01-01 00:00').valueOf();
              });
              _render91 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: locale,
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 1174,
                  columnNumber: 35
                }
              })), driver = _render91.driver;
              _context109.n = 1;
              return driver.setValue(input);
            case 1:
              _t97 = expect;
              _context109.n = 2;
              return driver.getAutofillValue();
            case 2:
              _t97(_context109.v).toContain(autofill);
              _t98 = expect;
              _context109.n = 3;
              return driver.getInputValue();
            case 3:
              _t98(_context109.v).toBe(output);
            case 4:
              return _context109.a(2);
          }
        }, _callee109);
      })));
    });
    it('should remove autofill [when] `Backspace` is pressed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee110() {
      var _render92, driver, _t99, _t100;
      return _regenerator().w(function (_context110) {
        while (1) switch (_context110.n) {
          case 0:
            Date.now = vi.fn(function () {
              return new Date('2021-01-01 00:00').valueOf();
            });
            _render92 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 1185,
                columnNumber: 33
              }
            })), driver = _render92.driver;
            _context110.n = 1;
            return driver.setValue('12:1');
          case 1:
            _t99 = expect;
            _context110.n = 2;
            return driver.getAutofillValue();
          case 2:
            _t99(_context110.v).toContain('5 AM');
            _context110.n = 3;
            return driver.pressBackspace();
          case 3:
            _t100 = expect;
            _context110.n = 4;
            return driver.getInputValue();
          case 4:
            _t100(_context110.v).toBe('12:1');
          case 5:
            return _context110.a(2);
        }
      }, _callee110);
    })));
    it('should remove one symbol [when] `Backspace` is pressed and autofill value is not shown', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee111() {
      var _render93, driver, _t101, _t102;
      return _regenerator().w(function (_context111) {
        while (1) switch (_context111.n) {
          case 0:
            Date.now = vi.fn(function () {
              return new Date('2021-01-01 00:00').valueOf();
            });
            _render93 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 1197,
                columnNumber: 33
              }
            })), driver = _render93.driver;
            _context111.n = 1;
            return driver.setValue('12:2');
          case 1:
            _t101 = expect;
            _context111.n = 2;
            return driver.getAutofillValue();
          case 2:
            _t101(_context111.v).toBeNull();
            _context111.n = 3;
            return driver.pressBackspace();
          case 3:
            _t102 = expect;
            _context111.n = 4;
            return driver.getInputValue();
          case 4:
            _t102(_context111.v).toBe('12:');
          case 5:
            return _context111.a(2);
        }
      }, _callee111);
    })));
    it('should confirm autofill value [when] `Enter` is pressed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee112() {
      var _render94, driver, _t103, _t104, _t105;
      return _regenerator().w(function (_context112) {
        while (1) switch (_context112.n) {
          case 0:
            Date.now = vi.fn(function () {
              return new Date('2021-01-01 00:00').valueOf();
            });
            _render94 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 1209,
                columnNumber: 33
              }
            })), driver = _render94.driver;
            _context112.n = 1;
            return driver.setValue('12');
          case 1:
            _t103 = expect;
            _context112.n = 2;
            return driver.getAutofillValue();
          case 2:
            _t103(_context112.v).toContain(':15 AM');
            _context112.n = 3;
            return driver.pressKey('Enter');
          case 3:
            _t104 = expect;
            _context112.n = 4;
            return driver.getInputValue();
          case 4:
            _t104(_context112.v).toBe('12:15 AM');
            _t105 = expect;
            _context112.n = 5;
            return driver.getAutofillValue();
          case 5:
            _t105(_context112.v).toBeNull();
          case 6:
            return _context112.a(2);
        }
      }, _callee112);
    })));
  });
  describe('custom value', function () {
    describe.each([{
      input: '3:48',
      confirmedInput: '3:48 AM'
    }, {
      input: '5:5',
      confirmedInput: '5:50 AM'
    }, {
      input: '7:26 A',
      confirmedInput: '7:26 AM'
    }, {
      input: '7:26 p.m.',
      confirmedInput: '7:26 PM'
    }, {
      input: '7:26 p.',
      confirmedInput: '7:26 PM'
    }, {
      input: '1120',
      confirmedInput: '11:20 AM'
    }, {
      input: '1018 pm',
      confirmedInput: '10:18 PM'
    }, {
      input: '1538',
      confirmedInput: '3:38 PM'
    }, {
      input: '456',
      confirmedInput: '4:56 AM'
    }, {
      input: '129 pm',
      confirmedInput: '1:29 PM'
    }, {
      input: '123',
      confirmedInput: '1:23 AM'
    }, {
      input: '615',
      confirmedInput: '6:15 AM'
    }, {
      input: '00',
      confirmedInput: '12:00 AM'
    }, {
      input: '0',
      confirmedInput: '12:00 AM'
    }])('should set value to', function (_ref114) {
      var input = _ref114.input,
        confirmedInput = _ref114.confirmedInput;
      it("".concat(confirmedInput, " [when] ").concat(input, " is typed in"), /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee113() {
        var _render95, driver, _t106, _t107;
        return _regenerator().w(function (_context113) {
          while (1) switch (_context113.n) {
            case 0:
              _render95 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 1240,
                  columnNumber: 35
                }
              })), driver = _render95.driver;
              _context113.n = 1;
              return driver.setValue(input);
            case 1:
              _context113.n = 2;
              return driver.confirmValue();
            case 2:
              _t106 = expect;
              _context113.n = 3;
              return driver.getInputValue();
            case 3:
              _t106(_context113.v).toBe(confirmedInput);
              _t107 = expect;
              _context113.n = 4;
              return driver.hasStatus('error');
            case 4:
              _t107(_context113.v).toBe(false);
            case 5:
              return _context113.a(2);
          }
        }, _callee113);
      })));
    });
    describe.each([{
      input: '7:26 PTG',
      confirmedInput: '7:26 PTG',
      locale: 'ms'
    }, {
      input: '7:26 PG ',
      confirmedInput: '7:26 PG',
      locale: 'ms'
    }, {
      input: '7:26 μ.μ.',
      confirmedInput: '7:26 μ.μ.',
      locale: 'el'
    }, {
      input: '7:26 π.μ.',
      confirmedInput: '7:26 π.μ.',
      locale: 'el'
    }, {
      input: '12:24 م',
      confirmedInput: '12:24 م',
      locale: 'ar'
    }, {
      input: '12:18 ص',
      confirmedInput: '12:18 ص',
      locale: 'ar'
    }, {
      input: '11:28',
      confirmedInput: '11:28',
      locale: 'zh'
    }, {
      input: '23:28',
      confirmedInput: '23:28',
      locale: 'zh'
    }, {
      input: '오전 11:28',
      confirmedInput: '오전 11:28',
      locale: 'ko'
    }, {
      input: '오후 11:28',
      confirmedInput: '오후 11:28',
      locale: 'ko'
    }, {
      input: '4:21 a. m.',
      confirmedInput: '4:21 a.m.',
      locale: 'es-US'
    }, {
      input: '4:21 p. m.',
      confirmedInput: '4:21 p.m.',
      locale: 'es-US'
    }, {
      input: '111',
      confirmedInput: '11:15',
      locale: 'de'
    }, {
      input: '112',
      confirmedInput: '11:20',
      locale: 'de'
    }, {
      input: '1243',
      confirmedInput: '12:43',
      locale: 'de'
    }, {
      input: '235',
      confirmedInput: '23:50',
      locale: 'de'
    }, {
      input: '35',
      confirmedInput: '03:50',
      locale: 'de'
    }, {
      input: '24',
      confirmedInput: '02:40',
      locale: 'de'
    }, {
      input: '111',
      confirmedInput: '1:11 AM',
      locale: 'en'
    }, {
      input: '45',
      confirmedInput: '4:50 AM',
      locale: 'en'
    }])('should set value to', function (_ref116) {
      var input = _ref116.input,
        confirmedInput = _ref116.confirmedInput,
        locale = _ref116.locale;
      it("".concat(confirmedInput, " [when] ").concat(input, " is typed in and locale is set to ").concat(locale), /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee114() {
        var _render96, driver, _t108, _t109;
        return _regenerator().w(function (_context114) {
          while (1) switch (_context114.n) {
            case 0:
              _render96 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
                locale: locale,
                __self: _this,
                __source: {
                  fileName: _jsxFileName,
                  lineNumber: 1273,
                  columnNumber: 35
                }
              })), driver = _render96.driver;
              _context114.n = 1;
              return driver.setValue(input);
            case 1:
              _context114.n = 2;
              return driver.confirmValue();
            case 2:
              _t108 = expect;
              _context114.n = 3;
              return driver.getInputValue();
            case 3:
              _t108(_context114.v).toBe(confirmedInput);
              _t109 = expect;
              _context114.n = 4;
              return driver.hasStatus('error');
            case 4:
              _t109(_context114.v).toBe(false);
            case 5:
              return _context114.a(2);
          }
        }, _callee114);
      })));
    });
  });
  describe('focus callbacks', function () {
    it('should call onFocus and onBlur [when] user clicks on input and then confirms value', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee115() {
      var onFocus, onBlur, _render97, driver;
      return _regenerator().w(function (_context115) {
        while (1) switch (_context115.n) {
          case 0:
            onFocus = vi.fn();
            onBlur = vi.fn();
            _render97 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              onFocus: onFocus,
              onBlur: onBlur,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 1290,
                columnNumber: 9
              }
            })), driver = _render97.driver;
            _context115.n = 1;
            return driver.clickOnInput();
          case 1:
            expect(onFocus).toHaveBeenCalled();
            _context115.n = 2;
            return driver.confirmValue();
          case 2:
            expect(onBlur).toHaveBeenCalled();
          case 3:
            return _context115.a(2);
        }
      }, _callee115);
    })));
  });
  describe('filterTime', function () {
    it('should show time slots according to filter [when] `filterTime` prop is passed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee116() {
      var value, _render98, driver, _t110, _t111, _t112, _t113;
      return _regenerator().w(function (_context116) {
        while (1) switch (_context116.n) {
          case 0:
            value = new Date('2020-01-01 12:00');
            _render98 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              value: value,
              filterTime: function filterTime(time) {
                return time < value;
              },
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 1305,
                columnNumber: 9
              }
            })), driver = _render98.driver;
            _context116.n = 1;
            return driver.clickOnInput();
          case 1:
            _t110 = expect;
            _context116.n = 2;
            return driver.isDropdownShown();
          case 2:
            _t110(_context116.v).toBeTruthy();
            _t111 = expect;
            _context116.n = 3;
            return driver.optionsCount();
          case 3:
            _t111(_context116.v).toEqual(48);
            _t112 = expect;
            _context116.n = 4;
            return driver.optionContentAt(0);
          case 4:
            _t112(_context116.v).toEqual('12:00 AM');
            _t113 = expect;
            _context116.n = 5;
            return driver.optionContentAt(47);
          case 5:
            _t113(_context116.v).toEqual('11:45 AM');
          case 6:
            return _context116.a(2);
        }
      }, _callee116);
    })));
    it('should show error [when] `filterTime` set and entered time that does not satisfy filter', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee117() {
      var value, onChange, invalidMessage, _render99, driver, _t114, _t115;
      return _regenerator().w(function (_context117) {
        while (1) switch (_context117.n) {
          case 0:
            value = new Date('2020-01-01 12:00');
            onChange = vi.fn();
            invalidMessage = 'Invalid message';
            _render99 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              value: value,
              onChange: onChange,
              filterTime: function filterTime(time) {
                return time < value;
              },
              invalidMessage: invalidMessage,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 1323,
                columnNumber: 9
              }
            })), driver = _render99.driver;
            _context117.n = 1;
            return driver.setValue('13:45 PM');
          case 1:
            _context117.n = 2;
            return driver.confirmValue();
          case 2:
            _t114 = expect;
            _context117.n = 3;
            return driver.hasStatus('error');
          case 3:
            _t114(_context117.v).toBeTruthy();
            _t115 = expect;
            _context117.n = 4;
            return driver.getStatusMessage();
          case 4:
            _t115(_context117.v).toBe(invalidMessage);
            expect(onChange).not.toHaveBeenCalled();
          case 5:
            return _context117.a(2);
        }
      }, _callee117);
    })));
    it('should call onInvalid with "outOfBoundsError" [when] entered time does not satisfy filter', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee118() {
      var value, onInvalid, _render100, driver, invalidValue;
      return _regenerator().w(function (_context118) {
        while (1) switch (_context118.n) {
          case 0:
            value = new Date('2020-01-01 12:00');
            onInvalid = vi.fn();
            _render100 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              value: value,
              onInvalid: onInvalid,
              filterTime: function filterTime(time) {
                return time < value;
              },
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 1343,
                columnNumber: 9
              }
            })), driver = _render100.driver;
            invalidValue = '1:45 PM';
            _context118.n = 1;
            return driver.setValue(invalidValue);
          case 1:
            _context118.n = 2;
            return driver.confirmValue();
          case 2:
            expect(onInvalid).toHaveBeenCalledWith({
              validationType: 'outOfBoundsError',
              value: invalidValue
            });
          case 3:
            return _context118.a(2);
        }
      }, _callee118);
    })));
    it('should call `onChange` [when] `filterTime` set and entered time that satisfies filter', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee119() {
      var value, onChange, _render101, driver;
      return _regenerator().w(function (_context119) {
        while (1) switch (_context119.n) {
          case 0:
            value = new Date('2020-01-01 12:00');
            onChange = vi.fn();
            _render101 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              value: value,
              onChange: onChange,
              filterTime: function filterTime(time) {
                return time < value;
              },
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 1365,
                columnNumber: 9
              }
            })), driver = _render101.driver;
            _context119.n = 1;
            return driver.setValue('10:45 AM');
          case 1:
            _context119.n = 2;
            return driver.confirmValue();
          case 2:
            expect(onChange).toHaveBeenCalledWith({
              date: new Date('2020-01-01 10:45')
            });
          case 3:
            return _context119.a(2);
        }
      }, _callee119);
    })));
  });
  describe('excludePastTimes', function () {
    var mockDateNow = new Date('2020-01-01 11:59');
    var DateReal;
    beforeEach(function () {
      DateReal = global.Date;
      global.Date = /*#__PURE__*/function (_DateReal) {
        function _class() {
          (0, _classCallCheck2["default"])(this, _class);
          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
            args[_key] = arguments[_key];
          }
          return _callSuper(this, _class, (0, _toConsumableArray2["default"])(args.length ? args : [mockDateNow]));
        }
        (0, _inherits2["default"])(_class, _DateReal);
        return (0, _createClass2["default"])(_class);
      }(DateReal);
    });
    afterEach(function () {
      global.Date = DateReal;
    });
    it('should not show past time slots [when] `excludePastTimes` prop is passed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee120() {
      var value, _render102, driver, _t116, _t117, _t118, _t119;
      return _regenerator().w(function (_context120) {
        while (1) switch (_context120.n) {
          case 0:
            value = new Date('2020-01-01 12:00');
            _render102 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              value: value,
              excludePastTimes: true,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 1399,
                columnNumber: 33
              }
            })), driver = _render102.driver;
            _context120.n = 1;
            return driver.clickOnInput();
          case 1:
            _t116 = expect;
            _context120.n = 2;
            return driver.isDropdownShown();
          case 2:
            _t116(_context120.v).toBeTruthy();
            _t117 = expect;
            _context120.n = 3;
            return driver.optionsCount();
          case 3:
            _t117(_context120.v).toEqual(48);
            _t118 = expect;
            _context120.n = 4;
            return driver.optionContentAt(0);
          case 4:
            _t118(_context120.v).toEqual('12:00 PM');
            _t119 = expect;
            _context120.n = 5;
            return driver.optionContentAt(47);
          case 5:
            _t119(_context120.v).toEqual('11:45 PM');
          case 6:
            return _context120.a(2);
        }
      }, _callee120);
    })));
    it('should set status to `error` [when] `excludePastTimes` set and custom past time entered', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee121() {
      var value, invalidMessage, onChange, _render103, driver, _t120, _t121;
      return _regenerator().w(function (_context121) {
        while (1) switch (_context121.n) {
          case 0:
            value = new Date('2020-01-01 12:00');
            invalidMessage = 'Invalid value';
            onChange = vi.fn();
            _render103 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              value: value,
              onChange: onChange,
              excludePastTimes: true,
              invalidMessage: invalidMessage,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 1416,
                columnNumber: 9
              }
            })), driver = _render103.driver;
            _context121.n = 1;
            return driver.setValue('10:45 AM');
          case 1:
            _context121.n = 2;
            return driver.confirmValue();
          case 2:
            _t120 = expect;
            _context121.n = 3;
            return driver.hasStatus('error');
          case 3:
            _t120(_context121.v).toBeTruthy();
            _t121 = expect;
            _context121.n = 4;
            return driver.getStatusMessage();
          case 4:
            _t121(_context121.v).toBe(invalidMessage);
            expect(onChange).not.toHaveBeenCalled();
          case 5:
            return _context121.a(2);
        }
      }, _callee121);
    })));
    it('should call onInvalid with "outOfBoundsError" [when] custom past time entered', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee122() {
      var value, onChange, onInvalid, _render104, driver, invalidValue;
      return _regenerator().w(function (_context122) {
        while (1) switch (_context122.n) {
          case 0:
            value = new Date('2020-01-01 12:00');
            onChange = vi.fn();
            onInvalid = vi.fn();
            _render104 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              value: value,
              onChange: onChange,
              onInvalid: onInvalid,
              excludePastTimes: true,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 1438,
                columnNumber: 9
              }
            })), driver = _render104.driver;
            invalidValue = '10:45 AM';
            _context122.n = 1;
            return driver.setValue(invalidValue);
          case 1:
            _context122.n = 2;
            return driver.confirmValue();
          case 2:
            expect(onInvalid).toHaveBeenCalledWith({
              validationType: 'outOfBoundsError',
              value: invalidValue
            });
            expect(onChange).not.toHaveBeenCalled();
          case 3:
            return _context122.a(2);
        }
      }, _callee122);
    })));
    it('should call `onChange` [when] `excludePastTimes` set and custom future time entered', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee123() {
      var value, onChange, _render105, driver;
      return _regenerator().w(function (_context123) {
        while (1) switch (_context123.n) {
          case 0:
            value = new Date('2020-01-01 12:00');
            onChange = vi.fn();
            _render105 = render(/*#__PURE__*/_react["default"].createElement(_TimeInput.TimeInput, {
              value: value,
              onChange: onChange,
              excludePastTimes: true,
              __self: _this,
              __source: {
                fileName: _jsxFileName,
                lineNumber: 1462,
                columnNumber: 9
              }
            })), driver = _render105.driver;
            _context123.n = 1;
            return driver.setValue('01:45 PM');
          case 1:
            _context123.n = 2;
            return driver.confirmValue();
          case 2:
            expect(onChange).toHaveBeenCalledWith({
              date: new Date('2020-01-01 13:45')
            });
          case 3:
            return _context123.a(2);
        }
      }, _callee123);
    })));
  });
});