@pingux/astro 2.163.1-alpha.1 → 2.163.1-alpha.3

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.
Files changed (58) hide show
  1. package/lib/cjs/components/ComboBoxField/ComboBoxField.js +7 -3
  2. package/lib/cjs/components/ListBox/ListBox.js +15 -0
  3. package/lib/cjs/components/ListBox/ListBox.test.js +14 -1
  4. package/lib/cjs/components/MenuItem/MenuItem.js +22 -13
  5. package/lib/cjs/components/MenuItem/MenuItem.styles.d.ts +1 -1
  6. package/lib/cjs/components/MenuItem/MenuItem.styles.js +1 -1
  7. package/lib/cjs/components/MenuItem/MenuItem.test.js +217 -194
  8. package/lib/cjs/components/MenuSection/MenuSection.js +2 -1
  9. package/lib/cjs/components/PopoverMenu/PopoverMenu.stories.js +57 -33
  10. package/lib/cjs/components/TimeZonePicker/TimeZonePicker.js +117 -140
  11. package/lib/cjs/components/TimeZonePicker/TimeZonePicker.test.js +29 -2
  12. package/lib/cjs/components/TimeZonePicker/helper.d.ts +6 -0
  13. package/lib/cjs/components/TimeZonePicker/helper.js +59 -0
  14. package/lib/cjs/components/TimeZonePicker/helper.test.js +79 -0
  15. package/lib/cjs/hooks/useGetTheme/useGetTheme.d.ts +2 -0
  16. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/colors.d.ts +3 -0
  17. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/colors.js +3 -0
  18. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/icons.d.ts +1 -0
  19. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/index.d.ts +1 -0
  20. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/menu.d.ts +15 -2
  21. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/menu.js +20 -7
  22. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.d.ts +15 -2
  23. package/lib/cjs/styles/themeOverrides/onyxSideNav.d.ts +1 -0
  24. package/lib/cjs/styles/themes/astro/customProperties/icons.d.ts +1 -0
  25. package/lib/cjs/styles/themes/astro/customProperties/icons.js +1 -1
  26. package/lib/cjs/styles/themes/astro/customProperties/index.d.ts +1 -0
  27. package/lib/cjs/styles/themes/next-gen/customProperties/icons.d.ts +1 -0
  28. package/lib/cjs/styles/themes/next-gen/customProperties/icons.js +1 -1
  29. package/lib/cjs/styles/themes/next-gen/customProperties/index.d.ts +1 -0
  30. package/lib/cjs/styles/themes/next-gen/next-gen.d.ts +34 -2
  31. package/lib/cjs/styles/themes/next-gen/variants/menu.d.ts +32 -2
  32. package/lib/cjs/styles/themes/next-gen/variants/menu.js +39 -9
  33. package/lib/cjs/styles/themes/next-gen/variants/popoverMenu.d.ts +1 -0
  34. package/lib/cjs/styles/themes/next-gen/variants/popoverMenu.js +1 -0
  35. package/lib/cjs/styles/themes/next-gen/variants/variants.d.ts +33 -2
  36. package/lib/cjs/styles/themes/next-gen/variants/variants.js +1 -0
  37. package/lib/cjs/types/listBox.d.ts +1 -1
  38. package/lib/components/ComboBoxField/ComboBoxField.js +7 -3
  39. package/lib/components/ListBox/ListBox.js +15 -0
  40. package/lib/components/ListBox/ListBox.test.js +14 -1
  41. package/lib/components/MenuItem/MenuItem.js +25 -16
  42. package/lib/components/MenuItem/MenuItem.styles.js +1 -1
  43. package/lib/components/MenuItem/MenuItem.test.js +224 -201
  44. package/lib/components/MenuSection/MenuSection.js +2 -1
  45. package/lib/components/PopoverMenu/PopoverMenu.stories.js +57 -33
  46. package/lib/components/TimeZonePicker/TimeZonePicker.js +122 -146
  47. package/lib/components/TimeZonePicker/TimeZonePicker.test.js +29 -2
  48. package/lib/components/TimeZonePicker/helper.js +51 -0
  49. package/lib/components/TimeZonePicker/helper.test.js +76 -0
  50. package/lib/styles/themeOverrides/nextGenDarkMode/colors.js +3 -0
  51. package/lib/styles/themeOverrides/nextGenDarkMode/variants/menu.js +20 -7
  52. package/lib/styles/themes/astro/customProperties/icons.js +1 -1
  53. package/lib/styles/themes/next-gen/customProperties/icons.js +1 -1
  54. package/lib/styles/themes/next-gen/variants/menu.js +38 -8
  55. package/lib/styles/themes/next-gen/variants/popoverMenu.js +1 -0
  56. package/lib/styles/themes/next-gen/variants/variants.js +2 -1
  57. package/lib/tsconfig.lib.tsbuildinfo +1 -1
  58. package/package.json +1 -1
