@pingux/astro 1.21.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.
@@ -345,6 +345,12 @@ ComboBoxField.propTypes = {
345
345
  /** Where the ComboBox menu opens relative to its trigger. */
346
346
  direction: _propTypes["default"].oneOf(['top', 'right', 'bottom', 'left']),
347
347
 
348
+ /** Text rendered below the input. */
349
+ helperText: _propTypes["default"].node,
350
+
351
+ /** Determines the input status indicator and helper text styling. */
352
+ status: _propTypes["default"].oneOf(['default', 'success', 'warning', 'error']),
353
+
348
354
  /** The initial selected key in the collection (uncontrolled). */
349
355
  defaultSelectedKey: _propTypes["default"].string,
350
356
 
@@ -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
+ });
@@ -174,6 +174,7 @@ var NumberField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
174
174
  }
175
175
  };
176
176
 
177
+ inputProps['aria-roledescription'] = null;
177
178
  return (0, _react2.jsx)(_index.Box, fieldContainerProps, (0, _react2.jsx)(_index.Label, (0, _utils.mergeProps)(fieldLabelProps, labelProps)), (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({
178
179
  variant: "numberField.noDefaultArrows"
179
180
  }, groupProps), (0, _react2.jsx)(_index.Box, {
@@ -144,6 +144,7 @@ var ControlledState = function ControlledState() {
144
144
  setValue = _useState2[1];
145
145
 
146
146
  return (0, _react2.jsx)(_NumberField["default"], {
147
+ label: "Controlled State",
147
148
  value: value,
148
149
  onChange: setValue
149
150
  });
@@ -81,6 +81,9 @@ var input = _objectSpread(_objectSpread({}, _text.text.inputValue), {}, {
81
81
  },
82
82
  '&::-ms-reveal, &::-ms-clear': {
83
83
  display: 'none'
84
+ },
85
+ '&.is-error': {
86
+ borderColor: 'critical.bright'
84
87
  }
85
88
  }); // Example variant input
86
89
 
@@ -299,6 +299,12 @@ ComboBoxField.propTypes = {
299
299
  /** Where the ComboBox menu opens relative to its trigger. */
300
300
  direction: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
301
301
 
302
+ /** Text rendered below the input. */
303
+ helperText: PropTypes.node,
304
+
305
+ /** Determines the input status indicator and helper text styling. */
306
+ status: PropTypes.oneOf(['default', 'success', 'warning', 'error']),
307
+
302
308
  /** The initial selected key in the collection (uncontrolled). */
303
309
  defaultSelectedKey: PropTypes.string,
304
310
 
@@ -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
+ });
@@ -133,6 +133,7 @@ var NumberField = /*#__PURE__*/forwardRef(function (props, ref) {
133
133
  }
134
134
  };
135
135
 
136
+ inputProps['aria-roledescription'] = null;
136
137
  return ___EmotionJSX(Box, fieldContainerProps, ___EmotionJSX(Label, mergeProps(fieldLabelProps, labelProps)), ___EmotionJSX(Box, _extends({
137
138
  variant: "numberField.noDefaultArrows"
138
139
  }, groupProps), ___EmotionJSX(Box, {
@@ -109,6 +109,7 @@ export var ControlledState = function ControlledState() {
109
109
  setValue = _useState2[1];
110
110
 
111
111
  return ___EmotionJSX(NumberField, {
112
+ label: "Controlled State",
112
113
  value: value,
113
114
  onChange: setValue
114
115
  });
@@ -61,6 +61,9 @@ export var input = _objectSpread(_objectSpread({}, text.inputValue), {}, {
61
61
  },
62
62
  '&::-ms-reveal, &::-ms-clear': {
63
63
  display: 'none'
64
+ },
65
+ '&.is-error': {
66
+ borderColor: 'critical.bright'
64
67
  }
65
68
  }); // Example variant input
66
69
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pingux/astro",
3
- "version": "1.21.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",