@pingux/astro 1.22.0-alpha.1 → 1.22.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.
@@ -74,7 +74,7 @@ var _index = require("../../index");
74
74
 
75
75
  var _react2 = require("@emotion/react");
76
76
 
77
- var _excluded = ["children", "disabledKeys", "emptySearchText", "items", "itemsFilter", "onNamePress", "onPopoverClose", "onPopoverOpen", "onSelectionChange", "name", "searchProps", "selectedItem"];
77
+ var _excluded = ["children", "disabledKeys", "emptySearchText", "isDefaultOpen", "isOpen", "items", "itemsFilter", "onOpenChange", "onNamePress", "onPopoverClose", "onPopoverOpen", "onSelectionChange", "name", "searchProps", "selectedItem"];
78
78
 
79
79
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
80
80
 
@@ -89,8 +89,11 @@ var EnvironmentBreadcrumb = /*#__PURE__*/(0, _react.forwardRef)(function (props,
89
89
  var children = props.children,
90
90
  imperativeDisabledKeys = props.disabledKeys,
91
91
  emptySearchText = props.emptySearchText,
92
+ isDefaultOpen = props.isDefaultOpen,
93
+ isOpen = props.isOpen,
92
94
  items = props.items,
93
95
  imperativeItemsFilter = props.itemsFilter,
96
+ onOpenChange = props.onOpenChange,
94
97
  onNamePress = props.onNamePress,
95
98
  imperativeOnPopoverClose = props.onPopoverClose,
96
99
  imperativeOnPopoverOpen = props.onPopoverOpen,
@@ -155,7 +158,11 @@ var EnvironmentBreadcrumb = /*#__PURE__*/(0, _react.forwardRef)(function (props,
155
158
  });
156
159
  };
157
160
 
158
- var popoverState = (0, _overlays.useOverlayTriggerState)({});
161
+ var popoverState = (0, _overlays.useOverlayTriggerState)({
162
+ defaultOpen: isDefaultOpen,
163
+ isOpen: isOpen,
164
+ onOpenChange: onOpenChange
165
+ });
159
166
  var handlePopoverClose = (0, _react.useCallback)(function () {
160
167
  if (imperativeOnPopoverClose) {
161
168
  imperativeOnPopoverClose();
@@ -355,7 +362,20 @@ EnvironmentBreadcrumb.propTypes = {
355
362
  disabledKeys: _propTypes["default"].arrayOf(_propTypes["default"].string),
356
363
 
357
364
  /** Text that will be shown if no search results found. */
358
- emptySearchText: _propTypes["default"].string
365
+ emptySearchText: _propTypes["default"].string,
366
+
367
+ /** Sets the default open state of the overlay. */
368
+ isDefaultOpen: _propTypes["default"].bool,
369
+
370
+ /** Whether the overlay is currently open. */
371
+ isOpen: _propTypes["default"].bool,
372
+
373
+ /**
374
+ * Method that is called when the open state of the menu changes.
375
+ *
376
+ * `(isOpen: boolean, overlayTrigger: OverlayTriggerAction) => void`
377
+ */
378
+ onOpenChange: _propTypes["default"].func
359
379
  };
360
380
  EnvironmentBreadcrumb.defaultProps = {
361
381
  emptySearchText: 'No Search Result'
@@ -26,7 +26,7 @@ _Object$defineProperty(exports, "__esModule", {
26
26
  value: true
27
27
  });
28
28
 
29
- exports["default"] = exports.WithSections = exports.OrgLevel = exports.Default = void 0;
29
+ exports["default"] = exports.WithSections = exports.OrgLevel = exports.DefaultOpen = exports.Default = exports.ControlledMenu = void 0;
30
30
 
31
31
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
32
32
 
@@ -298,4 +298,116 @@ var OrgLevel = function OrgLevel() {
298
298
  });
299
299
  };
300
300
 
301
- exports.OrgLevel = OrgLevel;
301
+ exports.OrgLevel = OrgLevel;
302
+
303
+ var DefaultOpen = function DefaultOpen() {
304
+ var _useState7 = (0, _react.useState)({
305
+ name: 'Dog',
306
+ isSandbox: true
307
+ }),
308
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
309
+ selectedEnvironment = _useState8[0],
310
+ setSelectedEnvironment = _useState8[1];
311
+
312
+ var envNode = (0, _react2.jsx)(_index.Box, {
313
+ isRow: true
314
+ }, (0, _react2.jsx)(_index.Text, {
315
+ color: "inherit"
316
+ }, selectedEnvironment.name), selectedEnvironment.isSandbox ? (0, _react2.jsx)(_index.Chip, {
317
+ label: "SANDBOX",
318
+ variant: "boxes.environmentChip",
319
+ bg: "neutral.40"
320
+ }) : null);
321
+
322
+ var findEnvObj = function findEnvObj(envName) {
323
+ return (0, _find["default"])(defaultEnvironments).call(defaultEnvironments, function (_ref5) {
324
+ var name = _ref5.name;
325
+ return name === envName;
326
+ });
327
+ };
328
+
329
+ var handleSelectionChange = function handleSelectionChange(newEnvName) {
330
+ var envObj = findEnvObj(newEnvName);
331
+ setSelectedEnvironment(_objectSpread({}, envObj));
332
+ };
333
+
334
+ return (0, _react2.jsx)(_EnvironmentBreadcrumb["default"], {
335
+ items: defaultEnvironments,
336
+ name: "Globochem",
337
+ selectedItem: envNode,
338
+ onSelectionChange: handleSelectionChange,
339
+ isDefaultOpen: true
340
+ }, function (_ref6) {
341
+ var name = _ref6.name,
342
+ isSandbox = _ref6.isSandbox;
343
+ return (0, _react2.jsx)(_index.Item, {
344
+ key: name,
345
+ textValue: name
346
+ }, name, isSandbox ? (0, _react2.jsx)(_index.Chip, {
347
+ label: "SANDBOX",
348
+ variant: "boxes.environmentChip",
349
+ bg: "neutral.40"
350
+ }) : null);
351
+ });
352
+ };
353
+
354
+ exports.DefaultOpen = DefaultOpen;
355
+
356
+ var ControlledMenu = function ControlledMenu() {
357
+ var _useState9 = (0, _react.useState)(false),
358
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
359
+ isOpen = _useState10[0],
360
+ setIsOpen = _useState10[1];
361
+
362
+ var _useState11 = (0, _react.useState)({
363
+ name: 'Shark',
364
+ isSandbox: true
365
+ }),
366
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
367
+ selectedEnvironment = _useState12[0],
368
+ setSelectedEnvironment = _useState12[1];
369
+
370
+ var envNode = (0, _react2.jsx)(_index.Box, {
371
+ isRow: true
372
+ }, (0, _react2.jsx)(_index.Text, {
373
+ color: "inherit"
374
+ }, selectedEnvironment.name), selectedEnvironment.isSandbox ? (0, _react2.jsx)(_index.Chip, {
375
+ label: "SANDBOX",
376
+ variant: "boxes.environmentChip",
377
+ bg: "neutral.40"
378
+ }) : null);
379
+
380
+ var findEnvObj = function findEnvObj(envName) {
381
+ return (0, _find["default"])(defaultEnvironments).call(defaultEnvironments, function (_ref7) {
382
+ var name = _ref7.name;
383
+ return name === envName;
384
+ });
385
+ };
386
+
387
+ var handleSelectionChange = function handleSelectionChange(newEnvName) {
388
+ var envObj = findEnvObj(newEnvName);
389
+ setSelectedEnvironment(_objectSpread({}, envObj));
390
+ };
391
+
392
+ return (0, _react2.jsx)(_EnvironmentBreadcrumb["default"], {
393
+ items: defaultEnvironments,
394
+ name: "Globochem",
395
+ selectedItem: envNode,
396
+ onSelectionChange: handleSelectionChange,
397
+ isOpen: isOpen,
398
+ onOpenChange: setIsOpen
399
+ }, function (_ref8) {
400
+ var name = _ref8.name,
401
+ isSandbox = _ref8.isSandbox;
402
+ return (0, _react2.jsx)(_index.Item, {
403
+ key: name,
404
+ textValue: name
405
+ }, name, isSandbox ? (0, _react2.jsx)(_index.Chip, {
406
+ label: "SANDBOX",
407
+ variant: "boxes.environmentChip",
408
+ bg: "neutral.40"
409
+ }) : null);
410
+ });
411
+ };
412
+
413
+ exports.ControlledMenu = ControlledMenu;
@@ -295,4 +295,31 @@ test('should have no accessibility violations', /*#__PURE__*/(0, _asyncToGenerat
295
295
  }
296
296
  }
297
297
  }, _callee2);
298
- })));
298
+ })));
299
+ test('should be open when isDefaultOpen is true', function () {
300
+ getComponent({
301
+ isDefaultOpen: true
302
+ });
303
+ expect(_testWrapper.screen.queryByRole('listbox')).toBeInTheDocument();
304
+ expect(_testWrapper.screen.queryAllByRole('option')).toHaveLength(3);
305
+
306
+ _userEvent["default"].click(_testWrapper.screen.getByText(testSelectedItem));
307
+
308
+ expect(_testWrapper.screen.queryByRole('listbox')).not.toBeInTheDocument();
309
+ expect(_testWrapper.screen.queryAllByRole('option')).not.toHaveLength(3);
310
+ });
311
+ test('should respond to onOpenChange', function () {
312
+ var onOpenChange = jest.fn();
313
+ getComponent({
314
+ onOpenChange: onOpenChange
315
+ });
316
+ expect(onOpenChange).not.toHaveBeenCalled();
317
+
318
+ _userEvent["default"].click(_testWrapper.screen.getByText(testSelectedItem));
319
+
320
+ expect(onOpenChange).toHaveBeenNthCalledWith(1, true);
321
+
322
+ _userEvent["default"].click(_testWrapper.screen.getByText(testSelectedItem));
323
+
324
+ expect(onOpenChange).toHaveBeenNthCalledWith(2, false);
325
+ });
@@ -12,7 +12,7 @@ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance
12
12
  import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