@@ -12,10 +12,10 @@ exports["default"] = exports.WithSeparator = exports.WithSections = exports.Plac
12
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
13
13
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
14
14
  var _react = _interopRequireWildcard(require("react"));
15
- var _DotsVerticalIcon = _interopRequireDefault(require("@pingux/mdi-react/DotsVerticalIcon"));
16
15
  var _addonActions = require("@storybook/addon-actions");
17
16
  var _storybookAddonDesigns = require("storybook-addon-designs");
18
17
  var _storybookDocsLayout = _interopRequireDefault(require("../../../.storybook/storybookDocsLayout"));
18
+ var _hooks = require("../../hooks");
19
19
  var _index = require("../../index");
20
20
  var _figmaLinks = require("../../utils/designUtils/figmaLinks");
21
21
  var _PopoverMenu = _interopRequireDefault(require("./PopoverMenu.mdx"));
@@ -49,17 +49,20 @@ var _default = exports["default"] = {
49
49
  }
50
50
  };
51
51
  var Default = exports.Default = function Default(args) {
52
+ var _useGetTheme = (0, _hooks.useGetTheme)(),
53
+ isOnyx = _useGetTheme.themeState.isOnyx,
54
+ popoverMenuIcon = _useGetTheme.icons.popoverMenuIcon;
52
55
  return (
53
56
  // Application must be wrapped in an OverlayProvider so that it can be hidden from screen
54
57
  // readers when an overlay opens.
55
58
  (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.PopoverMenu, args, (0, _react2.jsx)(_index.IconButton, {
56
59
  "aria-label": "more options",
57
- variant: "inverted"
60
+ variant: isOnyx ? undefined : 'inverted'
58
61
  }, (0, _react2.jsx)(_index.Icon, {
59
- icon: _DotsVerticalIcon["default"],
62
+ icon: popoverMenuIcon,
60
63
  size: "md",
61
64
  title: {
62
- name: 'Dots Vertical Icon'
65
+ name: 'Dots Icon'
63
66
  }
64
67
  })), (0, _react2.jsx)(_index.Menu, {
65
68
  onAction: (0, _addonActions.action)('onAction')
@@ -71,7 +74,7 @@ var Default = exports.Default = function Default(args) {
71
74
  key: "delete",
72
75
  textValue: "delete"
73
76
  }, (0, _react2.jsx)(_index.Text, {
74
- color: "critical.bright"
77
+ color: isOnyx ? 'critical.dark' : 'critical.bright'
75
78
  }, "Delete")))))
76
79
  );
77
80
  };
@@ -82,6 +85,9 @@ Default.parameters = {
82
85
  }
83
86
  };
84
87
  var DefaultOpen = exports.DefaultOpen = function DefaultOpen(args) {
88
+ var _useGetTheme2 = (0, _hooks.useGetTheme)(),
89
+ isOnyx = _useGetTheme2.themeState.isOnyx,
90
+ popoverMenuIcon = _useGetTheme2.icons.popoverMenuIcon;
85
91
  return (
86
92
  // Application must be wrapped in an OverlayProvider so that it can be hidden from screen
87
93
  // readers when an overlay opens.
@@ -89,12 +95,12 @@ var DefaultOpen = exports.DefaultOpen = function DefaultOpen(args) {
89
95
  isDefaultOpen: true
90
96
  }), (0, _react2.jsx)(_index.IconButton, {
91
97
  "aria-label": "more options",
92
- variant: "inverted"
98
+ variant: isOnyx ? undefined : 'inverted'
93
99
  }, (0, _react2.jsx)(_index.Icon, {
94
- icon: _DotsVerticalIcon["default"],
100
+ icon: popoverMenuIcon,
95
101
  size: "md",
96
102
  title: {
97
- name: 'Dots Vertical Icon'
103
+ name: 'Dots Icon'
98
104
  }
99
105
  })), (0, _react2.jsx)(_index.Menu, {
100
106
  onAction: (0, _addonActions.action)('onAction'),
@@ -107,7 +113,7 @@ var DefaultOpen = exports.DefaultOpen = function DefaultOpen(args) {
107
113
  key: "delete",
108
114
  textValue: "delete"
109
115
  }, (0, _react2.jsx)(_index.Text, {
110
- color: "critical.bright"
116
+ color: isOnyx ? 'critical.dark' : 'critical.bright'
111
117
  }, "Delete")))))
