@pingux/astro 2.125.0 → 2.125.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -51,7 +51,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
51
51
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty2(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
52
52
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context3, _context4; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context3 = ownKeys(Object(source), !0)).call(_context3, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context4 = ownKeys(Object(source))).call(_context4, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
53
53
  var CondensedMultivaluesField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
54
- var _selectionManager$sta, _selectionManager$sta2, _selectionManager$sta3, _listBoxRef$current;
54
+ var _selectionManager$sta, _selectionManager$sta2, _selectionManager$sta3, _listBoxRef$current2;
55
55
  var defaultSelectedKeys = props.defaultSelectedKeys,
56
56
  direction = props.direction,
57
57
  _props$disabledKeys = props.disabledKeys,
@@ -247,6 +247,14 @@ var CondensedMultivaluesField = /*#__PURE__*/(0, _react.forwardRef)(function (pr
247
247
  }
248
248
  if (onKeyDown) onKeyDown(e.nativeEvent);
249
249
  };
250
+ var handleBlur = function handleBlur(e) {
251
+ var _inputWrapperRef$curr, _listBoxRef$current;
252
+ var relatedTarget = e.relatedTarget || document.activeElement;
253
+ if ((_inputWrapperRef$curr = inputWrapperRef.current) !== null && _inputWrapperRef$curr !== void 0 && _inputWrapperRef$curr.contains(relatedTarget) || (_listBoxRef$current = listBoxRef.current) !== null && _listBoxRef$current !== void 0 && _listBoxRef$current.contains(relatedTarget) || buttonRef.current === relatedTarget) {
254
+ return;
255
+ }
256
+ setIsOpen(false);
257
+ };
250
258
  var _useState9 = (0, _react.useState)('Select All'),
251
259
  _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
252
260
  selectionState = _useState10[0],
@@ -301,7 +309,10 @@ var CondensedMultivaluesField = /*#__PURE__*/(0, _react.forwardRef)(function (pr
301
309
  loadingState: loadingState,
302
310
  isLoading: loadingState === _loadingStates["default"].LOADING_MORE,
303
311
  "aria-label": "List of options",
304
- isCondensed: mode === 'condensed'
312
+ isCondensed: mode === 'condensed',
313
+ onBlur: function onBlur(e) {
314
+ return handleBlur(e);
315
+ }
305
316
  }, overlayProps))), (0, _react2.jsx)(_reactAria.DismissButton, {
306
317
  onDismiss: close
307
318
  }));
