@pingux/astro 1.9.0-alpha.4 → 1.10.0-alpha.1

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,24 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.9.0](https://gitlab.corp.pingidentity.com/ux/pingux/compare/@pingux/astro@1.8.1...@pingux/astro@1.9.0) (2022-04-21)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * [UIP-5348] NumberField keyboard interactions not working in external projects ([bc56154](https://gitlab.corp.pingidentity.com/ux/pingux/commit/bc561546b32121590b6219bff425b838e41e6b76))
12
+ * [UIP-5393] Astro ComboBoxField component mixes custom value key with text content ([dbe53f6](https://gitlab.corp.pingidentity.com/ux/pingux/commit/dbe53f6e81bf2219dbad02cc632325629585fef4))
13
+ * [UIP-5412] Fix autocomplete for Astro and Schema Form ([db7ad4d](https://gitlab.corp.pingidentity.com/ux/pingux/commit/db7ad4dbbac061be092c654125608259ce127703))
14
+
15
+
16
+ ### Features
17
+
18
+ * [UIP-5383] Remove box shadow on button focus ([4074f15](https://gitlab.corp.pingidentity.com/ux/pingux/commit/4074f15b87548942b1b3eae27150f8ae2db8a6dc))
19
+
20
+
21
+
22
+
23
+
6
24
  ## [1.8.1](https://gitlab.corp.pingidentity.com/ux/pingux/compare/@pingux/astro@1.8.0...@pingux/astro@1.8.1) (2022-04-14)
7
25
 
8
26
 
@@ -14,7 +14,7 @@ _Object$defineProperty(exports, "__esModule", {
14
14
  value: true
15
15
  });
16
16
 
17
- exports["default"] = exports.Default = exports.Controlled = void 0;
17
+ exports["default"] = exports.Default = exports.Controlled = exports.AccordionWithInputs = void 0;
18
18
 
19
19
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
20
20
 
@@ -295,6 +295,59 @@ var Controlled = function Controlled() {
295
295
  }) : null);
296
296
  }))
297
297
  );
298
+ }; // const items = [
299
+ // { id: 1, name: "Aardvark", key: "Aardvark" },
300
+ // { id: 2, name: "Kangaroo", key: "Kangaroo" },
301
+ // { id: 3, name: "Snake", key: "Snake" },
302
+ // { id: 4, name: "Frog", key: "Frog" },
303
+ // { id: 5, name: "Seal", key: "Seal" },
304
+ // { id: 6, name: "Orangutan", key: "Orangutan" },
305
+ // { id: 7, name: "Shark", key: "Shark" }
306
+ // ];
307
+ // const data = [
308
+ // {
309
+ // name: "Client Application Developer",
310
+ // key: "Client"
311
+ // },
312
+ // {
313
+ // name: "Environment Admin",
314
+ // key: "Environment"
315
+ // },
316
+ // {
317
+ // name: "Organization Admin",
318
+ // key: "Organization"
319
+ // }
320
+ // ];
321
+
322
+
323
+ exports.Controlled = Controlled;
324
+
325
+ var AccordionWithInputs = function AccordionWithInputs() {
326
+ return (0, _react2.jsx)(_AccordionGridGroup["default"], {
327
+ items: data
328
+ }, function (item) {
329
+ return (0, _react2.jsx)(_collections.Item, {
330
+ key: item.key,
331
+ textValue: item.name
332
+ }, (0, _react2.jsx)(_index.Text, {
333
+ sx: {
334
+ fontWeight: 3,
335
+ textOverflow: 'ellipsis',
336
+ whiteSpace: 'nowrap',
337
+ overflow: 'hidden'
338
+ },
339
+ variant: "itemTitle",
340
+ alignSelf: "center"
341
+ }, item.name), (0, _react2.jsx)(_index.Box, {
342
+ gap: "md"
343
+ }, (0, _react2.jsx)(_index.TextField, {
344
+ label: "label 1"
345
+ }), (0, _react2.jsx)(_index.TextField, {
346
+ label: "label 2"
347
+ }), (0, _react2.jsx)(_index.TextField, {
348
+ label: "label 3"
349
+ })));
350
+ });
298
351
  };
299
352
 
300
- exports.Controlled = Controlled;
353
+ exports.AccordionWithInputs = AccordionWithInputs;
@@ -59,6 +59,18 @@ var getComponentInOverlayPanel = function getComponentInOverlayPanel() {
59
59
  }, (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Link, null, "Header Button"), (0, _react2.jsx)(_index.Link, null, "Second Header Button")), (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Link, null, "Body Button"), (0, _react2.jsx)(_index.Link, null, "Second Body Button"))))));
60
60
  };
61
61
 