112
118
  );
113
119
  };
@@ -116,6 +122,9 @@ var Controlled = exports.Controlled = function Controlled() {
116
122
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
117
123
  isOpen = _useState2[0],
118
124
  setIsOpen = _useState2[1];
125
+ var _useGetTheme3 = (0, _hooks.useGetTheme)(),
126
+ isOnyx = _useGetTheme3.themeState.isOnyx,
127
+ popoverMenuIcon = _useGetTheme3.icons.popoverMenuIcon;
119
128
  return (
120
129
  // Application must be wrapped in an OverlayProvider so that it can be hidden from screen
121
130
  // readers when an overlay opens.
@@ -124,12 +133,12 @@ var Controlled = exports.Controlled = function Controlled() {
124
133
  onOpenChange: setIsOpen
125
134
  }, (0, _react2.jsx)(_index.IconButton, {
126
135
  "aria-label": "more options",
127
- variant: "inverted"
136
+ variant: isOnyx ? undefined : 'inverted'
128
137
  }, (0, _react2.jsx)(_index.Icon, {
129
- icon: _DotsVerticalIcon["default"],
138
+ icon: popoverMenuIcon,
130
139
  size: "md",
131
140
  title: {
132
- name: 'Dots Vertical Icon'
141
+ name: 'Dots Icon'
133
142
  }
134
143
  })), (0, _react2.jsx)(_index.Menu, {
135
144
  onAction: (0, _addonActions.action)('onAction')
@@ -141,11 +150,14 @@ var Controlled = exports.Controlled = function Controlled() {
141
150
  key: "delete",
142
151
  textValue: "delete"
143
152
  }, (0, _react2.jsx)(_index.Text, {
144
- color: "critical.bright"
153
+ color: isOnyx ? 'critical.dark' : 'critical.bright'
145
154
  }, "Delete")))))
146
155
  );
147
156
  };
148
157
  var Placement = exports.Placement = function Placement(args) {
158
+ var _useGetTheme4 = (0, _hooks.useGetTheme)(),
159
+ isOnyx = _useGetTheme4.themeState.isOnyx,
160
+ popoverMenuIcon = _useGetTheme4.icons.popoverMenuIcon;
149
161
  return (
150
162
  // Application must be wrapped in an OverlayProvider so that it can be hidden from screen
151
163
  // readers when an overlay opens.
@@ -153,12 +165,12 @@ var Placement = exports.Placement = function Placement(args) {
153
165
  direction: "left"
154
166
  }), (0, _react2.jsx)(_index.IconButton, {
155
167
  "aria-label": "more options",
156
- variant: "inverted"
168
+ variant: isOnyx ? undefined : 'inverted'
157
169
  }, (0, _react2.jsx)(_index.Icon, {
158
- icon: _DotsVerticalIcon["default"],
170
+ icon: popoverMenuIcon,
159
171
  size: "md",
160
172
  title: {
161
- name: 'Dots Vertical Icon'
173
+ name: 'Dots Icon'
162
174
  }
163
175
  })), (0, _react2.jsx)(_index.Menu, {
164
176
  onAction: (0, _addonActions.action)('onAction')
@@ -170,11 +182,14 @@ var Placement = exports.Placement = function Placement(args) {
170
182
  key: "delete",
171
183
  textValue: "delete"
172
184
  }, (0, _react2.jsx)(_index.Text, {
173
- color: "critical.bright"
185
+ color: isOnyx ? 'critical.dark' : 'critical.bright'
174
186
  }, "Delete")))))
175
187
  );
176
188
  };