@@ -320,7 +331,7 @@ var CondensedMultivaluesField = /*#__PURE__*/(0, _react.forwardRef)(function (pr
320
331
  var inputProps = _objectSpread(_objectSpread({}, customInputProps), {}, {
321
332
  controlProps: {
322
333
  'aria-activedescendant': activeDescendant,
323
- 'aria-controls': (_listBoxRef$current = listBoxRef.current) === null || _listBoxRef$current === void 0 ? void 0 : _listBoxRef$current.id,
334
+ 'aria-controls': (_listBoxRef$current2 = listBoxRef.current) === null || _listBoxRef$current2 === void 0 ? void 0 : _listBoxRef$current2.id,
324
335
  'aria-expanded': isOpen,
325
336
  role: 'combobox',
326
337
  ref: inputRef,
@@ -1060,6 +1060,41 @@ test('opening and closing listbox fires "onOpenChange" in condensed mode', funct
1060
1060
  expect(_testWrapper.screen.queryByRole('listbox')).not.toBeInTheDocument();
1061
1061
  expect(onOpenChange).toHaveBeenCalledWith(false);
1062
1062
  });
1063
+ test('in condensed mode, clicking outside of listbox closes listbox', function () {
1064
+ var onOpenChange = jest.fn();
1065
+ getComponent({
1066
+ mode: 'condensed',
1067
+ onOpenChange: onOpenChange
1068
+ });
1069
+ var input = _testWrapper.screen.getByRole('combobox');
1070
+ _userEvent["default"].tab();
1071
+ expect(input).toHaveFocus();
1072
+ expect(_testWrapper.screen.queryByRole('listbox')).toBeInTheDocument();
1073
+ expect(onOpenChange).toHaveBeenCalledWith(true);
1074
+ _userEvent["default"].click(document.body);
1075
+ expect(_testWrapper.screen.queryByRole('listbox')).not.toBeInTheDocument();
1076
+ expect(onOpenChange).toHaveBeenCalledWith(false);
1077
+ });
1078
+ test('in condensed mode, tabbing outside of listbox closes listbox', function () {
1079
+ var onOpenChange = jest.fn();
1080
+ getComponent({
1081
+ mode: 'condensed',
1082
+ onOpenChange: onOpenChange
1083
+ });
1084
+ var input = _testWrapper.screen.getByRole('combobox');
1085
+ _userEvent["default"].tab();
1086
+ expect(input).toHaveFocus();
1087
+ expect(_testWrapper.screen.queryByRole('listbox')).toBeInTheDocument();
1088
+ expect(onOpenChange).toHaveBeenCalledWith(true);
1089
+ // one tab to move focus to select all button
1090
+ _userEvent["default"].tab();
1091
+ // one tab to move focus to list
1092
+ _userEvent["default"].tab();
1093
+ // one tab to move focus beyond lsit
1094
+ _userEvent["default"].tab();
1095
+ expect(_testWrapper.screen.queryByRole('listbox')).not.toBeInTheDocument();
1096
+ expect(onOpenChange).toHaveBeenCalledWith(false);
1097
+ });
1063
1098
  test('selected keys in condensed mode ', function () {
1064
1099
  getComponent({
1065
1100
  mode: 'condensed',
@@ -39,7 +39,7 @@ import { statusDefaultProp, statusPropTypes } from '../../utils/docUtils/statusP
39
39
  import ListBox from '../ListBox';
40
40
  import { jsx as ___EmotionJSX } from "@emotion/react";
41
41
  var CondensedMultivaluesField = /*#__PURE__*/forwardRef(function (props, ref) {
42
- var _selectionManager$sta, _selectionManager$sta2, _selectionManager$sta3, _listBoxRef$current;
42
+ var _selectionManager$sta, _selectionManager$sta2, _selectionManager$sta3, _listBoxRef$current2;
43
43
  var defaultSelectedKeys = props.defaultSelectedKeys,
44
44
  direction = props.direction,
45
45
  _props$disabledKeys = props.disabledKeys,
@@ -235,6 +235,14 @@ var CondensedMultivaluesField = /*#__PURE__*/forwardRef(function (props, ref) {
235
235
  }
236
236
  if (onKeyDown) onKeyDown(e.nativeEvent);
237
237
  };
238
+ var handleBlur = function handleBlur(e) {
239
+ var _inputWrapperRef$curr, _listBoxRef$current;
240
+ var relatedTarget = e.relatedTarget || document.activeElement;
241
+ if ((_inputWrapperRef$curr = inputWrapperRef.current) !== null && _inputWrapperRef$curr !== void 0 && _inputWrapperRef$curr.contains(relatedTarget) || (_listBoxRef$current = listBoxRef.current) !== null && _listBoxRef$current !== void 0 && _listBoxRef$current.contains(relatedTarget) || buttonRef.current === relatedTarget) {
242
+ return;
243
+ }
244
+ setIsOpen(false);
245
+ };
238
246
  var _useState9 = useState('Select All'),
239
247
  _useState10 = _slicedToArray(_useState9, 2),
240
248
  selectionState = _useState10[0],
@@ -289,7 +297,10 @@ var CondensedMultivaluesField = /*#__PURE__*/forwardRef(function (props, ref) {
289
297
  loadingState: loadingState,
290
298
  isLoading: loadingState === loadingStates.LOADING_MORE,
291
299
  "aria-label": "List of options",
292
- isCondensed: mode === 'condensed'
300
+ isCondensed: mode === 'condensed',
301
+ onBlur: function onBlur(e) {
302
+ return handleBlur(e);
303
+ }
293
304
  }, overlayProps))), ___EmotionJSX(DismissButton, {
294
305
  onDismiss: close
295
306
  }));
@@ -308,7 +319,7 @@ var CondensedMultivaluesField = /*#__PURE__*/forwardRef(function (props, ref) {
308
319
  var inputProps = _objectSpread(_objectSpread({}, customInputProps), {}, {
309
320
  controlProps: {
310
321
  'aria-activedescendant': activeDescendant,
311
- 'aria-controls': (_listBoxRef$current = listBoxRef.current) === null || _listBoxRef$current === void 0 ? void 0 : _listBoxRef$current.id,
322
+ 'aria-controls': (_listBoxRef$current2 = listBoxRef.current) === null || _listBoxRef$current2 === void 0 ? void 0 : _listBoxRef$current2.id,
312
323
  'aria-expanded': isOpen,
313
324
  role: 'combobox',
314
325
  ref: inputRef,
@@ -1053,6 +1053,41 @@ test('opening and closing listbox fires "onOpenChange" in condensed mode', funct
1053
1053
  expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
1054
1054
  expect(onOpenChange).toHaveBeenCalledWith(false);
1055
1055
  });
1056
+ test('in condensed mode, clicking outside of listbox closes listbox', function () {
1057
+ var onOpenChange = jest.fn();
1058
+ getComponent({
1059
+ mode: 'condensed',
1060
+ onOpenChange: onOpenChange
1061
+ });
1062
+ var input = screen.getByRole('combobox');
1063
+ userEvent.tab();
1064
+ expect(input).toHaveFocus();
1065
+ expect(screen.queryByRole('listbox')).toBeInTheDocument();
1066
+ expect(onOpenChange).toHaveBeenCalledWith(true);
1067
+ userEvent.click(document.body);
1068
+ expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
1069
+ expect(onOpenChange).toHaveBeenCalledWith(false);
1070
+ });
1071
+ test('in condensed mode, tabbing outside of listbox closes listbox', function () {
1072
+ var onOpenChange = jest.fn();
1073
+ getComponent({
1074
+ mode: 'condensed',
1075
+ onOpenChange: onOpenChange
1076
+ });
1077
+ var input = screen.getByRole('combobox');
1078
+ userEvent.tab();
1079
+ expect(input).toHaveFocus();
1080
+ expect(screen.queryByRole('listbox')).toBeInTheDocument();
1081
+ expect(onOpenChange).toHaveBeenCalledWith(true);
1082
+ // one tab to move focus to select all button
1083
+ userEvent.tab();
1084
+ // one tab to move focus to list
1085
+ userEvent.tab();
1086
+ // one tab to move focus beyond lsit
1087
+ userEvent.tab();
1088
+ expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
1089
+ expect(onOpenChange).toHaveBeenCalledWith(false);
1090
+ });
1056
1091
  test('selected keys in condensed mode ', function () {
1057
1092
  getComponent({
1058
1093
  mode: 'condensed',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pingux/astro",
3
- "version": "2.125.0",
3
+ "version": "2.125.1-alpha.0",
4
4
  "description": "React component library for Ping Identity's design system",
5
5
  "repository": {
6
6
  "type": "git",