@pingux/astro 1.41.0-alpha.1 → 1.41.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.
Files changed (65) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/NOTICE.html +4707 -0
  3. package/lib/Patterns/AttributeMappingDisplayViewPattern.stories.hidden.js +138 -0
  4. package/lib/Patterns/AttributeMappingEditViewPattern.stories.hidden.js +145 -0
  5. package/lib/Patterns/ListAndPanelPattern.stories.hidden.js +381 -0
  6. package/lib/Patterns/MessagesPattern.stories.hidden.js +69 -0
  7. package/lib/Patterns/SaveBarPattern.stories.hidden.js +80 -0
  8. package/lib/Patterns/UnsavedChangesPattern.stories.hidden.js +106 -0
  9. package/lib/cjs/Patterns/AttributeMappingDisplayViewPattern.stories.hidden.js +158 -0
  10. package/lib/cjs/Patterns/AttributeMappingEditViewPattern.stories.hidden.js +167 -0
  11. package/lib/cjs/Patterns/ListAndPanelPattern.stories.hidden.js +418 -0
  12. package/lib/cjs/Patterns/MessagesPattern.stories.hidden.js +99 -0
  13. package/lib/cjs/Patterns/SaveBarPattern.stories.hidden.js +109 -0
  14. package/lib/cjs/Patterns/UnsavedChangesPattern.stories.hidden.js +136 -0
  15. package/lib/cjs/components/Bracket/Bracket.stories.js +1 -3
  16. package/lib/cjs/components/Breadcrumbs/Breadcrumbs.js +1 -1
  17. package/lib/cjs/components/Breadcrumbs/Breadcrumbs.stories.js +2 -18
  18. package/lib/cjs/components/Card/Card.js +117 -2
  19. package/lib/cjs/components/Card/Card.stories.js +45 -17
  20. package/lib/cjs/components/Card/Card.test.js +50 -0
  21. package/lib/cjs/components/ComboBoxField/ComboBoxField.stories.js +13 -1
  22. package/lib/cjs/components/ComboBoxField/ComboBoxField.test.js +75 -4
  23. package/lib/cjs/components/DataTable/DataTable.js +56 -12
  24. package/lib/cjs/components/DataTable/DataTable.stories.js +84 -17
  25. package/lib/cjs/components/DataTable/DataTable.test.js +38 -6
  26. package/lib/cjs/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.js +1 -1
  27. package/lib/cjs/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.stories.js +18 -3
  28. package/lib/cjs/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.test.js +19 -5
  29. package/lib/cjs/components/Image/Image.stories.js +2 -2
  30. package/lib/cjs/components/ListBox/ListBoxSection.js +8 -1
  31. package/lib/cjs/components/ListView/ListView.stories.js +6 -4
  32. package/lib/cjs/components/OverlayPanel/OverlayPanel.stories.js +2 -1
  33. package/lib/cjs/components/SelectField/SelectField.stories.js +13 -1
  34. package/lib/cjs/components/SelectField/SelectField.test.js +75 -0
  35. package/lib/cjs/recipes/ConditionalFilter.stories.js +0 -1
  36. package/lib/cjs/recipes/ScrollableListView.stories.js +3 -2
  37. package/lib/cjs/recipes/TrialExperienceIndustryButtons.stories.js +4 -8
  38. package/lib/cjs/styles/variants/boxes.js +6 -6
  39. package/lib/cjs/utils/devUtils/constants/text.js +11 -0
  40. package/lib/components/Bracket/Bracket.stories.js +1 -3
  41. package/lib/components/Breadcrumbs/Breadcrumbs.js +1 -1
  42. package/lib/components/Breadcrumbs/Breadcrumbs.stories.js +0 -13
  43. package/lib/components/Card/Card.js +110 -2
  44. package/lib/components/Card/Card.stories.js +35 -10
  45. package/lib/components/Card/Card.test.js +36 -0
  46. package/lib/components/ComboBoxField/ComboBoxField.stories.js +13 -1
  47. package/lib/components/ComboBoxField/ComboBoxField.test.js +70 -5
  48. package/lib/components/DataTable/DataTable.js +56 -12
  49. package/lib/components/DataTable/DataTable.stories.js +75 -17
  50. package/lib/components/DataTable/DataTable.test.js +36 -6
  51. package/lib/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.js +1 -1
  52. package/lib/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.stories.js +18 -3
  53. package/lib/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.test.js +16 -5
  54. package/lib/components/Image/Image.stories.js +2 -2
  55. package/lib/components/ListBox/ListBoxSection.js +7 -2
  56. package/lib/components/ListView/ListView.stories.js +6 -4
  57. package/lib/components/OverlayPanel/OverlayPanel.stories.js +2 -1
  58. package/lib/components/SelectField/SelectField.stories.js +13 -1
  59. package/lib/components/SelectField/SelectField.test.js +68 -1
  60. package/lib/recipes/ConditionalFilter.stories.js +0 -1
  61. package/lib/recipes/ScrollableListView.stories.js +3 -2
  62. package/lib/recipes/TrialExperienceIndustryButtons.stories.js +4 -8
  63. package/lib/styles/variants/boxes.js +6 -6
  64. package/lib/utils/devUtils/constants/text.js +1 -0
  65. package/package.json +1 -1
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+
5
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
6
+
7
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
8
+
9
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
10
+
11
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
12
+
13
+ _Object$defineProperty(exports, "__esModule", {
14
+ value: true
15
+ });
16
+
17
+ exports["default"] = exports.Default = void 0;
18
+
19
+ var _setTimeout2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set-timeout"));
20
+
21
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
22
+
23
+ var _react = _interopRequireWildcard(require("react"));
24
+
25
+ var _hooks = require("../hooks");
26
+
27
+ var _index = require("../index");
28
+
29
+ var _react2 = require("@emotion/react");
30
+
31
+ 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); }
32
+
33
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
34
+
35
+ var _default = {
36
+ title: 'Design Patterns/Unsaved Changes'
37
+ };
38
+ exports["default"] = _default;
39
+
40
+ var Default = function Default() {
41
+ var state = (0, _hooks.useModalState)();
42
+
43
+ var _useState = (0, _react.useState)(''),
44
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
45
+ value = _useState2[0],
46
+ setValue = _useState2[1];
47
+
48
+ var _useState3 = (0, _react.useState)(false),
49
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
50
+ isShowingNeutral = _useState4[0],
51
+ setIsShowingNeutral = _useState4[1];
52
+
53
+ var _useState5 = (0, _react.useState)(null),
54
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
55
+ isShowingSuccess = _useState6[0],
56
+ setIsShowingSuccess = _useState6[1];
57
+
58
+ var closeModalAndClearInput = function closeModalAndClearInput() {
59
+ setValue('');
60
+ state.close();
61
+ setIsShowingNeutral(true);
62
+ (0, _setTimeout2["default"])(function () {
63
+ return setIsShowingNeutral(false);
64
+ }, 3000);
65
+ };
66
+
67
+ var closeModalAndShowSuccess = function closeModalAndShowSuccess() {
68
+ setValue('');
69
+ state.close();
70
+ setIsShowingSuccess(true);
71
+ (0, _setTimeout2["default"])(function () {
72
+ return setIsShowingSuccess(null);
73
+ }, 3000);
74
+ };
75
+
76
+ var sx = {
77
+ mainContentBox: {
78
+ p: 'xx'
79
+ },
80
+ textFieldBoxStyle: {
81
+ p: 'sm'
82
+ },
83
+ modalTextSaveChanges: {
84
+ mb: 'lg',
85
+ fontWeight: '0',
86
+ fontSize: 'xx',
87
+ lineHeight: '23px'
88
+ },
89
+ modalTextSaveOrDiscard: {
90
+ mb: 'lg',
91
+ fontSize: 'md',
92
+ lineHeight: '17.89px',
93
+ fontWeight: '0'
94
+ }
95
+ };
96
+ return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.Box, {
97
+ sx: sx.mainContentBox,
98
+ gap: "lg"
99
+ }, (0, _react2.jsx)(_index.Box, {
100
+ sx: sx.textFieldBoxStyle,
101
+ gap: "lg"
102
+ }, (0, _react2.jsx)(_index.TextField, {
103
+ label: "Place Holder",
104
+ onChange: function onChange(e) {
105
+ return setValue(e.target.value);
106
+ },
107
+ value: value
108
+ })), (0, _react2.jsx)(_index.Link, {
109
+ onPress: state.open,
110
+ "aria-label": "Open modal"
111
+ }, "Go Somewhere Else")), state.isOpen && (0, _react2.jsx)(_index.Modal, {
112
+ isOpen: state.isOpen,
113
+ onClose: state.close,
114
+ hasCloseButton: true
115
+ }, (0, _react2.jsx)(_index.Text, {
116
+ sx: sx.modalTextSaveChanges,
117
+ variant: "Bold"
118
+ }, "Save Changes?"), (0, _react2.jsx)(_index.Text, {
119
+ sx: sx.modalTextSaveOrDiscard
120
+ }, "Save or discard your changes before leaving this page."), (0, _react2.jsx)(_index.Box, {
121
+ isRow: true,
122
+ gap: "md"
123
+ }, (0, _react2.jsx)(_index.Button, {
124
+ variant: "primary",
125
+ onPress: closeModalAndShowSuccess
126
+ }, "Save"), (0, _react2.jsx)(_index.Button, {
127
+ onPress: closeModalAndClearInput
128
+ }, "Discard Changes"), (0, _react2.jsx)(_index.Button, {
129
+ variant: "link",
130
+ onPress: state.close
131
+ }, "Cancel"))), (0, _react2.jsx)(_index.Messages, null, isShowingNeutral && (0, _react2.jsx)(_index.Item, null, "Changes have been Discarded."), isShowingSuccess && (0, _react2.jsx)(_index.Item, {
132
+ status: "success"
133
+ }, "Form has been saved successfully."))));
134
+ };
135
+
136
+ exports.Default = Default;
@@ -61,8 +61,7 @@ var Default = function Default() {
61
61
  ml: "sm",
62
62
  bg: "background"
63
63
  }, (0, _react2.jsx)(_index.Box, {
64
- isRow: true,
65
- mb: "xs"
64
+ isRow: true
66
65
  }, (0, _react2.jsx)(_index.Chip, {
67
66
  label: "Any",
68
67
  bg: "neutral.20",
@@ -77,7 +76,6 @@ var Default = function Default() {
77
76
  isLast: index === anyConditions.length - 1
78
77
  }), (0, _react2.jsx)(_index.Box, {
79
78
  mt: "md",
80
- ml: "xs",
81
79
  variant: "forms.input.container",
82
80
  bg: "white",
83
81
  isRow: true,
@@ -90,7 +90,7 @@ var Breadcrumbs = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
90
90
  "aria-hidden": "true",
91
91
  icon: icon,
92
92
  mx: 5,
93
- size: 16
93
+ size: "xs"
94
94
  }, iconProps)));