177
189
  var NotFlippable = exports.NotFlippable = function NotFlippable(args) {
190
+ var _useGetTheme5 = (0, _hooks.useGetTheme)(),
191
+ isOnyx = _useGetTheme5.themeState.isOnyx,
192
+ popoverMenuIcon = _useGetTheme5.icons.popoverMenuIcon;
178
193
  return (
179
194
  // Application must be wrapped in an OverlayProvider so that it can be hidden from screen
180
195
  // readers when an overlay opens.
@@ -183,12 +198,12 @@ var NotFlippable = exports.NotFlippable = function NotFlippable(args) {
183
198
  isNotFlippable: true
184
199
  }), (0, _react2.jsx)(_index.IconButton, {
185
200
  "aria-label": "more options",
186
- variant: "inverted"
201
+ variant: isOnyx ? undefined : 'inverted'
187
202
  }, (0, _react2.jsx)(_index.Icon, {
188
- icon: _DotsVerticalIcon["default"],
203
+ icon: popoverMenuIcon,
189
204
  size: "md",
190
205
  title: {
191
- name: 'Dots Vertical Icon'
206
+ name: 'Dots Icon'
192
207
  }
193
208
  })), (0, _react2.jsx)(_index.Menu, {
194
209
  onAction: (0, _addonActions.action)('onAction')
@@ -200,11 +215,14 @@ var NotFlippable = exports.NotFlippable = function NotFlippable(args) {
200
215
  key: "delete",
201
216
  textValue: "delete"
202
217
  }, (0, _react2.jsx)(_index.Text, {
203
- color: "critical.bright"
218
+ color: isOnyx ? 'critical.dark' : 'critical.bright'
204
219
  }, "Delete")))))
205
220
  );
206
221
  };
207
222
  var NotClosedOnSelect = exports.NotClosedOnSelect = function NotClosedOnSelect(args) {
223
+ var _useGetTheme6 = (0, _hooks.useGetTheme)(),
224
+ isOnyx = _useGetTheme6.themeState.isOnyx,
225
+ popoverMenuIcon = _useGetTheme6.icons.popoverMenuIcon;
208
226
  return (
209
227
  // Application must be wrapped in an OverlayProvider so that it can be hidden from screen
210
228
  // readers when an overlay opens.
@@ -212,12 +230,12 @@ var NotClosedOnSelect = exports.NotClosedOnSelect = function NotClosedOnSelect(a
212
230
  isNotClosedOnSelect: true
213
231
  }), (0, _react2.jsx)(_index.IconButton, {
214
232
  "aria-label": "more options",
215
- variant: "inverted"
233
+ variant: isOnyx ? undefined : 'inverted'
216
234
  }, (0, _react2.jsx)(_index.Icon, {
217
- icon: _DotsVerticalIcon["default"],
235
+ icon: popoverMenuIcon,
218
236
  size: "md",
219
237
  title: {
220
- name: 'Dots Vertical Icon'
238
+ name: 'Dots Icon'
221
239
  }
222
240
  })), (0, _react2.jsx)(_index.Menu, {
223
241
  onAction: (0, _addonActions.action)('onAction')
@@ -229,22 +247,25 @@ var NotClosedOnSelect = exports.NotClosedOnSelect = function NotClosedOnSelect(a
229
247
  key: "delete",
230
248
  textValue: "delete"
231
249
  }, (0, _react2.jsx)(_index.Text, {
232
- color: "critical.bright"
250
+ color: isOnyx ? 'critical.dark' : 'critical.bright'
233
251
  }, "Delete")))))
234
252
  );
235
253
  };
236
254
  var WithSeparator = exports.WithSeparator = function WithSeparator(args) {
255
+ var _useGetTheme7 = (0, _hooks.useGetTheme)(),
256
+ isOnyx = _useGetTheme7.themeState.isOnyx,
257
+ popoverMenuIcon = _useGetTheme7.icons.popoverMenuIcon;
237
258
  return (
238
259
  // Application must be wrapped in an OverlayProvider so that it can be hidden from screen
239
260
  // readers when an overlay opens.
240
261
  (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.PopoverMenu, args, (0, _react2.jsx)(_index.IconButton, {
241
262
  "aria-label": "more options",
242
- variant: "inverted"
263
+ variant: isOnyx ? undefined : 'inverted'
243
264
  }, (0, _react2.jsx)(_index.Icon, {
244
- icon: _DotsVerticalIcon["default"],
265
+ icon: popoverMenuIcon,
245
266
  size: "md",
246
267
  title: {
247
- name: 'Dots Vertical Icon'
268
+ name: 'Dots Icon'
248
269
  }
249
270
  })), (0, _react2.jsx)(_index.Menu, {
250
271
  onAction: (0, _addonActions.action)('onAction'),
@@ -257,22 +278,25 @@ var WithSeparator = exports.WithSeparator = function WithSeparator(args) {
257
278
  key: "delete",
258
279
  textValue: "delete"
259
280
  }, (0, _react2.jsx)(_index.Text, {
260
- color: "critical.bright"
281
+ color: isOnyx ? 'critical.dark' : 'critical.bright'
261
282
  }, "Delete"))))))
