@pingux/astro 1.5.1-alpha.1 → 1.6.0-alpha.2

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.
@@ -114,7 +114,8 @@ var ComboBoxField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
114
114
  menuTrigger = props.menuTrigger,
115
115
  isNotFlippable = props.isNotFlippable,
116
116
  direction = props.direction,
117
- scrollBoxProps = props.scrollBoxProps;
117
+ scrollBoxProps = props.scrollBoxProps,
118
+ defaultFilter = props.defaultFilter;
118
119
  var comboBoxOptions = {
119
120
  children: children,
120
121
  isRequired: isRequired,
@@ -171,7 +172,7 @@ var ComboBoxField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
171
172
 
172
173
  var state = (0, _combobox2.useComboBoxState)(_objectSpread(_objectSpread({}, comboBoxOptions), {}, {
173
174
  onSelectionChange: hasCustomValue ? onSelectionChangeHandler : onSelectionChange,
174
- defaultFilter: contains
175
+ defaultFilter: typeof defaultFilter !== 'undefined' ? defaultFilter : contains
175
176
  }));
176
177
 
177
178
  var _useComboBox = (0, _combobox.useComboBox)(_objectSpread(_objectSpread({}, comboBoxOptions), {}, {
@@ -224,7 +225,7 @@ var ComboBoxField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
224
225
  if (inputRef.current) {
225
226
  setMenuWidth(inputRef.current.offsetWidth);
226
227
  }
227
- }, [inputRef, setMenuWidth, state.isOpen]);
228
+ }, [inputRef, setMenuWidth]);
228
229
  (0, _utils.useResizeObserver)({
229
230
  ref: inputRef,
230
231
  onResize: onResize
@@ -394,6 +395,14 @@ ComboBoxField.propTypes = {
394
395
  * `(e: KeyboardEvent) => void`
395
396
  */
396
397
  onKeyUp: _propTypes["default"].func,
398
+
399
+ /**
400
+ * Handler that determines the default filtering for items. If undefined, `contains` from
401
+ * [useFilter](https://react-spectrum.adobe.com/react-aria/useFilter.html) is used.
402
+ *
403
+ * `(option: string, inputValue: string) => boolean`
404
+ */
405
+ defaultFilter: _propTypes["default"].func,
397
406
  // /** Props object that is spread directly into the ScrollBox element. */
398
407
 
399
408
  /** @ignore */
@@ -10,7 +10,7 @@ _Object$defineProperty(exports, "__esModule", {
10
10
  value: true
11
11
  });
12
12
 
13
- exports.WithCustomHeight = exports.WithoutStatusIndicator = exports.Required = exports.HelperText = exports.Disabled = exports.FocusMenuTrigger = exports.DisabledKeys = exports.AllowCustomValue = exports.ControlledWithCustomValue = exports.ControlledFiltering = exports.ControlledSelection = exports.ControlledMenu = exports.ControlledInput = exports.AsyncLoading = exports.WithSections = exports.Default = exports["default"] = void 0;
13
+ exports.CustomDefaultFilter = exports.WithCustomHeight = exports.WithoutStatusIndicator = exports.Required = exports.HelperText = exports.Disabled = exports.FocusMenuTrigger = exports.DisabledKeys = exports.AllowCustomValue = exports.ControlledWithCustomValue = exports.ControlledFiltering = exports.ControlledSelection = exports.ControlledMenu = exports.ControlledInput = exports.AsyncLoading = exports.WithSections = exports.Default = exports["default"] = void 0;
14
14
 
15
15
  var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
16
16
 
@@ -367,7 +367,7 @@ var ControlledFiltering = function ControlledFiltering() {
367
367
  return (0, _filter["default"])(items).call(items, function (item) {
368
368
  return startsWith(item.name, filterValue);
369
369
  });
370
- }, [items, filterValue]);
370
+ }, [startsWith, filterValue]);
371
371
  return (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_ComboBoxField["default"], (0, _extends2["default"])({
372
372
  label: "Example label"
373
373
  }, actions, {
@@ -520,4 +520,23 @@ var WithCustomHeight = function WithCustomHeight() {
520
520
  }));
521
521
  };
522
522
 