95
95
  }, [children.length, filteredChildren, icon, iconProps, onAction]);
96
96
  return (0, _react2.jsx)("nav", {
@@ -8,7 +8,7 @@ _Object$defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
10
 
11
- exports["default"] = exports.WithSpan = exports.Default = void 0;
11
+ exports["default"] = exports.Default = void 0;
12
12
 
13
13
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
14
14
 
@@ -86,20 +86,4 @@ var Default = function Default(args) {
86
86
  }, "March 2020 Assets"));
87
87
  };
88
88
 
89
- exports.Default = Default;
90
-
91
- var WithSpan = function WithSpan() {
92
- return (0, _react2.jsx)(_Breadcrumbs["default"], {
93
- icon: _ChevronRightIcon["default"]
94
- }, (0, _react2.jsx)(_collections.Item, {
95
- key: "Parent",
96
- "aria-label": "parent",
97
- elementType: "span"
98
- }, "Parent"), (0, _react2.jsx)(_collections.Item, {
99
- key: "FonsVernall",
100
- "aria-label": "fons-vernall",
101
- elementType: "span"
102
- }, "Fons Vernall"));
103
- };
104
-
105
- exports.WithSpan = WithSpan;
89
+ exports.Default = Default;
@@ -18,12 +18,26 @@ exports["default"] = void 0;
18
18
 
