@pingux/astro 2.68.0-alpha.2 → 2.69.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -289,18 +289,20 @@ describe('CopyText', function () {
289
289
  return _regeneratorRuntime().wrap(function _callee12$(_context12) {
290
290
  while (1) switch (_context12.prev = _context12.next) {
291
291
  case 0:
292
+ jest.useRealTimers();
292
293
  getComponent();
293
294
  button = _testWrapper.screen.getByLabelText('copy to clipboard');
294
295
  _testWrapper.fireEvent.click(button);
295
296
  expect(_testWrapper.screen.queryByRole('tooltip')).toBeInTheDocument();
296
297
  expect(_testWrapper.screen.queryByRole('tooltip')).toHaveTextContent('Copied!');
297
- _context12.next = 7;
298
+ _context12.next = 8;
298
299
  return new _promise["default"](function (resolve) {
299
300
  return (0, _setTimeout2["default"])(resolve, 1000);
300
301
  });
301
- case 7:
302
- expect(_testWrapper.screen.queryByRole('tooltip')).toHaveTextContent('Copy to clipboard');
303
302
  case 8:
303
+ expect(_testWrapper.screen.queryByRole('tooltip')).toHaveTextContent('Copy to clipboard');
304
+ jest.useFakeTimers();
305
+ case 10:
304
306
  case "end":
305
307
  return _context12.stop();
306
308
  }
@@ -32,7 +32,6 @@ var _reactStately = require("react-stately");
32
32
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
33
33
  var _ = require("../..");
34
34
  var _testWrapper = require("../../utils/testUtils/testWrapper");
35
- var _universalComponentTest = require("../../utils/testUtils/universalComponentTest");
36
35
  var _EnvironmentBreadcrumb = require("./EnvironmentBreadcrumb");
37
36
  var _react2 = require("@emotion/react");
38
37
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = _Object$defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof _Symbol ? _Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return _Object$defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = _Object$create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = _Object$getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = _Object$create(IteratorPrototype); function defineIteratorMethods(prototype) { var _context6; _forEachInstanceProperty2(_context6 = ["next", "throw", "return"]).call(_context6, function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], _forEachInstanceProperty2(tryLocsList).call(tryLocsList, pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return _Object$setPrototypeOf ? _Object$setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = _Object$create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = _Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return _reverseInstanceProperty(keys).call(keys), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { var _context7; if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, _forEachInstanceProperty2(_context7 = this.tryEntries).call(_context7, resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+_sliceInstanceProperty(name).call(name, 1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
@@ -126,12 +125,11 @@ var getSectionsComponent = function getSectionsComponent() {
126
125
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
127
126
  return (0, _testWrapper.render)(renderSectionsComponent(props));
128
127
  };
129
- (0, _universalComponentTest.universalComponentTests)({
130
- renderComponent: renderComponent
131
- });
132
- (0, _universalComponentTest.universalComponentTests)({
133
- renderComponent: renderSectionsComponent
134
- });
128
+
129
+ // This file does not call universalComponentTests directly. There is a separate file,
130
+ // ./EnvironmentalBreadcrumbUniversal.test.tsx, that calls it for both the EnvironmentBreadcrumb
131
+ // and the EnvironmentBreadcrumb with sections.
132
+
135
133
  beforeAll(function () {
136
134
  var callback = function callback(cb) {
137
135
  return cb();
@@ -147,7 +145,6 @@ beforeAll(function () {
147
145
  return 1024;
148
146
  });
149
147
  jest.spyOn(window, 'requestAnimationFrame').mockImplementation(callback);
150
- jest.useFakeTimers();
151
148
  });
152
149
  afterEach(function () {
153
150
  jest.clearAllMocks();
@@ -90,6 +90,7 @@ test('renders Messages component in the default state with dynamic list', functi
90
90
  expect(messages).toBeInTheDocument();
91
91
  });
92
92
  test('click on close button fires `onClose` callback', function () {
93
+ jest.useRealTimers();
93
94
  var onClose = jest.fn();
94
95
  getComponent({
95
96
  onClose: onClose
@@ -97,8 +98,10 @@ test('click on close button fires `onClose` callback', function () {
97
98
  var buttons = _testWrapper.screen.getAllByRole('button');
98
99
  _userEvent["default"].click(buttons[0]);
99
100
  expect(onClose).toHaveBeenCalled();
101
+ jest.useFakeTimers();
100
102
  });
101
103
  test('`onClose` get as first arg key of message', function () {
104
+ jest.useRealTimers();
102
105
  var onClose = jest.fn();
103
106
  getComponent({
104
107
  onClose: onClose
@@ -106,9 +109,9 @@ test('`onClose` get as first arg key of message', function () {
106
109
  var buttons = _testWrapper.screen.getAllByRole('button');
107
110
  _userEvent["default"].click(buttons[0]);
108
111
  expect(onClose).toHaveBeenCalledWith('message1');
112
+ jest.useFakeTimers();
109
113
  });
110
114
  test('click on close button removes message after delay', function () {
111
- jest.useFakeTimers();
112
115
  getComponent();
113
116
  var messages = _testWrapper.screen.getByTestId(testId);
114
117
  expect(messages.childElementCount).toBe(2);
@@ -9,10 +9,12 @@ _Object$defineProperty(exports, "__esModule", {
9
9
  value: true
10
10
  });
11
11
  exports["default"] = exports.Default = void 0;
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
12
13
  var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/entries"));
14
+ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
13
15
  var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
14
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
15
16
  var _react = _interopRequireWildcard(require("react"));
17
+ var _i18n = require("@react-aria/i18n");
16
18
  var _countriesList = require("countries-list");
17
19
  var _storybookAddonDesigns = require("storybook-addon-designs");
18
20
  var _index = require("../index");
@@ -51,49 +53,53 @@ var sx = {
51
53
  }
52
54
  };
53
55
  var Default = function Default() {
56
+ var countries = (0, _entries["default"])(_countriesList.countries);
54
57
  var _useState = (0, _react.useState)(false),
55
58
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
56
59
  isOpen = _useState2[0],
57
60
  setIsOpen = _useState2[1];
58
61
  var _useState3 = (0, _react.useState)(''),
59
62
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
60
- searchValue = _useState4[0],
61
- setSearchValue = _useState4[1];
62
- var _useState5 = (0, _react.useState)(''),
63
+ phoneNumber = _useState4[0],
64
+ setPhoneNumber = _useState4[1];
65
+ var _useState5 = (0, _react.useState)({
66
+ inputValue: '',
67
+ selectedKey: '',
68
+ searchValue: '',
69
+ items: countries
70
+ }),
63
71
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
64
- phoneCodeValue = _useState6[0],
65
- setPhoneCodeValue = _useState6[1];
66
- var _useState7 = (0, _react.useState)(null),
67
- _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
68
- selectedKey = _useState8[0],
69
- setSelectedKey = _useState8[1];
70
- var _useState9 = (0, _react.useState)(''),
71
- _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
72
- phoneNumber = _useState10[0],
73
- setPhoneNumber = _useState10[1];
74
- var getInputValue = function getInputValue() {
75
- if (isOpen) return searchValue;
76
- return phoneCodeValue || searchValue;
77
- };
78
- var inputHandler = function inputHandler(value) {
79
- setSearchValue(value);
80
- if (!value) {
81
- setSelectedKey(null);
82
- setPhoneCodeValue('');
83
- }
84
- };
72
+ fieldState = _useState6[0],
73
+ setFieldState = _useState6[1];
74
+ var _useFilter = (0, _i18n.useFilter)({
75
+ sensitivity: 'base'
76
+ }),
77
+ contains = _useFilter.contains;
78
+ var inputHandler = (0, _react.useCallback)(function (value) {
79
+ setFieldState({
80
+ inputValue: !value ? '' : value,
81
+ selectedKey: null,
82
+ searchValue: value,
83
+ items: (0, _filter["default"])(countries).call(countries, function (item) {
84
+ var _context, _context2;
85
+ return contains((0, _concat["default"])(_context = (0, _concat["default"])(_context2 = "".concat(item[1].name)).call(_context2, item[1].name !== item[1]["native"] ? " (".concat(item[1]["native"], ")") : '', " +")).call(_context, item[1].phone[0]), value);
86
+ })
87
+ });
88
+ }, [countries, setFieldState, contains]);
85
89
  var selectionHandler = function selectionHandler(key) {
86
- setSelectedKey(key);
87
- if (key) {
88
- setPhoneCodeValue("+".concat(_countriesList.countries[key].phone.split(',')[0]));
89
- } else {
90
- setSearchValue('');
91
- setPhoneCodeValue('');
92
- }
93
- setIsOpen(false);
94
- };
95
- var keyHandler = function keyHandler(e) {
96
- if (e.keyCode !== 13) setIsOpen(true);
90
+ var selectedItem = (0, _entries["default"])((0, _filter["default"])(countries).call(countries, function (item) {
91
+ return item[0] === key;
92
+ }));
93
+ setFieldState({
94
+ inputValue: key ? "+".concat(_countriesList.countries[key].phone.split(',')[0]) : '',
95
+ selectedKey: key,
96
+ searchValue: !key ? '' : "+".concat(_countriesList.countries[key].phone.split(',')[0]),
97
+ items: (0, _filter["default"])(countries).call(countries, function (item) {
98
+ var _selectedItem$1$name, _selectedItem$;
99
+ return contains(item[1].name, (_selectedItem$1$name = (_selectedItem$ = selectedItem[1]) === null || _selectedItem$ === void 0 ? void 0 : _selectedItem$.name) !== null && _selectedItem$1$name !== void 0 ? _selectedItem$1$name : '');
100
+ })
101
+ });
102
+ if (isOpen) setIsOpen(false);
97
103
  };
98
104
  var onPhoneNumberValueChange = function onPhoneNumberValueChange(e) {
99
105
  var value = e.target.value;
@@ -118,18 +124,20 @@ var Default = function Default() {
118
124
  scrollBoxProps: {
119
125
  maxHeight: '215px'
120
126
  },
121
- defaultItems: (0, _entries["default"])(_countriesList.countries),
122
- inputValue: getInputValue(),
127
+ items: fieldState.items,
128
+ inputValue: isOpen ? fieldState.searchValue : fieldState.inputValue,
129
+ selectedKey: fieldState.selectedKey,
123
130
  onInputChange: inputHandler,
124
- selectedKey: selectedKey,
125
131
  onSelectionChange: selectionHandler,
126
- onKeyUp: keyHandler,
127
- menuTrigger: "focus"
132
+ menuTrigger: "focus",
133
+ "aria-labelledby": "group-label",
134
+ label: " "
128
135
  }, function (item) {
129
- var _context, _context2;
136
+ var _context3, _context4;
130
137
  return (0, _react2.jsx)(_index.Item, {
131
- key: item[0]
132
- }, (0, _concat["default"])(_context = (0, _concat["default"])(_context2 = "".concat(item[1].name)).call(_context2, item[1].name !== item[1]["native"] ? " (".concat(item[1]["native"], ")") : '', " +")).call(_context, item[1].phone.split(',')[0]));
138
+ key: item[0],
139
+ textValue: "+".concat(item[1].phone.split(',')[0])
140
+ }, (0, _concat["default"])(_context3 = (0, _concat["default"])(_context4 = "".concat(item[1].name)).call(_context4, item[1].name !== item[1]["native"] ? " (".concat(item[1]["native"], ")") : '', " +")).call(_context3, item[1].phone.split(',')[0]));
133
141
  }), (0, _react2.jsx)(_index.Box, {
134
142
  sx: sx.inputWrapper
135
143
  }, (0, _react2.jsx)(_index.Input, {
@@ -63,8 +63,9 @@ var universalComponentTests = /*#__PURE__*/function () {
63
63
  });
64
64
  case 4:
65
65
  results = _context.sent;
66
+ jest.useFakeTimers();
66
67
  expect(results).toHaveNoViolations();
67
- case 6:
68
+ case 7:
68
69
  case "end":
69
70
  return _context.stop();
70
71
  }
@@ -284,18 +284,20 @@ describe('CopyText', function () {
284
284
  return _regeneratorRuntime().wrap(function _callee12$(_context12) {
285
285
  while (1) switch (_context12.prev = _context12.next) {
286
286
  case 0:
287
+ jest.useRealTimers();
287
288
  getComponent();
288
289
  button = screen.getByLabelText('copy to clipboard');
289
290
  fireEvent.click(button);
290
291
  expect(screen.queryByRole('tooltip')).toBeInTheDocument();
291
292
  expect(screen.queryByRole('tooltip')).toHaveTextContent('Copied!');
292
- _context12.next = 7;
293
+ _context12.next = 8;
293
294
  return new _Promise(function (resolve) {
294
295
  return _setTimeout(resolve, 1000);
295
296
  });
296
- case 7:
297
- expect(screen.queryByRole('tooltip')).toHaveTextContent('Copy to clipboard');
298
297
  case 8:
298
+ expect(screen.queryByRole('tooltip')).toHaveTextContent('Copy to clipboard');
299
+ jest.useFakeTimers();
300
+ case 10:
299
301
  case "end":
300
302
  return _context12.stop();
301
303
  }
@@ -27,7 +27,6 @@ import { Section } from 'react-stately';
27
27
  import userEvent from '@testing-library/user-event';
28
28
  import { EnvironmentBreadcrumb, Item, OverlayProvider } from '../..';
29
29
  import { render, screen, within } from '../../utils/testUtils/testWrapper';
30
- import { universalComponentTests } from '../../utils/testUtils/universalComponentTest';
31
30
  import { breadCrumbDataIds } from './EnvironmentBreadcrumb';
32
31
  import { jsx as ___EmotionJSX } from "@emotion/react";
33
32
  var testEnvBreadcrumb = 'test-env-breadcrumb';
@@ -116,12 +115,11 @@ var getSectionsComponent = function getSectionsComponent() {
116
115
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
117
116
  return render(renderSectionsComponent(props));
118
117
  };
119
- universalComponentTests({
120
- renderComponent: renderComponent
121
- });
122
- universalComponentTests({
123
- renderComponent: renderSectionsComponent
124
- });
118
+
119
+ // This file does not call universalComponentTests directly. There is a separate file,
120
+ // ./EnvironmentalBreadcrumbUniversal.test.tsx, that calls it for both the EnvironmentBreadcrumb
121
+ // and the EnvironmentBreadcrumb with sections.
122
+
125
123
  beforeAll(function () {
126
124
  var callback = function callback(cb) {
127
125
  return cb();
@@ -137,7 +135,6 @@ beforeAll(function () {
137
135
  return 1024;
138
136
  });
139
137
  jest.spyOn(window, 'requestAnimationFrame').mockImplementation(callback);
140
- jest.useFakeTimers();
141
138
  });
142
139
  afterEach(function () {
143
140
  jest.clearAllMocks();
@@ -81,6 +81,7 @@ test('renders Messages component in the default state with dynamic list', functi
81
81
  expect(messages).toBeInTheDocument();
82
82
  });
83
83
  test('click on close button fires `onClose` callback', function () {
84
+ jest.useRealTimers();
84
85
  var onClose = jest.fn();
85
86
  getComponent({
86
87
  onClose: onClose
@@ -88,8 +89,10 @@ test('click on close button fires `onClose` callback', function () {
88
89
  var buttons = screen.getAllByRole('button');
89
90
  userEvent.click(buttons[0]);
90
91
  expect(onClose).toHaveBeenCalled();
92
+ jest.useFakeTimers();
91
93
  });
92
94
  test('`onClose` get as first arg key of message', function () {
95
+ jest.useRealTimers();
93
96
  var onClose = jest.fn();
94
97
  getComponent({
95
98
  onClose: onClose
@@ -97,9 +100,9 @@ test('`onClose` get as first arg key of message', function () {
97
100
  var buttons = screen.getAllByRole('button');
98
101
  userEvent.click(buttons[0]);
99
102
  expect(onClose).toHaveBeenCalledWith('message1');
103
+ jest.useFakeTimers();
100
104
  });
101
105
  test('click on close button removes message after delay', function () {
102
- jest.useFakeTimers();
103
106
  getComponent();
104
107
  var messages = screen.getByTestId(testId);
105
108
  expect(messages.childElementCount).toBe(2);
@@ -1,7 +1,9 @@
1
1
  import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
2
2
  import _Object$entries from "@babel/runtime-corejs3/core-js-stable/object/entries";
3
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
3
4
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
4
- import React, { useState } from 'react';
5
+ import React, { useCallback, useState } from 'react';
6
+ import { useFilter } from '@react-aria/i18n';
5
7
  import { countries as countriesObj } from 'countries-list';
6
8
  import { withDesign } from 'storybook-addon-designs';
7
9
  import { Box, ComboBoxField, Input, Item } from '../index';
@@ -37,49 +39,53 @@ var sx = {
37
39
  }
38
40
  };
39
41
  export var Default = function Default() {
42
+ var countries = _Object$entries(countriesObj);
40
43
  var _useState = useState(false),
41
44
  _useState2 = _slicedToArray(_useState, 2),
42
45
  isOpen = _useState2[0],
43
46
  setIsOpen = _useState2[1];
44
47
  var _useState3 = useState(''),
45
48
  _useState4 = _slicedToArray(_useState3, 2),
46
- searchValue = _useState4[0],
47
- setSearchValue = _useState4[1];
48
- var _useState5 = useState(''),
49
+ phoneNumber = _useState4[0],
50
+ setPhoneNumber = _useState4[1];
51
+ var _useState5 = useState({
52
+ inputValue: '',
53
+ selectedKey: '',
54
+ searchValue: '',
55
+ items: countries
56
+ }),
49
57
  _useState6 = _slicedToArray(_useState5, 2),
50
- phoneCodeValue = _useState6[0],
51
- setPhoneCodeValue = _useState6[1];
52
- var _useState7 = useState(null),
53
- _useState8 = _slicedToArray(_useState7, 2),
54
- selectedKey = _useState8[0],
55
- setSelectedKey = _useState8[1];
56
- var _useState9 = useState(''),
57
- _useState10 = _slicedToArray(_useState9, 2),
58
- phoneNumber = _useState10[0],
59
- setPhoneNumber = _useState10[1];
60
- var getInputValue = function getInputValue() {
61
- if (isOpen) return searchValue;
62
- return phoneCodeValue || searchValue;
63
- };
64
- var inputHandler = function inputHandler(value) {
65
- setSearchValue(value);
66
- if (!value) {
67
- setSelectedKey(null);
68
- setPhoneCodeValue('');
69
- }
70
- };
58
+ fieldState = _useState6[0],
59
+ setFieldState = _useState6[1];
60
+ var _useFilter = useFilter({
61
+ sensitivity: 'base'
62
+ }),
63
+ contains = _useFilter.contains;
64
+ var inputHandler = useCallback(function (value) {
65
+ setFieldState({
66
+ inputValue: !value ? '' : value,
67
+ selectedKey: null,
68
+ searchValue: value,
69
+ items: _filterInstanceProperty(countries).call(countries, function (item) {
70
+ var _context, _context2;
71
+ return contains(_concatInstanceProperty(_context = _concatInstanceProperty(_context2 = "".concat(item[1].name)).call(_context2, item[1].name !== item[1]["native"] ? " (".concat(item[1]["native"], ")") : '', " +")).call(_context, item[1].phone[0]), value);
72
+ })
73
+ });
74
+ }, [countries, setFieldState, contains]);
71
75
  var selectionHandler = function selectionHandler(key) {
72
- setSelectedKey(key);
73
- if (key) {
74
- setPhoneCodeValue("+".concat(countriesObj[key].phone.split(',')[0]));
75
- } else {
76
- setSearchValue('');
77
- setPhoneCodeValue('');
78
- }
79
- setIsOpen(false);
80
- };
81
- var keyHandler = function keyHandler(e) {
82
- if (e.keyCode !== 13) setIsOpen(true);
76
+ var selectedItem = _Object$entries(_filterInstanceProperty(countries).call(countries, function (item) {
77
+ return item[0] === key;
78
+ }));
79
+ setFieldState({
80
+ inputValue: key ? "+".concat(countriesObj[key].phone.split(',')[0]) : '',
81
+ selectedKey: key,
82
+ searchValue: !key ? '' : "+".concat(countriesObj[key].phone.split(',')[0]),
83
+ items: _filterInstanceProperty(countries).call(countries, function (item) {
84
+ var _selectedItem$1$name, _selectedItem$;
85
+ return contains(item[1].name, (_selectedItem$1$name = (_selectedItem$ = selectedItem[1]) === null || _selectedItem$ === void 0 ? void 0 : _selectedItem$.name) !== null && _selectedItem$1$name !== void 0 ? _selectedItem$1$name : '');
86
+ })
87
+ });
88
+ if (isOpen) setIsOpen(false);
83
89
  };
84
90
  var onPhoneNumberValueChange = function onPhoneNumberValueChange(e) {
85
91
  var value = e.target.value;
@@ -104,18 +110,20 @@ export var Default = function Default() {
104
110
  scrollBoxProps: {
105
111
  maxHeight: '215px'
106
112
  },
107
- defaultItems: _Object$entries(countriesObj),
108
- inputValue: getInputValue(),
113
+ items: fieldState.items,
114
+ inputValue: isOpen ? fieldState.searchValue : fieldState.inputValue,
115
+ selectedKey: fieldState.selectedKey,
109
116
  onInputChange: inputHandler,
110
- selectedKey: selectedKey,
111
117
  onSelectionChange: selectionHandler,
112
- onKeyUp: keyHandler,
113
- menuTrigger: "focus"
118
+ menuTrigger: "focus",
119
+ "aria-labelledby": "group-label",
120
+ label: " "
114
121
  }, function (item) {
115
- var _context, _context2;
122
+ var _context3, _context4;
116
123
  return ___EmotionJSX(Item, {
117
- key: item[0]
118
- }, _concatInstanceProperty(_context = _concatInstanceProperty(_context2 = "".concat(item[1].name)).call(_context2, item[1].name !== item[1]["native"] ? " (".concat(item[1]["native"], ")") : '', " +")).call(_context, item[1].phone.split(',')[0]));
124
+ key: item[0],
125
+ textValue: "+".concat(item[1].phone.split(',')[0])
126
+ }, _concatInstanceProperty(_context3 = _concatInstanceProperty(_context4 = "".concat(item[1].name)).call(_context4, item[1].name !== item[1]["native"] ? " (".concat(item[1]["native"], ")") : '', " +")).call(_context3, item[1].phone.split(',')[0]));
119
127
  }), ___EmotionJSX(Box, {
120
128
  sx: sx.inputWrapper
121
129
  }, ___EmotionJSX(Input, {
@@ -52,8 +52,9 @@ export var universalComponentTests = /*#__PURE__*/function () {
52
52
  });
53
53
  case 4:
54
54
  results = _context.sent;
55
+ jest.useFakeTimers();
55
56
  expect(results).toHaveNoViolations();
56
- case 6:
57
+ case 7:
57
58
  case "end":
58
59
  return _context.stop();
59
60
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pingux/astro",
3
- "version": "2.68.0-alpha.2",
3
+ "version": "2.69.0-alpha.0",
4
4
  "description": "React component library for Ping Identity's design system",
5
5
  "repository": {
6
6
  "type": "git",