262
283
  );
263
284
  };
264
285
  var WithSections = exports.WithSections = function WithSections(args) {
286
+ var _useGetTheme8 = (0, _hooks.useGetTheme)(),
287
+ isOnyx = _useGetTheme8.themeState.isOnyx,
288
+ popoverMenuIcon = _useGetTheme8.icons.popoverMenuIcon;
265
289
  return (
266
290
  // Application must be wrapped in an OverlayProvider so that it can be hidden from screen
267
291
  // readers when an overlay opens.
268
292
  (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.PopoverMenu, args, (0, _react2.jsx)(_index.IconButton, {
269
293
  "aria-label": "more options",
270
- variant: "inverted"
294
+ variant: isOnyx ? undefined : 'inverted'
271
295
  }, (0, _react2.jsx)(_index.Icon, {
272
- icon: _DotsVerticalIcon["default"],
296
+ icon: popoverMenuIcon,
273
297
  size: "md",
274
298
  title: {
275
- name: 'Dots Vertical Icon'
299
+ name: 'Dots Icon'
276
300
  }
277
301
  })), (0, _react2.jsx)(_index.Menu, {
278
302
  onAction: (0, _addonActions.action)('onAction'),
@@ -295,7 +319,7 @@ var WithSections = exports.WithSections = function WithSections(args) {
295
319
  key: "delete",
296
320
  textValue: "delete"
297
321
  }, (0, _react2.jsx)(_index.Text, {
298
- color: "critical.bright"
322
+ color: isOnyx ? 'critical.dark' : 'critical.bright'
299
323
  }, "Delete"))))))
300
324
  );
301
325
  };
@@ -5,7 +5,7 @@ var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
5
5
  var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
6
6
  var _filterInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
7
7
  var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
8
- var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
8
+ var _forEachInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
9
9
  var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
10
10
  var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
11
11
  var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
@@ -16,58 +16,42 @@ _Object$defineProperty(exports, "__esModule", {
16
16
  });
17
17
  exports["default"] = void 0;
18
18
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
19
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
19
20
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
20
21
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
21
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
22
22
  var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
23
23
  var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
24
+ var _sort = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/sort"));
24
25
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
25
26
  var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/entries"));
27
+ var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
26
28
  var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
27
- var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));
28
- var _parseFloat2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/parse-float"));
29
- var _sort = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/sort"));
29
+ var _map2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/map"));
30
+ var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
30
31
  var _react = _interopRequireWildcard(require("react"));
31
32
  var _propTypes = _interopRequireDefault(require("prop-types"));
32
33
  var _index = require("../../index");
33
34
  var _pendoID = require("../../utils/devUtils/constants/pendoID");
35
+ var _helper = require("./helper");
34
36
  var _timezones = _interopRequireWildcard(require("./timezones"));
35
37
  var _react2 = require("@emotion/react");
36
38
  var _excluded = ["additionalTimeZones", "emptySearchText", "locales", "localeOptions"];
37
39
  function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