19
19
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
20
20
 
21
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
22
+
21
23
  var _react = _interopRequireWildcard(require("react"));
22
24
 
25
+ var _propTypes = _interopRequireDefault(require("prop-types"));
26
+
27
+ var _utils = require("@react-aria/utils");
28
+
29
+ var _interactions = require("@react-aria/interactions");
30
+
31
+ var _focus = require("@react-aria/focus");
32
+
23
33
  var _Box = _interopRequireDefault(require("../Box"));
24
34
 
35
+ var _hooks = require("../../hooks");
36
+
25
37
  var _react2 = require("@emotion/react");
26
38
 
39
+ var _excluded = ["className", "onHoverStart", "onHoverChange", "onHoverEnd", "onPress", "onPressStart", "onPressEnd", "onPressChange", "onPressUp"];
40
+
27
41
  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); }
28
42
 
29
43
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -33,11 +47,112 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
33
47
  * See Box for list of props.
34
48
  */
35
49
  var Card = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
50
+ var className = props.className,
51
+ onHoverStart = props.onHoverStart,
52
+ onHoverChange = props.onHoverChange,
53
+ onHoverEnd = props.onHoverEnd,
54
+ onPress = props.onPress,
55
+ onPressStart = props.onPressStart,
56
+ onPressEnd = props.onPressEnd,
57
+ onPressChange = props.onPressChange,
58
+ onPressUp = props.onPressUp,
59
+ others = (0, _objectWithoutProperties2["default"])(props, _excluded);
60
+
61
+ var _useHover = (0, _interactions.useHover)(props),
62
+ hoverProps = _useHover.hoverProps,
63
+ isHovered = _useHover.isHovered;
64
+
65
+ var _useFocusRing = (0, _focus.useFocusRing)(),
66
+ focusProps = _useFocusRing.focusProps,
67
+ isFocusVisible = _useFocusRing.isFocusVisible;
68
+
69
+ var _usePress = (0, _interactions.usePress)({
70
+ ref: ref,
71
+ onPress: onPress,
72
+ onPressStart: onPressStart,
73
+ onPressEnd: onPressEnd,
74
+ onPressChange: onPressChange,
75
+ onPressUp: onPressUp
76
+ }),
77
+ pressProps = _usePress.pressProps,
78
+ isPressed = _usePress.isPressed;
79
+
80
+ var _useFocusRing2 = (0, _focus.useFocusRing)({
81
+ within: true
82
+ }),
83
+ focusWithinProps = _useFocusRing2.focusProps,
84
+ isFocusedWithin = _useFocusRing2.isFocusVisible;
85
+
86
+ var _useStatusClasses = (0, _hooks.useStatusClasses)(className, {
87
+ isHovered: isHovered,
88
+ isPressed: isPressed,
89
+ isFocused: isFocusVisible || isFocusedWithin
90
+ }),
91
+ classNames = _useStatusClasses.classNames;
92
+
93
+ var ariaLabel = props['aria-label'];
36
94
  return (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
95
+ "aria-label": ariaLabel,
37
96
  variant: "boxes.card",
38
- ref: ref
39
- }, props));
97
+ className: classNames,
98
+ ref: ref,
99
+ isFocused: isFocusVisible
100
+ }, others, (0, _utils.mergeProps)(hoverProps, pressProps, focusProps, focusWithinProps)));
40
101
  });