13
13
  import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
14
14
  import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
15
- var _excluded = ["children", "disabledKeys", "emptySearchText", "items", "itemsFilter", "onNamePress", "onPopoverClose", "onPopoverOpen", "onSelectionChange", "name", "searchProps", "selectedItem"];
15
+ var _excluded = ["children", "disabledKeys", "emptySearchText", "isDefaultOpen", "isOpen", "items", "itemsFilter", "onOpenChange", "onNamePress", "onPopoverClose", "onPopoverOpen", "onSelectionChange", "name", "searchProps", "selectedItem"];
16
16
 
17
17
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
18
 
@@ -39,8 +39,11 @@ var EnvironmentBreadcrumb = /*#__PURE__*/forwardRef(function (props, ref) {
39
39
  var children = props.children,
40
40
  imperativeDisabledKeys = props.disabledKeys,
41
41
  emptySearchText = props.emptySearchText,
42
+ isDefaultOpen = props.isDefaultOpen,
43
+ isOpen = props.isOpen,
42
44
  items = props.items,
43
45
  imperativeItemsFilter = props.itemsFilter,
46
+ onOpenChange = props.onOpenChange,
44
47
  onNamePress = props.onNamePress,
45
48
  imperativeOnPopoverClose = props.onPopoverClose,
46
49
  imperativeOnPopoverOpen = props.onPopoverOpen,
@@ -103,7 +106,11 @@ var EnvironmentBreadcrumb = /*#__PURE__*/forwardRef(function (props, ref) {
103
106
  });
104
107
  };
105
108
 
106
- var popoverState = useOverlayTriggerState({});
109
+ var popoverState = useOverlayTriggerState({
110
+ defaultOpen: isDefaultOpen,
111
+ isOpen: isOpen,
112
+ onOpenChange: onOpenChange
113
+ });
107
114
  var handlePopoverClose = useCallback(function () {
108
115
  if (imperativeOnPopoverClose) {
109
116
  imperativeOnPopoverClose();
@@ -303,7 +310,20 @@ EnvironmentBreadcrumb.propTypes = {
303
310
  disabledKeys: PropTypes.arrayOf(PropTypes.string),
304
311
 
305
312
  /** Text that will be shown if no search results found. */
306
- emptySearchText: PropTypes.string
313
+ emptySearchText: PropTypes.string,
314
+
315
+ /** Sets the default open state of the overlay. */
316
+ isDefaultOpen: PropTypes.bool,
317
+
318
+ /** Whether the overlay is currently open. */
319
+ isOpen: PropTypes.bool,
320
+
321
+ /**
322
+ * Method that is called when the open state of the menu changes.
323
+ *
324
+ * `(isOpen: boolean, overlayTrigger: OverlayTriggerAction) => void`
325
+ */
326
+ onOpenChange: PropTypes.func
307
327
  };
308
328
  EnvironmentBreadcrumb.defaultProps = {
309
329
  emptySearchText: 'No Search Result'
@@ -253,4 +253,110 @@ export var OrgLevel = function OrgLevel() {
253
253
  return ___EmotionJSX(EnvironmentBreadcrumb, {
254
254
  name: "Globochem"
255
255
  });
256
+ };
257
+ export var DefaultOpen = function DefaultOpen() {
258
+ var _useState7 = useState({
259
+ name: 'Dog',
260
+ isSandbox: true
261
+ }),
262
+ _useState8 = _slicedToArray(_useState7, 2),
263
+ selectedEnvironment = _useState8[0],
264
+ setSelectedEnvironment = _useState8[1];
265
+
266
+ var envNode = ___EmotionJSX(Box, {
267
+ isRow: true
268
+ }, ___EmotionJSX(Text, {
269
+ color: "inherit"
270
+ }, selectedEnvironment.name), selectedEnvironment.isSandbox ? ___EmotionJSX(Chip, {
271
+ label: "SANDBOX",
272
+ variant: "boxes.environmentChip",
273
+ bg: "neutral.40"
274
+ }) : null);
275
+
276
+ var findEnvObj = function findEnvObj(envName) {
277
+ return _findInstanceProperty(defaultEnvironments).call(defaultEnvironments, function (_ref5) {
278
+ var name = _ref5.name;
279
+ return name === envName;
280
+ });
281
+ };
282
+
283
+ var handleSelectionChange = function handleSelectionChange(newEnvName) {
284
+ var envObj = findEnvObj(newEnvName);
285
+ setSelectedEnvironment(_objectSpread({}, envObj));
286
+ };
287
+
288
+ return ___EmotionJSX(EnvironmentBreadcrumb, {
289
+ items: defaultEnvironments,
290
+ name: "Globochem",
291
+ selectedItem: envNode,
292
+ onSelectionChange: handleSelectionChange,
293
+ isDefaultOpen: true
294
+ }, function (_ref6) {
295
+ var name = _ref6.name,
296
+ isSandbox = _ref6.isSandbox;
297
+ return ___EmotionJSX(Item, {
298
+ key: name,
299
+ textValue: name
300
+ }, name, isSandbox ? ___EmotionJSX(Chip, {
301
+ label: "SANDBOX",
302
+ variant: "boxes.environmentChip",
303
+ bg: "neutral.40"
304
+ }) : null);
305
+ });
306
+ };
307
+ export var ControlledMenu = function ControlledMenu() {
308
+ var _useState9 = useState(false),
309
+ _useState10 = _slicedToArray(_useState9, 2),
310
+ isOpen = _useState10[0],
311
+ setIsOpen = _useState10[1];
312
+
313
+ var _useState11 = useState({
314
+ name: 'Shark',
315
+ isSandbox: true
316
+ }),
317
+ _useState12 = _slicedToArray(_useState11, 2),
318
+ selectedEnvironment = _useState12[0],
319
+ setSelectedEnvironment = _useState12[1];
320
+
321
+ var envNode = ___EmotionJSX(Box, {
322
+ isRow: true
323
+ }, ___EmotionJSX(Text, {
324
+ color: "inherit"
325
+ }, selectedEnvironment.name), selectedEnvironment.isSandbox ? ___EmotionJSX(Chip, {
326
+ label: "SANDBOX",
327
+ variant: "boxes.environmentChip",
328
+ bg: "neutral.40"
329
+ }) : null);
330
+
331
+ var findEnvObj = function findEnvObj(envName) {
332
+ return _findInstanceProperty(defaultEnvironments).call(defaultEnvironments, function (_ref7) {
333
+ var name = _ref7.name;
334
+ return name === envName;
335
+ });
336
+ };
337
+
338
+ var handleSelectionChange = function handleSelectionChange(newEnvName) {
339
+ var envObj = findEnvObj(newEnvName);
340
+ setSelectedEnvironment(_objectSpread({}, envObj));
341
+ };
342
+
343
+ return ___EmotionJSX(EnvironmentBreadcrumb, {
344
+ items: defaultEnvironments,
345
+ name: "Globochem",
346
+ selectedItem: envNode,
347
+ onSelectionChange: handleSelectionChange,
348
+ isOpen: isOpen,
349
+ onOpenChange: setIsOpen
350
+ }, function (_ref8) {
351
+ var name = _ref8.name,
352
+ isSandbox = _ref8.isSandbox;
353
+ return ___EmotionJSX(Item, {
354
+ key: name,
355
+ textValue: name
356
+ }, name, isSandbox ? ___EmotionJSX(Chip, {
357
+ label: "SANDBOX",
358
+ variant: "boxes.environmentChip",
359
+ bg: "neutral.40"
360
+ }) : null);
361
+ });
256
362
  };
@@ -250,4 +250,25 @@ test('should have no accessibility violations', /*#__PURE__*/_asyncToGenerator(
250
250
  }
251
251
  }
252
252
  }, _callee2);
253
- })));
253
+ })));
254
+ test('should be open when isDefaultOpen is true', function () {
255
+ getComponent({
256
+ isDefaultOpen: true
257
+ });
258
+ expect(screen.queryByRole('listbox')).toBeInTheDocument();
259
+ expect(screen.queryAllByRole('option')).toHaveLength(3);
260
+ userEvent.click(screen.getByText(testSelectedItem));
261
+ expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
262
+ expect(screen.queryAllByRole('option')).not.toHaveLength(3);
263
+ });
264
+ test('should respond to onOpenChange', function () {
265
+ var onOpenChange = jest.fn();
266
+ getComponent({
267
+ onOpenChange: onOpenChange
268
+ });
269
+ expect(onOpenChange).not.toHaveBeenCalled();
270
+ userEvent.click(screen.getByText(testSelectedItem));
271
+ expect(onOpenChange).toHaveBeenNthCalledWith(1, true);
272
+ userEvent.click(screen.getByText(testSelectedItem));
273
+ expect(onOpenChange).toHaveBeenNthCalledWith(2, false);
274
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pingux/astro",
3
- "version": "1.22.0-alpha.1",
3
+ "version": "1.22.0-alpha.2",
4
4
  "description": "PingUX themeable React component library",
5
5
  "author": "ux-development@pingidentity.com",
6
6
  "license": "Apache-2.0",