62
+ var getComponentWithTextFields = function getComponentWithTextFields() {
63
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
64
+ return (0, _testWrapper.render)((0, _react2.jsx)(_AccordionGridGroup["default"], (0, _extends2["default"])({}, defaultProps, props), (0, _react2.jsx)(_collections.Item, {
65
+ key: "first",
66
+ textValue: "Duplicate"
67
+ }, (0, _react2.jsx)(_index.Text, null, "Header"), (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.TextField, {
68
+ label: "label 1"
69
+ }), (0, _react2.jsx)(_index.TextField, {
70
+ label: "label 2"
71
+ })))));
72
+ };
73
+
62
74
  (0, _testAxe["default"])(getComponent, {
63
75
  // landmark-unique rule conflicts with react-aria role definition
64
76
  rules: {
@@ -249,4 +261,24 @@ test('items do not automatically expand if wrapped in an open OverlayPanel', fun
249
261
 
250
262
  var selectedRow = row[0];
251
263
  expect(selectedRow).not.toHaveAttribute('aria-selected', 'true');
264
+ });
265
+ test('adds focus to inputs', function () {
266
+ getComponentWithTextFields();
267
+
268
+ var firstInput = _testWrapper.screen.getAllByRole('gridcell')[0];
269
+
270
+ var secondInput = _testWrapper.screen.getAllByRole('gridcell')[1];
271
+
272
+ expect(firstInput).not.toHaveFocus();
273
+ expect(secondInput).not.toHaveFocus();
274
+
275
+ _userEvent["default"].click(firstInput);
276
+
277
+ expect(firstInput).toHaveFocus();
278
+ expect(secondInput).not.toHaveFocus();
279
+
280
+ _userEvent["default"].click(secondInput);
281
+
282
+ expect(firstInput).not.toHaveFocus();
283
+ expect(secondInput).toHaveFocus();
252
284
  });
@@ -105,6 +105,7 @@ var AccordionGridItem = function AccordionGridItem(props) {
105
105
  }, (0, _utils.mergeProps)(rowProps, others), {
106
106
  "aria-selected": isSelected,
107
107
  className: classNames,
108
+ variant: "accordion.accordionGridItem",
108
109
  ref: rowRef
109
110
  }), (0, _react2.jsx)(_AccordionGridItemHeader["default"], (0, _extends2["default"])({
110
111
  item: item,
@@ -62,10 +62,16 @@ var AccordionGridItemBody = /*#__PURE__*/(0, _react.forwardRef)(function (props,
62
62
 
63
63
  var _useGridCell = (0, _grid.useGridCell)({
64
64
  node: cellNode,
65
- focusMode: 'child',
65
+ focusMode: 'cell',
66
66
  shouldSelectOnPressUp: true
67
67
  }, state, ref),
68
- gridCellProps = _useGridCell.gridCellProps; // Add the cell's key to the disabled keys array,
68
+ gridCellProps = _useGridCell.gridCellProps;
69
+ /* istanbul ignore next */
70
+
71
+
72
+ gridCellProps.onClick = function (e) {
73
+ e.target.focus();
74
+ }; // Add the cell's key to the disabled keys array,
69
75
  // so that clicking this cell does not close the accordion.
70
76
 
71
77
 
@@ -96,7 +96,7 @@ OverlayPanel.propTypes = {
96
96
  /** Sets the open state of the menu. */
97
97
  isOpen: _propTypes["default"].bool,
98
98
 
99
- /** Sets the open state of the menu. */
99
+ /** Sets the size of the overlay panel. */
100
100
  size: _propTypes["default"].oneOf((0, _values["default"])(_panelSizes.panelSizes)),
101
101
 
102
102
  /** JSX styling that is passed into the component. */
@@ -67,7 +67,14 @@ var _default = {
67
67
  fontWeights: _text.fontWeights,
68
68
  sizes: {
69
69
  buttonHeight: 36,
70
- column: 400
70
+ column: 400,
71
+ container: {
72
+ xs: '400px',
73
+ sm: '550px',
74
+ md: '800px',
75
+ lg: '1200px',
76
+ full: '100%'
77
+ }
71
78
  },
72
79
  shadows: {
73
80
  standard: "0 1px 3px ".concat(_colors.shadow),
@@ -130,6 +130,14 @@ var accordionGridBody = {
130
130
  width: '100%',
131
131
  '&.is-selected': {
132
132
  display: 'flex !important'
133
+ },
134
+ ':focus': {
135
+ outline: 'none'
136
+ }
137
+ };
138
+ var accordionGridItem = {
139
+ ':focus': {
140
+ outline: 'none'
133
141
  }
134
142
  };
135
143
  var _default = {
@@ -139,6 +147,7 @@ var _default = {
139
147
  accordion: accordion,
140
148
  accordionBody: accordionBody,
141
149
  accordionGridHeaderNav: accordionGridHeaderNav,
142
- accordionGridNavItem: accordionGridNavItem
150
+ accordionGridNavItem: accordionGridNavItem,
151
+ accordionGridItem: accordionGridItem
143
152
  };
144
153
  exports["default"] = _default;
@@ -33,7 +33,7 @@ var overlayPanel = {
33
33
  width: '800px'
34
34
  },
35
35
  '&.is-full': {
36
- width: '100%'
36
+ width: 'container.full'
37
37
  },
38
38
  '&.is-open': {
39
39
  display: 'flex !important',
@@ -4,7 +4,7 @@ import React, { useState } from 'react';
4
4
  import { Item } from '@react-stately/collections';
5
5
  import CreateIcon from 'mdi-react/CreateIcon';
6
6
  import MoreVertIcon from 'mdi-react/MoreVertIcon';
7
- import { Box, IconButton, Text, Separator, Link } from '../../index';
7
+ import { Box, IconButton, Text, Separator, Link, TextField } from '../../index';
8
8
  import AccordionGridGroup from './AccordionGridGroup';
9
9
  import { jsx as ___EmotionJSX } from "@emotion/react";
10
10
  var data = [{
@@ -260,4 +260,54 @@ export var Controlled = function Controlled() {
260
260
  }) : null);
261
261
  }))
262
262
  );
263
+ }; // const items = [
264
+ // { id: 1, name: "Aardvark", key: "Aardvark" },
265
+ // { id: 2, name: "Kangaroo", key: "Kangaroo" },
266
+ // { id: 3, name: "Snake", key: "Snake" },
267
+ // { id: 4, name: "Frog", key: "Frog" },
268
+ // { id: 5, name: "Seal", key: "Seal" },
269
+ // { id: 6, name: "Orangutan", key: "Orangutan" },
270
+ // { id: 7, name: "Shark", key: "Shark" }
271
+ // ];
272
+ // const data = [
273
+ // {
274
+ // name: "Client Application Developer",
275
+ // key: "Client"
276
+ // },
277
+ // {
278
+ // name: "Environment Admin",
279
+ // key: "Environment"
280
+ // },
281
+ // {
282
+ // name: "Organization Admin",
283
+ // key: "Organization"
284
+ // }
285
+ // ];
286
+
287
+ export var AccordionWithInputs = function AccordionWithInputs() {
288
+ return ___EmotionJSX(AccordionGridGroup, {
289
+ items: data
290
+ }, function (item) {
291
+ return ___EmotionJSX(Item, {
292
+ key: item.key,
293
+ textValue: item.name
294
+ }, ___EmotionJSX(Text, {
295
+ sx: {
296
+ fontWeight: 3,
297
+ textOverflow: 'ellipsis',
298
+ whiteSpace: 'nowrap',
299
+ overflow: 'hidden'
300
+ },
301
+ variant: "itemTitle",
302
+ alignSelf: "center"
303
+ }, item.name), ___EmotionJSX(Box, {
304
+ gap: "md"
305
+ }, ___EmotionJSX(TextField, {
306
+ label: "label 1"
307
+ }), ___EmotionJSX(TextField, {
308
+ label: "label 2"
309
+ }), ___EmotionJSX(TextField, {
310
+ label: "label 3"
311
+ })));
312
+ });
263
313
  };
@@ -6,7 +6,7 @@ import { Item } from '@react-stately/collections';
6
6
  import userEvent from '@testing-library/user-event';
7
7
  import axeTest from '../../utils/testUtils/testAxe';
8
8
  import { act, fireEvent, render, screen, waitFor } from '../../utils/testUtils/testWrapper';
9
- import { Link, Box, OverlayPanel } from '../../index';
9
+ import { Link, Box, OverlayPanel, TextField, Text } from '../../index';
10
10
  import AccordionGridGroup from '../AccordionGridGroup';
11
11
  import { jsx as ___EmotionJSX } from "@emotion/react";
12
12
  var testId = 'test-accordion';
@@ -44,6 +44,18 @@ var getComponentInOverlayPanel = function getComponentInOverlayPanel() {
44
44
  }, ___EmotionJSX(Box, null, ___EmotionJSX(Link, null, "Header Button"), ___EmotionJSX(Link, null, "Second Header Button")), ___EmotionJSX(Box, null, ___EmotionJSX(Link, null, "Body Button"), ___EmotionJSX(Link, null, "Second Body Button"))))));
45
45
  };
46
46
 
47
+ var getComponentWithTextFields = function getComponentWithTextFields() {
48
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
49
+ return render(___EmotionJSX(AccordionGridGroup, _extends({}, defaultProps, props), ___EmotionJSX(Item, {
50
+ key: "first",
51
+ textValue: "Duplicate"
52
+ }, ___EmotionJSX(Text, null, "Header"), ___EmotionJSX(Box, null, ___EmotionJSX(TextField, {
53
+ label: "label 1"
54
+ }), ___EmotionJSX(TextField, {
55
+ label: "label 2"
56
+ })))));
57
+ };
58
+
47
59
  axeTest(getComponent, {
48
60
  // landmark-unique rule conflicts with react-aria role definition
49
61
  rules: {
@@ -187,4 +199,17 @@ test('items do not automatically expand if wrapped in an open OverlayPanel', fun
187
199
  var row = screen.getAllByRole('row');
188
200
  var selectedRow = row[0];
189
201
  expect(selectedRow).not.toHaveAttribute('aria-selected', 'true');
202
+ });
203
+ test('adds focus to inputs', function () {
204
+ getComponentWithTextFields();
205
+ var firstInput = screen.getAllByRole('gridcell')[0];
206
+ var secondInput = screen.getAllByRole('gridcell')[1];
207
+ expect(firstInput).not.toHaveFocus();
208
+ expect(secondInput).not.toHaveFocus();
209
+ userEvent.click(firstInput);
210
+ expect(firstInput).toHaveFocus();
211
+ expect(secondInput).not.toHaveFocus();
212
+ userEvent.click(secondInput);
213
+ expect(firstInput).not.toHaveFocus();
214
+ expect(secondInput).toHaveFocus();
190
215
  });
@@ -68,6 +68,7 @@ var AccordionGridItem = function AccordionGridItem(props) {
68
68
  }, mergeProps(rowProps, others), {
69
69
  "aria-selected": isSelected,
70
70
  className: classNames,
71
+ variant: "accordion.accordionGridItem",
71
72
  ref: rowRef
72
73
  }), ___EmotionJSX(AccordionGridItemHeader, _extends({
73
74
  item: item,
@@ -27,10 +27,16 @@ var AccordionGridItemBody = /*#__PURE__*/forwardRef(function (props, ref) {
27
27
 
28
28
  var _useGridCell = useGridCell({
29
29
  node: cellNode,
30
- focusMode: 'child',
30
+ focusMode: 'cell',
31
31
  shouldSelectOnPressUp: true
32
32
  }, state, ref),
33
- gridCellProps = _useGridCell.gridCellProps; // Add the cell's key to the disabled keys array,
33
+ gridCellProps = _useGridCell.gridCellProps;
34
+ /* istanbul ignore next */
35
+
36
+
37
+ gridCellProps.onClick = function (e) {
38
+ e.target.focus();
39
+ }; // Add the cell's key to the disabled keys array,
34
40
  // so that clicking this cell does not close the accordion.
35
41
 
36
42
 
@@ -62,7 +62,7 @@ OverlayPanel.propTypes = {
62
62
  /** Sets the open state of the menu. */
63
63
  isOpen: PropTypes.bool,
64
64
 
65
- /** Sets the open state of the menu. */
65
+ /** Sets the size of the overlay panel. */
66
66
  size: PropTypes.oneOf(_Object$values(panelSizes)),
67
67
 
68
68
  /** JSX styling that is passed into the component. */
@@ -35,7 +35,14 @@ export default {
35
35
  fontWeights: fontWeights,
36
36
  sizes: {
37
37
  buttonHeight: 36,
38
- column: 400
38
+ column: 400,
39
+ container: {
40
+ xs: '400px',
41
+ sm: '550px',
42
+ md: '800px',
43
+ lg: '1200px',
44
+ full: '100%'
45
+ }
39
46
  },
40
47
  shadows: {
41
48
  standard: "0 1px 3px ".concat(shadow),
@@ -112,6 +112,14 @@ var accordionGridBody = {
112
112
  width: '100%',
113
113
  '&.is-selected': {
114
114
  display: 'flex !important'
115
+ },
116
+ ':focus': {
117
+ outline: 'none'
118
+ }
119
+ };
120
+ var accordionGridItem = {
121
+ ':focus': {
122
+ outline: 'none'
115
123
  }
116
124
  };
117
125
  export default {
@@ -121,5 +129,6 @@ export default {
121
129
  accordion: accordion,
122
130
  accordionBody: accordionBody,
123
131
  accordionGridHeaderNav: accordionGridHeaderNav,
124
- accordionGridNavItem: accordionGridNavItem
132
+ accordionGridNavItem: accordionGridNavItem,
133
+ accordionGridItem: accordionGridItem
125
134
  };
@@ -24,7 +24,7 @@ var overlayPanel = {
24
24
  width: '800px'
25
25
  },
26
26
  '&.is-full': {
27
- width: '100%'
27
+ width: 'container.full'
28
28
  },
29
29
  '&.is-open': {
30
30
  display: 'flex !important',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pingux/astro",
3
- "version": "1.9.0-alpha.4",
3
+ "version": "1.10.0-alpha.1",
4
4
  "description": "PingUX themeable React component library",
5
5
  "author": "ux-development@pingidentity.com",
6
6
  "license": "Apache-2.0",