102
+ Card.propTypes = {
103
+ /** Defines a string value that labels the current element. */
104
+ 'aria-label': _propTypes["default"].string,
105
+
106
+ /**
107
+ * Handler that is called when a hover interaction starts.
108
+ * (e: HoverEvent) => void
109
+ */
110
+ onHoverStart: _propTypes["default"].func,
111
+
112
+ /**
113
+ * Handler that is called when a hover interaction ends.
114
+ * (e: HoverEvent) => void
115
+ */
116
+ onHoverEnd: _propTypes["default"].func,
117
+
118
+ /**
119
+ * Handler that is called when the hover state changes.
120
+ * (isHovering: boolean) => void
121
+ */
122
+ onHoverChange: _propTypes["default"].func,
123
+
124
+ /**
125
+ * Handler that is called when the press is released over the target.
126
+ * (e: PressEvent) => void
127
+ */
128
+ onPress: _propTypes["default"].func,
129
+
130
+ /**
131
+ * Handler that is called when a press interaction starts.
132
+ * (e: PressEvent) => void
133
+ */
134
+ onPressStart: _propTypes["default"].func,
135
+
136
+ /**
137
+ * Handler that is called when a press interaction ends, either over the target or when the
138
+ * pointer leaves the target.
139
+ * (e: PressEvent) => void
140
+ */
141
+ onPressEnd: _propTypes["default"].func,
142
+
143
+ /**
144
+ * Handler that is called when the press state changes.
145
+ * (isPressed: boolean) => void
146
+ */
147
+ onPressChange: _propTypes["default"].func,
148
+
149
+ /**
150
+ * Handler that is called when a press is released over the target, regardless of whether it
151
+ * started on the target or not.
152
+ * (e: PressEvent) => void
153
+ */
154
+ onPressUp: _propTypes["default"].func
155
+ };
41
156
  Card.displayName = 'Card';