523
- exports.WithCustomHeight = WithCustomHeight;
523
+ exports.WithCustomHeight = WithCustomHeight;
524
+
525
+ var CustomDefaultFilter = function CustomDefaultFilter() {
526
+ var _useFilter2 = (0, _i18n.useFilter)({
527
+ sensitivity: 'base'
528
+ }),
529
+ startsWith = (0, _startsWith["default"])(_useFilter2);
530
+
531
+ return (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_ComboBoxField["default"], (0, _extends2["default"])({
532
+ label: "Example label",
533
+ defaultItems: animals,
534
+ defaultFilter: startsWith
535
+ }, actions), function (item) {
536
+ return (0, _react2.jsx)(_index.Item, {
537
+ key: item.name
538
+ }, item.name);
539
+ }));
540
+ };
541
+
542
+ exports.CustomDefaultFilter = CustomDefaultFilter;
@@ -79,7 +79,7 @@ var ComboBoxWithCustomFilter = function ComboBoxWithCustomFilter() {
79
79
  return (0, _filter["default"])(items).call(items, function (item) {
80
80
  return startsWith(item.name, filterValue);
81
81
  });
82
- }, [items, filterValue]);
82
+ }, [startsWith, filterValue]);
83
83
  return (0, _react2.jsx)(_index.ComboBoxField, (0, _extends2["default"])({}, defaultProps, {
84
84
  items: filteredItems,
85
85
  inputValue: filterValue,
@@ -450,6 +450,46 @@ test('should be able to use controlled filtering', /*#__PURE__*/(0, _asyncToGene
450
450
  }
451
451
  }, _callee);
452
452
  })));