38
40
  function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty2(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
39
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context8, _context9; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context8 = ownKeys(Object(t), !0)).call(_context8, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context9 = ownKeys(Object(t))).call(_context9, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
41
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context8, _context9; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty2(_context8 = ownKeys(Object(t), !0)).call(_context8, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty2(_context9 = ownKeys(Object(t))).call(_context9, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
40
42
  var createSearchTags = function createSearchTags(_ref) {
41
- var _context, _context2, _context3, _context4;
43
+ var _context, _context2, _context3;
42
44
  var gmt = _ref.gmt,
43
- gmtLabel = _ref.gmtLabel,
44
45
  timeZone = _ref.timeZone;
46
+ var normalizedTz = timeZone.replace(/_/g, ' ');
45
47
  var additionalTags = '';
46
- var americaTimeZone = (0, _includes["default"])(timeZone).call(timeZone, 'America') && timeZone.substring(8);
47
- if ((0, _includes["default"])(_timezones.usCities).call(_timezones.usCities, americaTimeZone)) {
48
- additionalTags = "US ".concat(americaTimeZone);
48
+ if ((0, _includes["default"])(timeZone).call(timeZone, 'America')) {
49
+ var city = timeZone.split('/')[1];
50
+ if ((0, _includes["default"])(_timezones.usCities).call(_timezones.usCities, city)) {
51
+ additionalTags = "US ".concat(city);
52
+ }
49
53
  }
50
- 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);
51
- };
52
- var getLocaleTime = function getLocaleTime(_ref2) {
53
- var timeZone = _ref2.timeZone,
54
- locales = _ref2.locales,
55
- localeOptions = _ref2.localeOptions;
56
- var date = new Date();
57
- return date.toLocaleTimeString(locales, _objectSpread({
58
- timeZone: timeZone
59
- }, localeOptions));
60
- };
61
- var getTimezoneOffset = function getTimezoneOffset(timeZone) {
62
- var now = new Date();
63
- var tzString = now.toLocaleString('en-US', {
64
- timeZone: timeZone
65
- });
66
- var localString = now.toLocaleString('en-US');
67
- var diff = (Date.parse(localString) - Date.parse(tzString)) / 3600000;
68
- var offset = -(diff + now.getTimezoneOffset() / 60);
69
- var formattedString = "".concat(offset, ":00");
70
- return offset > 0 ? "+".concat(formattedString) : formattedString;
54
+ return (0, _concat["default"])(_context = (0, _concat["default"])(_context2 = (0, _concat["default"])(_context3 = "".concat(gmt, " ")).call(_context3, timeZone, " ")).call(_context2, normalizedTz, " ")).call(_context, additionalTags).toUpperCase();
71
55
  };
72
56
  var TimeZonePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
73
57
  var additionalTimeZones = props.additionalTimeZones,
@@ -79,127 +63,120 @@ var TimeZonePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
79
63
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
80
64
  search = _useState2[0],
81
65
  setSearch = _useState2[1];
82
- var _useState3 = (0, _react.useState)(true),
66
+ var _useState3 = (0, _react.useState)(''),
83
67
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
84
- timeUpdate = _useState4[0],
85
- setTimeUpdate = _useState4[1];
86
- var _useState5 = (0, _react.useState)([]),
87
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
88
- timeZones = _useState6[0],
89
- setTimeZones = _useState6[1];
90
- var extendedTimeZonesList = additionalTimeZones ? _objectSpread(_objectSpread({}, _timezones["default"]), additionalTimeZones) : _timezones["default"];
68
+ selectedKey = _useState4[0],
69
+ setSelectedKey = _useState4[1];
91
70
  var timeZonePickerRef = (0, _react.useRef)();
92
71
  /* istanbul ignore next */
93
72
  (0, _react.useImperativeHandle)(ref, function () {
94
73
  return timeZonePickerRef.current;
95
74
  });
96
- (0, _react.useEffect)(function () {
97
- if (timeUpdate) {
98
- var createTimeZoneTimes = function createTimeZoneTimes() {
99
- var _context5;
100
- return (0, _map["default"])(_context5 = (0, _entries["default"])(extendedTimeZonesList)).call(_context5, function (item) {
101
- var _item$;
102
- var gmt = "GMT".concat(getTimezoneOffset(item[1]));
103
- var gmtLabel = item[0].substring(12);
104
- var timeZone = (_item$ = item[1]) === null || _item$ === void 0 ? void 0 : _item$.replace(/_/g, ' ');
105
- var time = getLocaleTime({
106
- timeZone: item[1],
107
- locales: locales,
108
- localeOptions: localeOptions
109
- });
110
- var searchTags = createSearchTags({
111
- gmt: gmt,
112
- gmtLabel: gmtLabel,
113
- timeZone: timeZone
114
- });
115
- return {
116
- gmt: gmt,
117
- timeZone: timeZone,
118
- time: time,
119
- searchTags: searchTags
120
- };
121
- });
75
+ var allTimeZones = (0, _react.useMemo)(function () {
76
+ var _context4, _context5;
77
+ var sourceList = additionalTimeZones ? _objectSpread(_objectSpread({}, _timezones["default"]), additionalTimeZones) : _timezones["default"];
78
+ return (0, _sort["default"])(_context4 = (0, _map["default"])(_context5 = (0, _entries["default"])(sourceList)).call(_context5, function (_ref2) {
79
+ var _context6;
80
+ var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2),
81
+ label = _ref3[0],
82
+ tzValue = _ref3[1];
83
+ var _getGmtAndOffset = (0, _helper.getGmtAndOffset)(tzValue),
84
+ gmt = _getGmtAndOffset.gmt,
85
+ numericOffset = _getGmtAndOffset.numericOffset;
86
+ var displayTz = tzValue.replace(/_/g, ' ');
87
+ return {
88
+ key: (0, _concat["default"])(_context6 = "".concat(displayTz, " ")).call(_context6, gmt),
89
+ id: tzValue,
90
+ label: label,
91
+ timeZone: displayTz,
92
+ gmt: gmt,
93
+ numericOffset: numericOffset,
94
+ searchTags: createSearchTags({
95
+ gmt: gmt,
96
+ timeZone: tzValue
97
+ })
122
98
  };
123
- setTimeZones(createTimeZoneTimes());
124
- setTimeUpdate(false);
99
+ })).call(_context4, function (a, b) {
100
+ return a.numericOffset - b.numericOffset;
101
+ });
102
+ }, [additionalTimeZones]);
103
+ var filteredItems = (0, _react.useMemo)(function () {
104
+ var selectedItem = (0, _find["default"])(allTimeZones).call(allTimeZones, function (tz) {
105
+ return tz.key === selectedKey;
106
+ });
107
+ var isExactMatch = selectedItem && selectedItem.key === search;
108
+ if (!search || isExactMatch) {
109
+ return allTimeZones;
125
110
  }
126
- }, [extendedTimeZonesList, locales, localeOptions, timeUpdate]);
127
- var filterTimezones = (0, _react.useCallback)(function (timeZonesList) {
128
- return (0, _filter["default"])(timeZonesList).call(timeZonesList, function (_ref3) {
129
- var _context6;
130
- var searchTags = _ref3.searchTags;
131
- return (0, _indexOf["default"])(_context6 = searchTags.toUpperCase()).call(_context6, search.toUpperCase()) > -1;
111
+ var upperSearch = search.toUpperCase();
112
+ return (0, _filter["default"])(allTimeZones).call(allTimeZones, function (tz) {
113
+ var _context7;
114
+ return (0, _includes["default"])(_context7 = tz.searchTags).call(_context7, upperSearch);
132
115
  });
133
- }, [search]);
134
- var filteredTimezones = (0, _react.useMemo)(function () {
135
- return filterTimezones(timeZones);
136
- }, [filterTimezones, timeZones]);
137
- var sortByGMT = function sortByGMT(a, b) {
138
- var aNum = (0, _parseFloat2["default"])(a.gmt.split('GMT')[1].split(':')[0]);
139
- var bNum = (0, _parseFloat2["default"])(b.gmt.split('GMT')[1].split(')')[0]);
140
- return aNum - bNum;
141
- };
142
- var checkIsSelectedItem = function checkIsSelectedItem() {
143
- return (0, _filter["default"])(timeZones).call(timeZones, function (tz) {
144
- return tz.timeZone === search;
145
- }).length > 0;
146
- };
147
- var renderTimeZones = function renderTimeZones(timeZonesToRender) {
148
- var _context7;
149
- return (0, _map["default"])(_context7 = (0, _sort["default"])(timeZonesToRender).call(timeZonesToRender, sortByGMT)).call(_context7, function (_ref4) {
150
- var gmt = _ref4.gmt,
151
- time = _ref4.time,
152
- timeZone = _ref4.timeZone;
153
- return (0, _react2.jsx)(_index.Item, {
154
- key: timeZone,
155
- "data-id": timeZone,
156
- textValue: timeZone
157
- }, (0, _react2.jsx)(_index.Box, {
158
- flexDirection: "row",
159
- justifyContent: "space-between",
160
- width: "100%"
161
- }, (0, _react2.jsx)(_index.Box, {
162
- flexDirection: "row"
163
- }, (0, _react2.jsx)(_index.Text, {
164
- variant: "variants.timeZone.item.title"
165
- }, timeZone), (0, _react2.jsx)(_index.Text, {
166
- variant: "variants.timeZone.item.subTitle"
167
- }, gmt)), (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Text, {
168
- variant: "variants.timeZone.item.time"
169
- }, time))));
116
+ }, [search, selectedKey, allTimeZones]);
117
+ var timeData = (0, _react.useMemo)(function () {
118
+ var now = new Date();
119
+ var map = new _map2["default"]();
120
+ (0, _forEach["default"])(allTimeZones).call(allTimeZones, function (tz) {
121
+ map.set(tz.id, now.toLocaleTimeString(locales, _objectSpread({
122
+ timeZone: tz.id
123
+ }, localeOptions)));
170
124
  });
125
+ return map;
126
+ }, [allTimeZones, locales, localeOptions]);
127
+ var onInputChange = function onInputChange(value) {
128
+ setSearch(value);
129
+ if (value === '') {
130
+ setSelectedKey(null);
131
+ }
171
132
  };
172
- var items = (0, _react.useMemo)(function () {
173
- if (filteredTimezones.length === 0) {
174
- return (0, _react2.jsx)(_index.Item, {
175
- key: emptySearchText
176
- }, emptySearchText);
133
+ var onSelectionChange = function onSelectionChange(key) {
134
+ if (!key) return;
135
+ var selectedItem = (0, _find["default"])(allTimeZones).call(allTimeZones, function (item) {
136
+ return item.key === key;
137
+ });
138
+ if (selectedItem) {
139
+ setSearch(selectedItem.key);
140
+ setSelectedKey(key);
177
141
  }
178
- return renderTimeZones(checkIsSelectedItem() ? timeZones : filteredTimezones);
179
- }, [emptySearchText, filteredTimezones, search, timeZones]);
180
- var comboBoxFieldProps = (0, _react.useMemo)(function () {
181
- return _objectSpread({
182
- containerProps: {
183
- sx: {
184
- width: 400,
185
- fontSize: 'md'
186
- }
187
- },
188
- onInputChange: setSearch,
189
- items: filteredTimezones,
190
- ref: timeZonePickerRef,
191
- onOpenChange: function onOpenChange(isOpen) {
192
- return setTimeUpdate(isOpen);
193
- },
194
- disabledKeys: [{
195
- emptySearchText: emptySearchText
196
- }]
197
- }, otherProps);
198
- }, [emptySearchText, filteredTimezones, otherProps]);
199
- return (0, _react2.jsx)(_index.ComboBoxField, (0, _extends2["default"])({}, (0, _pendoID.getPendoID)('TimeZonePicker'), comboBoxFieldProps, {
142
+ };
143
+ return (0, _react2.jsx)(_index.ComboBoxField, (0, _extends2["default"])({}, (0, _pendoID.getPendoID)('TimeZonePicker'), otherProps, {
144
+ ref: timeZonePickerRef,
145
+ items: filteredItems,
146
+ inputValue: search,
147
+ selectedKey: selectedKey,
148
+ onInputChange: onInputChange,
149
+ onSelectionChange: onSelectionChange,
150
+ menuTrigger: "input",
200
151
  disabledKeys: [emptySearchText],
201
- menuTrigger: "input"
202
- }), items);
152
+ containerProps: {
153
+ sx: {
154
+ width: 400,
155
+ fontSize: 'md'
156
+ }
157
+ },
158
+ allowsEmptyCollection: true,
159
+ renderEmptyState: function renderEmptyState() {
160
+ return (0, _react2.jsx)("span", null, emptySearchText);
161
+ }
162
+ }), function (item) {
163
+ return (0, _react2.jsx)(_index.Item, {
164
+ key: "".concat(item.key),
165
+ textValue: "".concat(item.key)
166
+ }, (0, _react2.jsx)(_index.Box, {
167
+ flexDirection: "row",
168
+ justifyContent: "space-between",
169
+ width: "100%"
170
+ }, (0, _react2.jsx)(_index.Box, {
171
+ flexDirection: "row"
172
+ }, (0, _react2.jsx)(_index.Text, {
173
+ variant: "variants.timeZone.item.title"
174
+ }, item.timeZone), (0, _react2.jsx)(_index.Text, {
175
+ variant: "variants.timeZone.item.subTitle"
176
+ }, item.gmt)), (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Text, {
177
+ variant: "variants.timeZone.item.time"
178
+ }, timeData.get(item.id)))));
179
+ });
203
180
  });
204
181
  TimeZonePicker.propTypes = {
205
182
  /**