42
157
  var _default = Card;
43
158
  exports["default"] = _default;
@@ -8,23 +8,23 @@ _Object$defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
10
 
11
- exports["default"] = exports.Default = exports.CardRow = void 0;
11
+ exports["default"] = exports.InteractiveCard = exports.Default = exports.CardRow = void 0;
12
12
 
13
- var _react = _interopRequireDefault(require("react"));
13
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
14
14
 
15
- var _Card = _interopRequireDefault(require("./Card"));
15
+ var _react = _interopRequireDefault(require("react"));
16
16
 
17
- var _Box = _interopRequireDefault(require("../Box"));
17
+ var _index = require("../../index");
18
18
 
19
19
  var _react2 = require("@emotion/react");
20
20
 
21
21
  var _default = {
22
22
  title: 'Components/Card',
23
- component: _Card["default"],
23
+ component: _index.Card,
24
24
  argTypes: {
25
25
  children: {
26
26
  description: 'Card content.',
27
- defaultValue: 'Card Children',
27
+ defaultValue: 'Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut at enim nunc. Cras congue consequat odio, ac sodales lacus imperdiet quis. In id ex eu lorem sollicitudin hendrerit feugiat ultrices elit. Curabitur imperdiet libero vitae luctus blandit. Ut ac dignissim tortor. Pellentesque convallis eu metus vitae mollis. Donec sapien felis, laoreet eu egestas eu, blandit quis tellus. Donec luctus suscipit nibh, et tincidunt nisl facilisis ut. Mauris molestie purus at lectus venenatis, ac ultrices felis ultrices.',
28
28
  table: {
29
29
  type: {}
30
30
  },
@@ -37,12 +37,12 @@ var _default = {
37
37
  exports["default"] = _default;
38
38
 
39
39
  var Default = function Default(args) {
40
- return (0, _react2.jsx)(_Card["default"], args);
40
+ return (0, _react2.jsx)(_index.Card, args);
41
41
  };
42
42
 
43
43
  exports.Default = Default;
44
44
 
45
- var CardRow = function CardRow() {
45
+ var CardRow = function CardRow(args) {
46
46
  var sx = {
47
47
  li: {
48
48
  display: 'inline',
@@ -53,27 +53,55 @@ var CardRow = function CardRow() {
53
53
  display: 'block'
54
54
  }
55
55
  };
56
- return (0, _react2.jsx)(_Box["default"], {
56
+ return (0, _react2.jsx)(_index.Box, {
57
57
  isRow: true,
58
58
  gap: "md",
59
59
  as: "ul",
60
60
  pl: "0px"
61
- }, (0, _react2.jsx)(_Box["default"], {
61
+ }, (0, _react2.jsx)(_index.Box, {
62
62
  as: "li",
63
63
  sx: sx.li
64
- }, (0, _react2.jsx)(_Card["default"], {
64
+ }, (0, _react2.jsx)(_index.Card, (0, _extends2["default"])({
65
65
  sx: sx.card
66
- }, "First")), (0, _react2.jsx)(_Box["default"], {
66
+ }, args))), (0, _react2.jsx)(_index.Box, {
67
67
  as: "li",
68
68
  sx: sx.li
69
- }, (0, _react2.jsx)(_Card["default"], {
69
+ }, (0, _react2.jsx)(_index.Card, (0, _extends2["default"])({
70
70
  sx: sx.card
71
- }, "Second")), (0, _react2.jsx)(_Box["default"], {
71
+ }, args))), (0, _react2.jsx)(_index.Box, {
72
72
  as: "li",
73
73
  sx: sx.li
74
- }, (0, _react2.jsx)(_Card["default"], {
74
+ }, (0, _react2.jsx)(_index.Card, (0, _extends2["default"])({
75
75
  sx: sx.card
76
- }, "Third")));
76
+ }, args))));
77
+ };
78
+
79
+ exports.CardRow = CardRow;
80
+
81
+ var InteractiveCard = function InteractiveCard() {
82
+ var sx = {
83
+ alignContent: 'center',
84
+ height: '221px',
85
+ justifyContent: 'center',
86
+ textAlign: 'center',
87
+ width: '233px'
88
+ };
89
+ return (0, _react2.jsx)(_index.Card, {
90
+ onPress: function onPress() {
91
+ return console.log('card pressed');
92
+ },
93
+ onHoverStart: function onHoverStart() {
94
+ return console.log('card hovered');
95
+ },
96
+ tabIndex: "0",
97
+ sx: sx
98
+ }, "Interactive Card", (0, _react2.jsx)(_index.Button, {
99
+ variant: "inline",
100
+ mt: "md",
101
+ onPress: function onPress() {
102
+ return console.log('button pressed');
103
+ }
104
+ }, "Explore"));
77
105
  };
78
106
 
79
- exports.CardRow = CardRow;
107
+ exports.InteractiveCard = InteractiveCard;
@@ -8,6 +8,8 @@ var _react = _interopRequireDefault(require("react"));
8
8
 
9
9
  var _react2 = require("@testing-library/react");
10
10
 
11
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
12
+
11
13
  var _Card = _interopRequireDefault(require("./Card"));
12
14
 
13
15
  var _Button = _interopRequireDefault(require("../Button"));
@@ -45,4 +47,52 @@ test('renders children within Card component', function () {
45
47
  var mockedChildren = _react2.screen.getByRole('button');
46
48
 
47
49
  expect(mockedChildren).toBeInTheDocument();
50
+ });
51
+ test('card allows hover, focus, and press events', function () {
52
+ var children = (0, _react3.jsx)(_Button["default"], null);
53
+ var onPress = jest.fn();
54
+ getComponent({
55
+ children: children,
56
+ onPress: onPress,
57
+ tabIndex: 0
58
+ });
59
+
60
+ var card = _react2.screen.getByTestId(testId);
61
+
62
+ expect(card).not.toHaveClass('is-hovered');
63
+
64
+ _userEvent["default"].hover(card);
65
+
66
+ expect(card).toHaveClass('is-hovered');
67
+
68
+ _userEvent["default"].click(card);
69
+
70
+ expect(onPress).toHaveBeenCalled();
71
+ expect(card).not.toHaveClass('is-focused');
72
+
73
+ _userEvent["default"].tab();
74
+
75
+ expect(card).toHaveClass('is-focused');
76
+ });
77
+ test('allows focus within card', function () {
78
+ var children = (0, _react3.jsx)(_Button["default"], null);
79
+ getComponent({
80
+ children: children,
81
+ tabIndex: 0
82
+ });
83
+
84
+ var button = _react2.screen.getByRole('button');
85
+
86
+ var card = _react2.screen.getByTestId(testId);
87
+
88
+ expect(button).not.toHaveClass('is-focused');
89
+
90
+ _userEvent["default"].tab();
91
+
92
+ expect(button).not.toHaveClass('is-focused');
93
+ expect(card).toHaveClass('is-focused');
94
+
95
+ _userEvent["default"].tab();
96
+
97
+ expect(button).toHaveClass('is-focused');
48
98
  });
@@ -134,6 +134,7 @@ var animals = [{
134
134
  }];
135
135
  var withSection = [{
136
136
  name: 'Animals',
137
+ key: 'Animals',
137
138
  children: [{
138
139
  name: 'Raccoon'
139
140
  }, {
@@ -143,6 +144,7 @@ var withSection = [{
143
144
  }]
144
145
  }, {
145
146
  name: 'People',
147
+ key: 'People',
146
148
  children: [{
147
149
  name: 'Michael'
148
150
  }, {
@@ -150,6 +152,16 @@ var withSection = [{
150
152
  }, {
151
153
  name: 'Creed'
152
154
  }]
155
+ }, {
156
+ name: null,
157
+ key: 'fruit',
158
+ children: [{
159
+ name: 'Apple'
160
+ }, {
161
+ name: 'Orange'
162
+ }, {
163
+ name: 'Banana'
164
+ }]
153
165
  }];
154
166
  var actions = {
155
167
  onOpenChange: (0, _addonActions.action)('onOpenChange'),
@@ -243,7 +255,7 @@ var WithSections = function WithSections(args) {
243
255
  items: withSection
244
256
  }, args), function (section) {
245
257
  return (0, _react2.jsx)(_.Section, {
246
- key: section.name,
258
+ key: section.key,
247
259
  items: section.children,
248
260
  title: section.name
249
261
  }, function (item) {
@@ -82,6 +82,37 @@ var items = [{
82
82
  name: 'Snake',
83
83
  id: '3'
84
84
  }];
85
+ var withSection = [{
86
+ name: 'Animals',
87
+ key: 'Animals',
88
+ kids: [{
89
+ name: 'Raccoon'
90
+ }, {
91
+ name: 'Kangaroo'
92
+ }, {
93
+ name: 'Opossum'
94
+ }]
95
+ }, {
96
+ name: 'People',
97
+ key: 'People',
98
+ kids: [{
99
+ name: 'Michael'
100
+ }, {
101
+ name: 'Dwight'
102
+ }, {
103
+ name: 'Creed'
104
+ }]
105
+ }, {
106
+ name: null,
107
+ key: 'fruit',
108
+ kids: [{
109
+ name: 'Apple'
110
+ }, {
111
+ name: 'Orange'
112
+ }, {
113
+ name: 'Banana'
114
+ }]
115
+ }];
85
116
  var defaultProps = {
86
117
  defaultItems: items,
87
118
  label: 'Test Label'
@@ -102,6 +133,28 @@ var getComponent = function getComponent() {
102
133
  })));
103
134
  };
104
135
 
136
+ var getComponentWithSections = function getComponentWithSections() {
137
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
138
+
139
+ var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
140
+ _ref2$renderFn = _ref2.renderFn,
141
+ renderFn = _ref2$renderFn === void 0 ? _testWrapper.render : _ref2$renderFn;
142
+
143
+ return renderFn((0, _react3.jsx)(_index.OverlayProvider, null, (0, _react3.jsx)(_index.ComboBoxField, (0, _extends2["default"])({}, defaultProps, props, {
144
+ items: withSection
145
+ }), function (section) {
146
+ return (0, _react3.jsx)(_index.Section, {
147
+ key: section.key,
148
+ items: section.kids,
149
+ title: section.name
150
+ }, function (item) {
151
+ return (0, _react3.jsx)(_index.Item, {
152
+ key: item.name
153
+ }, item.name);
154
+ });
155
+ })));
156
+ };
157
+
105
158
  var ComboBoxWithCustomFilter = function ComboBoxWithCustomFilter() {
106
159
  var _useFilter = (0, _i18n.useFilter)({
107
160
  sensitivity: 'base'
@@ -118,8 +171,8 @@ var ComboBoxWithCustomFilter = function ComboBoxWithCustomFilter() {
118
171
  setFieldState = _useState2[1];
119
172
 
120
173
  var onSelectionChange = function onSelectionChange(key) {
121
- var selectedItem = (0, _filter["default"])(items).call(items, function (_ref2) {
122
- var id = _ref2.id;
174
+ var selectedItem = (0, _filter["default"])(items).call(items, function (_ref3) {
175
+ var id = _ref3.id;
123
176
  return id === key;
124
177
  });
125
178
  setFieldState({
@@ -189,8 +242,8 @@ var ComboBoxWithAddOption = function ComboBoxWithAddOption() {
189
242
  setSelectedKey = _useState8[1];
190
243
 
191
244
  var onSelectionChange = function onSelectionChange(key) {
192
- if (key && !(0, _find["default"])(options).call(options, function (_ref3) {
193
- var name = _ref3.name;
245
+ if (key && !(0, _find["default"])(options).call(options, function (_ref4) {
246
+ var name = _ref4.name;
194
247
  return name === key;
195
248
  })) {
196
249
  var _context;
@@ -1216,6 +1269,24 @@ test('popover closes on input blur', function () {
1216
1269
  expect(_testWrapper.screen.queryByRole('listbox')).not.toBeInTheDocument();
1217
1270
  expect(_testWrapper.screen.queryByRole('option')).not.toBeInTheDocument();
1218
1271
  });
1272
+ test('passing sections, renders separators', function () {
1273
+ getComponentWithSections();
1274
+
1275
+ var button = _testWrapper.screen.getByRole('button');
1276
+
1277
+ _userEvent["default"].click(button);
1278
+
1279
+ expect(_testWrapper.screen.queryAllByRole('separator')).toHaveLength(4);
1280
+ });
1281
+ test('a blank title does not render', function () {
1282
+ getComponentWithSections();
1283
+
1284
+ var button = _testWrapper.screen.getByRole('button');
1285
+
1286
+ _userEvent["default"].click(button);
1287
+
1288
+ expect(_testWrapper.screen.queryByText('Fruit')).not.toBeInTheDocument();
1289
+ });
1219
1290
  describe('when isReadOnly is true', function () {
1220
1291
  var testProp = {
1221
1292
  isReadOnly: true