453
+ test('should be able to use custom default filtering', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
454
+ var options, defaultFilter, input;
455
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
456
+ while (1) {
457
+ switch (_context2.prev = _context2.next) {
458
+ case 0:
459
+ defaultFilter = function defaultFilter(option, inputValue) {
460
+ return (0, _startsWith["default"])(option).call(option, inputValue);
461
+ };
462
+
463
+ getComponent({
464
+ defaultFilter: defaultFilter
465
+ });
466
+ input = _testWrapper.screen.queryByRole('combobox'); // Should list all without filterable input
467
+
468
+ _userEvent["default"].type(input, '{arrowdown}');
469
+
470
+ _context2.next = 6;
471
+ return _testWrapper.screen.findAllByRole('option');
472
+
473
+ case 6:
474
+ options = _context2.sent;
475
+ expect(options).toHaveLength(items.length); // Should only list the second option
476
+
477
+ _userEvent["default"].type(input, 'K');
478
+
479
+ _context2.next = 11;
480
+ return _testWrapper.screen.findAllByRole('option');
481
+
482
+ case 11:
483
+ options = _context2.sent;
484
+ expect(options[0]).toHaveTextContent(items[1].name);
485
+
486
+ case 13:
487
+ case "end":
488
+ return _context2.stop();
489
+ }
490
+ }
491
+ }, _callee2);
492
+ })));
453
493
  describe('loadingState', function () {
454
494
  it('combobox should not render a loader if menu is not open', function () {
455
495
  var _getComponent = getComponent({
@@ -816,26 +856,26 @@ test('onSelectionChange works properly with custom value', function () {
816
856
 
817
857
  expect(onSelectionChange).toHaveBeenCalledWith('');
818
858
  });
819
- test('should have no accessibility violations', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
859
+ test('should have no accessibility violations', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
820
860
  var _getComponent6, container, results;
821
861
 
822
- return _regenerator["default"].wrap(function _callee2$(_context2) {
862
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
823
863
  while (1) {
824
- switch (_context2.prev = _context2.next) {
864
+ switch (_context3.prev = _context3.next) {
825
865
  case 0:
826
866
  jest.useRealTimers();
827
867
  _getComponent6 = getComponent(), container = _getComponent6.container;
828
- _context2.next = 4;
868
+ _context3.next = 4;
829
869
  return (0, _jestAxe.axe)(container);
830
870
 
831
871
  case 4:
832
- results = _context2.sent;
872
+ results = _context3.sent;
833
873
  expect(results).toHaveNoViolations();
834
874
 
835
875
  case 6:
836
876
  case "end":
837
- return _context2.stop();
877
+ return _context3.stop();
838
878
  }
839
879
  }
840
- }, _callee2);
880
+ }, _callee3);
841
881
  })));
@@ -48,6 +48,7 @@ var FieldHelperText = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
48
48
 
49
49
  return (0, _react2.jsx)(_Text["default"], (0, _extends2["default"])({
50
50
  ref: ref,
51
+ pt: "sm",
51
52
  variant: "fieldHelperText",
52
53
  role: "status"
53
54
  }, others, {
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
6
+
7
+ var _Object$defineProperty2 = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
8
+
9
+ _Object$defineProperty2(exports, "__esModule", {
10
+ value: true
11
+ });
12
+
13
+ exports["default"] = void 0;
14
+
15
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-property"));
16
+
17
+ var _defineProperties = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-properties"));
18
+
19
+ var _getOwnPropertyDescriptors = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors"));
20
+
21
+ var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
22
+
23
+ var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor"));
24
+
25
+ var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols"));
26
+
27
+ var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
28
+
29
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
30
+
31
+ var _sort = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/sort"));
32
+
33
+ var _parseFloat2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/parse-float"));
34
+
35
+ var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));
36
+
37
+ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
38
+
39
+ var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/entries"));
40
+
41
+ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
42
+
43
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
44
+
45
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
46
+
47
+ var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
48
+
49
+ var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
50
+
51
+ var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
52
+
53
+ var _react = _interopRequireWildcard(require("react"));
54
+
55
+ var _propTypes = _interopRequireDefault(require("prop-types"));
56
+
57
+ var _timezones = _interopRequireWildcard(require("./timezones.js"));
58
+
59
+ var _index = require("../../index");
60
+
61
+ var _react2 = require("@emotion/react");
62
+
63
+ function ownKeys(object, enumerableOnly) { var keys = (0, _keys["default"])(object); if (_getOwnPropertySymbols["default"]) { var symbols = (0, _getOwnPropertySymbols["default"])(object); if (enumerableOnly) symbols = (0, _filter["default"])(symbols).call(symbols, function (sym) { return (0, _getOwnPropertyDescriptor["default"])(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
64
+
65
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context8; (0, _forEach["default"])(_context8 = ownKeys(Object(source), true)).call(_context8, function (key) { (0, _defineProperty3["default"])(target, key, source[key]); }); } else if (_getOwnPropertyDescriptors["default"]) { (0, _defineProperties["default"])(target, (0, _getOwnPropertyDescriptors["default"])(source)); } else { var _context9; (0, _forEach["default"])(_context9 = ownKeys(Object(source))).call(_context9, function (key) { (0, _defineProperty2["default"])(target, key, (0, _getOwnPropertyDescriptor["default"])(source, key)); }); } } return target; }
66
+
67
+ var createSearchTags = function createSearchTags(_ref) {
68
+ var _context, _context2, _context3, _context4;
69
+
70
+ var gmt = _ref.gmt,
71
+ gmtLabel = _ref.gmtLabel,
72
+ timeZone = _ref.timeZone;
73
+ var additionalTags = '';
74
+ var americaTimeZone = (0, _includes["default"])(timeZone).call(timeZone, 'America') && timeZone.substring(8);
75
+
76
+ if ((0, _includes["default"])(_timezones.usCities).call(_timezones.usCities, americaTimeZone)) {
77
+ additionalTags = "US ".concat(americaTimeZone);
78
+ }
79
+
80
+ return (0, _concat["default"])(_context = (0, _concat["default"])(_context2 = (0, _concat["default"])(_context3 = (0, _concat["default"])(_context4 = "".concat(gmt, " ")).call(_context4, gmtLabel, " ")).call(_context3, timeZone, " ")).call(_context2, timeZone === null || timeZone === void 0 ? void 0 : timeZone.replace(/_/g, ' '), " ")).call(_context, additionalTags);
81
+ };
82
+
83
+ var getLocaleTime = function getLocaleTime(_ref2) {
84
+ var timeZone = _ref2.timeZone,
85
+ locales = _ref2.locales,
86
+ localeOptions = _ref2.localeOptions;
87
+ var date = new Date();
88
+ return date.toLocaleTimeString(locales, _objectSpread({
89
+ timeZone: timeZone
90
+ }, localeOptions));
91
+ };
92
+ /**
93
+ * Component allows users to choose a timezone from the list.
94
+ * You can checkout the default timezones list [here](https://github.com/yury-dymov/react-bootstrap-timezone-picker/blob/master/src/timezones.json).
95
+ *
96
+ * Utilizes ComboBoxField component. You can use the same props as with
97
+ * the ComboBoxField - they will be spread into it.
98
+ */
99
+
100
+
101
+ var TimeZonePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
102
+ var additionalTimeZones = props.additionalTimeZones,
103
+ emptySearchText = props.emptySearchText,
104
+ locales = props.locales,
105
+ localeOptions = props.localeOptions,
106
+ otherProps = (0, _objectWithoutProperties2["default"])(props, ["additionalTimeZones", "emptySearchText", "locales", "localeOptions"]);
107
+
108
+ var _useState = (0, _react.useState)(''),
109
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
110
+ search = _useState2[0],
111
+ setSearch = _useState2[1];
112
+
113
+ var _useState3 = (0, _react.useState)(false),
114
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
115
+ timeUpdate = _useState4[0],
116
+ setTimeUpdate = _useState4[1];
117
+
118
+ var _useState5 = (0, _react.useState)([]),
119
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
120
+ timeZones = _useState6[0],
121
+ setTimeZones = _useState6[1];
122
+
123
+ var extendedTimeZonesList = additionalTimeZones ? _objectSpread(_objectSpread({}, _timezones["default"]), additionalTimeZones) : _timezones["default"];
124
+ var timeZonePickerRef = (0, _react.useRef)();
125
+ /* istanbul ignore next */
126
+
127
+ (0, _react.useImperativeHandle)(ref, function () {
128
+ return timeZonePickerRef.current;
129
+ });
130
+ (0, _react.useEffect)(function () {
131
+ if (timeUpdate) {
132
+ var createTimeZoneTimes = function createTimeZoneTimes() {
133
+ var _context5;
134
+
135
+ return (0, _map["default"])(_context5 = (0, _entries["default"])(extendedTimeZonesList)).call(_context5, function (item) {
136
+ var _item$;
137
+
138
+ var gmt = item[0].substring(1, 10);
139
+ var gmtLabel = item[0].substring(12);
140
+ var timeZone = (_item$ = item[1]) === null || _item$ === void 0 ? void 0 : _item$.replace(/_/g, ' ');
141
+ var time = getLocaleTime({
142
+ timeZone: item[1],
143
+ locales: locales,
144
+ localeOptions: localeOptions
145
+ });
146
+ var searchTags = createSearchTags({
147
+ gmt: gmt,
148
+ gmtLabel: gmtLabel,
149
+ timeZone: timeZone
150
+ });
151
+ return {
152
+ gmt: gmt,
153
+ timeZone: timeZone,
154
+ time: time,
155
+ searchTags: searchTags
156
+ };
157
+ });
158
+ };
159
+
160
+ setTimeZones(createTimeZoneTimes());
161
+ setTimeUpdate(false);
162
+ }
163
+ }, [extendedTimeZonesList, locales, localeOptions, timeUpdate]);
164
+ var filterTimezones = (0, _react.useCallback)(function (timeZonesList) {
165
+ return (0, _filter["default"])(timeZonesList).call(timeZonesList, function (_ref3) {
166
+ var _context6;
167
+
168
+ var searchTags = _ref3.searchTags;
169
+ return (0, _indexOf["default"])(_context6 = searchTags.toUpperCase()).call(_context6, search.toUpperCase()) > -1;
170
+ });
171
+ }, [search]);
172
+ var filteredTimezones = (0, _react.useMemo)(function () {
173
+ return filterTimezones(timeZones);
174
+ }, [filterTimezones, timeZones]);
175
+
176
+ var sortByGMT = function sortByGMT(a, b) {
177
+ var aNum = (0, _parseFloat2["default"])(a.gmt.split('GMT')[1].split(':')[0]);
178
+ var bNum = (0, _parseFloat2["default"])(b.gmt.split('GMT')[1].split(')')[0]);
179
+ return aNum - bNum;
180
+ };
181
+
182
+ var items = (0, _react.useMemo)(function () {
183
+ var _context7;
184
+
185
+ if (filteredTimezones.length === 0) {
186
+ return (0, _react2.jsx)(_index.Item, {
187
+ key: emptySearchText
188
+ }, emptySearchText);
189
+ }
190
+
191
+ return (0, _map["default"])(_context7 = (0, _sort["default"])(filteredTimezones).call(filteredTimezones, sortByGMT)).call(_context7, function (_ref4) {
192
+ var gmt = _ref4.gmt,
193
+ time = _ref4.time,
194
+ timeZone = _ref4.timeZone;
195
+ return (0, _react2.jsx)(_index.Item, {
196
+ key: timeZone,
197
+ "data-id": timeZone,
198
+ textValue: timeZone
199
+ }, (0, _react2.jsx)(_index.Box, {
200
+ flexDirection: "row",
201
+ justifyContent: "space-between",
202
+ width: "100%"
203
+ }, (0, _react2.jsx)(_index.Box, {
204
+ flexDirection: "row"
205
+ }, (0, _react2.jsx)(_index.Text, {
206
+ variant: "timeZone.title"
207
+ }, timeZone), (0, _react2.jsx)(_index.Text, {
208
+ variant: "timeZone.subTitle"
209
+ }, gmt)), (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Text, {
210
+ variant: "timeZone.time"
211
+ }, time))));
212
+ });
213
+ }, [emptySearchText, filteredTimezones]);
214
+ var comboBoxFieldProps = (0, _react.useMemo)(function () {
215
+ return _objectSpread({
216
+ controlProps: {
217
+ sx: {
218
+ width: 400,
219
+ fontSize: 'md'
220
+ }
221
+ },
222
+ onInputChange: setSearch,
223
+ items: filteredTimezones,
224
+ ref: timeZonePickerRef,
225
+ onOpenChange: function onOpenChange(isOpen) {
226
+ return setTimeUpdate(isOpen);
227
+ },
228
+ disabledKeys: [{
229
+ emptySearchText: emptySearchText
230
+ }]
231
+ }, otherProps);
232
+ }, [emptySearchText, filteredTimezones, otherProps]);
233
+ return (0, _react2.jsx)(_index.ComboBoxField, (0, _extends2["default"])({}, comboBoxFieldProps, {
234
+ disabledKeys: [emptySearchText]
235
+ }), items);
236
+ });
237
+ TimeZonePicker.propTypes = {
238
+ /**
239
+ * An object representing additional time zones to merge with the [default list](https://github.com/yury-dymov/react-bootstrap-timezone-picker/blob/master/src/timezones.json).
240
+ * The key may be customized, but the value should be a timezone string from the list in the [Time Zone Database](https://www.iana.org/time-zones).
241
+ *
242
+ * e.g. `{'(GMT+02:00) Africa/Juba': 'Africa/Juba'}`
243
+ */
244
+ additionalTimeZones: _propTypes["default"].shape({}),
245
+
246
+ /** Text that will be shown if no search results are found. */
247
+ emptySearchText: _propTypes["default"].string,
248
+
249
+ /** Locale(s) to use when generating the time format. See [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString#using_locales) for more info. */
250
+ locales: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].arrayOf(_propTypes["default"].string)]),
251
+
252
+ /** Custom options to use when generating the time format. See [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString#using_options) for more info. */
253
+ localeOptions: _propTypes["default"].shape({})
254
+ };
255
+ TimeZonePicker.defaultProps = {
256
+ emptySearchText: 'No Search Result',
257
+ locales: [],
258
+ localeOptions: {
259
+ hour12: true,
260
+ hour: '2-digit',
261
+ minute: '2-digit'
262
+ }
263
+ };
264
+ var _default = TimeZonePicker;
265
+ exports["default"] = _default;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+
5
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
6
+
7
+ _Object$defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+
11
+ exports.WithCustomTimeZone = exports.Default = exports["default"] = void 0;
12
+
13
+ var _react = _interopRequireDefault(require("react"));
14
+
15
+ var _TimeZonePicker = _interopRequireDefault(require("./TimeZonePicker"));
16
+
17
+ var _react2 = require("@emotion/react");
18
+
19
+ var _default = {
20
+ title: 'Form/TimeZonePicker',
21
+ component: _TimeZonePicker["default"]
22
+ };
23
+ exports["default"] = _default;
24
+
25
+ var Default = function Default() {
26
+ return (0, _react2.jsx)(_TimeZonePicker["default"], {
27
+ label: "Default Example"
28
+ });
29
+ };
30
+
31
+ exports.Default = Default;
32
+
33
+ var WithCustomTimeZone = function WithCustomTimeZone() {
34
+ var customTimeZone = {
35
+ '(GMT+02:00) Africa/Juba': 'Africa/Juba'
36
+ };
37
+ return (0, _react2.jsx)(_TimeZonePicker["default"], {
38
+ additionalTimeZones: customTimeZone,
39
+ label: "With Custom Time Zone (Africa/Juba)"
40
+ });
41
+ };
42
+
43
+ exports.WithCustomTimeZone = WithCustomTimeZone;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+
5
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
6
+
7
+ var _react = _interopRequireDefault(require("react"));
8
+
9
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
10
+
11
+ var _testWrapper = require("../../utils/testUtils/testWrapper");
12
+
13
+ var _index = require("../../index");
14
+
15
+ var _react2 = require("@emotion/react");
16
+
17
+ var testTimeZoneJuba = 'Africa/Juba';
18
+ var testTimeZoneApia = 'Pacific/Apia';
19
+ var defaultProps = {
20
+ label: 'Test Label'
21
+ };
22
+
23
+ var getComponent = function getComponent() {
24
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
25
+
26
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
27
+ _ref$renderFn = _ref.renderFn,
28
+ renderFn = _ref$renderFn === void 0 ? _testWrapper.render : _ref$renderFn;
29
+
30
+ return renderFn((0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.TimeZonePicker, (0, _extends2["default"])({}, defaultProps, props))));
31
+ };
32
+
33
+ beforeAll(function () {
34
+ jest.spyOn(window.HTMLElement.prototype, 'clientWidth', 'get').mockImplementation(function () {
35
+ return 1000;
36
+ });
37
+ jest.spyOn(window.HTMLElement.prototype, 'clientHeight', 'get').mockImplementation(function () {
38
+ return 1000;
39
+ });
40
+ window.HTMLElement.prototype.scrollIntoView = jest.fn();
41
+ jest.spyOn(window.screen, 'width', 'get').mockImplementation(function () {
42
+ return 1024;
43
+ });
44
+ jest.spyOn(window, 'requestAnimationFrame').mockImplementation(function (cb) {
45
+ return cb();
46
+ });
47
+ jest.useFakeTimers();
48
+ });
49
+ afterEach(function () {
50
+ jest.clearAllMocks();
51
+ });
52
+ afterAll(function () {
53
+ jest.restoreAllMocks();
54
+ });
55
+ test('renders ComboBoxField component', function () {
56
+ getComponent();
57
+
58
+ var input = _testWrapper.screen.queryByRole('combobox');
59
+
60
+ var label = _testWrapper.screen.getByText(defaultProps.label);
61
+
62
+ var button = _testWrapper.screen.queryByRole('button');
63
+
64
+ expect(input).toBeInTheDocument();
65
+ expect(_testWrapper.screen.queryAllByLabelText(defaultProps.label)).toEqual([input, button]);
66
+ expect(label).toBeInTheDocument();
67
+ expect(label).toHaveTextContent(defaultProps.label);
68
+ expect(button).toBeInTheDocument();
69
+ });
70
+ test('search is working correctly', function () {
71
+ getComponent();
72
+
73
+ var input = _testWrapper.screen.queryByRole('combobox');
74
+
75
+ _userEvent["default"].type(input, testTimeZoneApia);
76
+
77
+ expect(_testWrapper.screen.getByText(testTimeZoneApia)).toBeInTheDocument();
78
+ });
79
+ test('custom timezone can be added', function () {
80
+ getComponent({
81
+ additionalTimeZones: {
82
+ '(GMT+02:00) Africa/Juba': testTimeZoneJuba
83
+ }
84
+ });
85
+
86
+ var input = _testWrapper.screen.queryByRole('combobox');
87
+
88
+ _userEvent["default"].type(input, testTimeZoneJuba);
89
+
90
+ expect(_testWrapper.screen.getByText(testTimeZoneJuba)).toBeInTheDocument();
91
+ });
92
+ test('shows custom empty search state text when no items are found', function () {
93
+ var testEmptyText = 'test empty text';
94
+ getComponent({
95
+ emptySearchText: testEmptyText
96
+ });
97
+
98
+ var input = _testWrapper.screen.queryByRole('combobox');
99
+
100
+ _userEvent["default"].type(input, 'awdasrf213');
101
+
102
+ expect(_testWrapper.screen.getByText(testEmptyText)).toBeInTheDocument();
103
+ });
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+
5
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
6
+
7
+ _Object$defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+
11
+ _Object$defineProperty(exports, "default", {
12
+ enumerable: true,
13
+ get: function get() {
14
+ return _TimeZonePicker["default"];
15
+ }
16
+ });
17
+
18
+ var _TimeZonePicker = _interopRequireDefault(require("./TimeZonePicker"));