@pingux/astro 2.92.1 → 2.93.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.
Files changed (40) hide show
  1. package/lib/cjs/components/ArrayField/ArrayField.js +10 -3
  2. package/lib/cjs/components/ArrayField/ArrayField.stories.d.ts +3 -0
  3. package/lib/cjs/components/ArrayField/ArrayField.stories.js +65 -2
  4. package/lib/cjs/components/ArrayField/ArrayField.test.js +26 -0
  5. package/lib/cjs/components/SelectField/Select.styles.d.ts +2 -0
  6. package/lib/cjs/components/SelectField/SelectField.d.ts +4 -0
  7. package/lib/cjs/components/SelectField/SelectField.js +18 -91
  8. package/lib/cjs/components/SelectField/SelectField.stories.d.ts +50 -0
  9. package/lib/cjs/components/SelectField/SelectField.stories.js +4 -1
  10. package/lib/cjs/components/SelectField/SelectField.test.d.ts +1 -0
  11. package/lib/cjs/components/SelectField/SelectField.test.js +20 -4
  12. package/lib/cjs/components/SelectField/index.d.ts +1 -0
  13. package/lib/cjs/components/SelectFieldBase/SelectFieldBase.d.ts +11 -0
  14. package/lib/cjs/components/SelectFieldBase/SelectFieldBase.js +26 -83
  15. package/lib/cjs/components/SelectFieldBase/SelectFieldBase.test.d.ts +1 -0
  16. package/lib/cjs/components/SelectFieldBase/SelectFieldBase.test.js +10 -4
  17. package/lib/cjs/components/SelectFieldBase/index.d.ts +1 -0
  18. package/lib/cjs/components/TextAreaField/TextAreaField.test.js +10 -9
  19. package/lib/cjs/hooks/useSelectField/useSelectField.d.ts +12 -7
  20. package/lib/cjs/types/TextAreaField.d.ts +2 -13
  21. package/lib/cjs/types/arrayField.d.ts +7 -3
  22. package/lib/cjs/types/selectField.d.ts +23 -0
  23. package/lib/cjs/types/selectField.js +6 -0
  24. package/lib/cjs/types/shared/dom.d.ts +1 -0
  25. package/lib/cjs/types/shared/fieldProps.d.ts +12 -0
  26. package/lib/cjs/types/shared/fieldProps.js +6 -0
  27. package/lib/cjs/types/textField.d.ts +2 -11
  28. package/lib/components/ArrayField/ArrayField.js +10 -3
  29. package/lib/components/ArrayField/ArrayField.stories.js +63 -1
  30. package/lib/components/ArrayField/ArrayField.test.js +26 -0
  31. package/lib/components/SelectField/Select.styles.js +1 -0
  32. package/lib/components/SelectField/SelectField.js +19 -92
  33. package/lib/components/SelectField/SelectField.stories.js +4 -1
  34. package/lib/components/SelectField/SelectField.test.js +20 -4
  35. package/lib/components/SelectFieldBase/SelectFieldBase.js +27 -84
  36. package/lib/components/SelectFieldBase/SelectFieldBase.test.js +10 -4
  37. package/lib/components/TextAreaField/TextAreaField.test.js +10 -9
  38. package/lib/types/selectField.js +1 -0
  39. package/lib/types/shared/fieldProps.js +1 -0
  40. package/package.json +1 -2
@@ -10,18 +10,15 @@ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
10
10
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
11
11
  import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
12
12
  var _excluded = ["columnStyleProps", "defaultText", "fieldContainerProps", "fieldControlInputProps", "fieldControlWrapperProps", "fieldLabelProps", "helperText", "isLoadingInitial", "label", "labelMode", "name", "overlay", "placeholder", "slots", "state", "status", "trigger", "triggerProps", "triggerRef", "valueProps"];
13
- import _Object$values from "@babel/runtime-corejs3/core-js-stable/object/values";
14
13
  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; }
15
14
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
16
15
  import React, { forwardRef, useMemo } from 'react';
17
16
  import { HiddenSelect } from 'react-aria';
18
- import PropTypes from 'prop-types';
19
17
  import { v4 as uuid } from 'uuid';
20
18
  import useGetTheme from '../../hooks/useGetTheme';
21
19
  import { modes } from '../../utils/devUtils/constants/labelModes';
22
20
  import { getPendoID } from '../../utils/devUtils/constants/pendoID';
23
- import { ariaAttributesBasePropTypes, getAriaAttributeProps } from '../../utils/docUtils/ariaAttributes';
24
- import { statusPropTypes } from '../../utils/docUtils/statusProp';
21
+ import { getAriaAttributeProps } from '../../utils/docUtils/ariaAttributes';
25
22
  import Box from '../Box';
26
23
  import Button from '../Button';
27
24
  import FieldHelperText from '../FieldHelperText';
@@ -38,33 +35,34 @@ import Text from '../Text';
38
35
  * React Stately.
39
36
  */
40
37
  import { jsx as ___EmotionJSX } from "@emotion/react";
41
- var SelectFieldBase = /*#__PURE__*/forwardRef(function (_ref, ref) {
42
- var columnStyleProps = _ref.columnStyleProps,
43
- defaultText = _ref.defaultText,
44
- fieldContainerProps = _ref.fieldContainerProps,
45
- fieldControlInputProps = _ref.fieldControlInputProps,
46
- fieldControlWrapperProps = _ref.fieldControlWrapperProps,
47
- fieldLabelProps = _ref.fieldLabelProps,
48
- helperText = _ref.helperText,
49
- isLoadingInitial = _ref.isLoadingInitial,
50
- label = _ref.label,
51
- labelMode = _ref.labelMode,
52
- name = _ref.name,
53
- overlay = _ref.overlay,
54
- placeholder = _ref.placeholder,
55
- slots = _ref.slots,
56
- state = _ref.state,
57
- status = _ref.status,
58
- trigger = _ref.trigger,
59
- triggerProps = _ref.triggerProps,
60
- triggerRef = _ref.triggerRef,
61
- valueProps = _ref.valueProps,
62
- others = _objectWithoutProperties(_ref, _excluded);
38
+ var SelectFieldBase = /*#__PURE__*/forwardRef(function (props, ref) {
39
+ var columnStyleProps = props.columnStyleProps,
40
+ defaultText = props.defaultText,
41
+ fieldContainerProps = props.fieldContainerProps,
42
+ fieldControlInputProps = props.fieldControlInputProps,
43
+ fieldControlWrapperProps = props.fieldControlWrapperProps,
44
+ fieldLabelProps = props.fieldLabelProps,
45
+ helperText = props.helperText,
46
+ isLoadingInitial = props.isLoadingInitial,
47
+ label = props.label,
48
+ labelMode = props.labelMode,
49
+ name = props.name,
50
+ overlay = props.overlay,
51
+ placeholder = props.placeholder,
52
+ slots = props.slots,
53
+ state = props.state,
54
+ status = props.status,
55
+ trigger = props.trigger,
56
+ triggerProps = props.triggerProps,
57
+ triggerRef = props.triggerRef,
58
+ valueProps = props.valueProps,
59
+ others = _objectWithoutProperties(props, _excluded);
63
60
  var _getAriaAttributeProp = getAriaAttributeProps(others),
64
61
  ariaProps = _getAriaAttributeProp.ariaProps;
65
62
  var _useGetTheme = useGetTheme(),
66
63
  icons = _useGetTheme.icons;
67
- var MenuDown = icons.MenuDown;
64
+ var MenuDown = icons.MenuDown,
65
+ MenuUp = icons.MenuUp;
68
66
  var helperTextId = useMemo(function () {
69
67
  return uuid();
70
68
  }, []);
@@ -88,14 +86,11 @@ var SelectFieldBase = /*#__PURE__*/forwardRef(function (_ref, ref) {
88
86
  "aria-hidden": "true",
89
87
  variant: "forms.select.arrow"
90
88
  }, ___EmotionJSX(Icon, {
91
- icon: MenuDown,
89
+ icon: state.isOpen ? MenuUp : MenuDown,
92
90
  title: {
93
91
  name: 'Menu down'
94
92
  },
95
- size: "md",
96
- sx: state.isOpen ? {
97
- transform: 'rotate(180deg)'
98
- } : null
93
+ size: "md"
99
94
  }))), slots === null || slots === void 0 ? void 0 : slots.inContainer);
100
95
  return ___EmotionJSX(Box, _extends({
101
96
  ref: ref,
@@ -113,56 +108,4 @@ var SelectFieldBase = /*#__PURE__*/forwardRef(function (_ref, ref) {
113
108
  id: helperTextId
114
109
  }, helperText));
115
110
  });
116
- SelectFieldBase.propTypes = _objectSpread(_objectSpread({
117
- /** Default text rendered if no option is selected. Deprecated. */
118
- defaultText: PropTypes.string,
119
- /** Text rendered below the input. */
120
- helperText: PropTypes.node,
121
- /** The label for the select element. */
122
- label: PropTypes.node,
123
- /** Determines the textarea status indicator and helper text styling. Eg. float. */
124
- labelMode: PropTypes.oneOf(_Object$values(modes)),
125
- /** The name for the select element, used when submitting a form. */
126
- name: PropTypes.string,
127
- /** Temporary text that occupies the text input when it is empty. */
128
- placeholder: PropTypes.string,
129
- /** Determines whether to use column styles. */
130
- columnStyleProps: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({})]),
131
- /** Determines props that applied to root container. */
132
- fieldContainerProps: PropTypes.shape({
133
- sx: PropTypes.shape({})
134
- }),
135
- /** Determines props that applied to control field. */
136
- fieldControlInputProps: PropTypes.shape({
137
- className: PropTypes.string
138
- }),
139
- /** Determines props that applied to label of field. */
140
- fieldLabelProps: PropTypes.shape({}),
141
- /** Determines whether elements are loading and whether they haven't already appeared in list. */
142
- isLoadingInitial: PropTypes.bool,
143
- /** Container for list with options */
144
- overlay: PropTypes.node,
145
- /** State returned by useSelectState */
146
- state: PropTypes.shape({
147
- isOpen: PropTypes.bool,
148
- selectedItem: PropTypes.shape({
149
- rendered: PropTypes.node
150
- })
151
- }),
152
- /** Provides a way to insert markup in specified places. */
153
- slots: PropTypes.shape({
154
- /** The given node will be inserted before the text in field container. */
155
- leftOfData: PropTypes.node,
156
- /** The given node will be inserted into the field container. */
157
- inContainer: PropTypes.node
158
- }),
159
- /** Control for interaction with SelectField */
160
- trigger: PropTypes.node,
161
- /** Props for the popup trigger element. */
162
- triggerProps: PropTypes.shape({}),
163
- /** Determines ref that applied to control */
164
- triggerRef: PropTypes.shape({}),
165
- /** Props for the element representing the selected value. */
166
- valueProps: PropTypes.shape({})
167
- }, statusPropTypes), ariaAttributesBasePropTypes);
168
111
  export default SelectFieldBase;
@@ -74,7 +74,8 @@ beforeAll(function () {
74
74
  return 1024;
75
75
  });
76
76
  jest.spyOn(window, 'requestAnimationFrame').mockImplementation(function (cb) {
77
- return cb();
77
+ cb(0);
78
+ return 0;
78
79
  });
79
80
  jest.useFakeTimers();
80
81
  });
@@ -158,7 +159,9 @@ test('clicking on the visible button opens the popuplist', function () {
158
159
  var button = screen.getByRole('button');
159
160
  expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
160
161
  expect(screen.queryByRole('option')).not.toBeInTheDocument();
161
- userEvent.click(button);
162
+ if (button) {
163
+ userEvent.click(button);
164
+ }
162
165
  expect(screen.queryByRole('listbox')).toBeInTheDocument();
163
166
  expect(screen.queryAllByRole('option')).toHaveLength(3);
164
167
  });
@@ -174,7 +177,7 @@ test('clicking on an option then renders its text in the button', function () {
174
177
  userEvent.click(button);
175
178
  var options = screen.queryAllByRole('option');
176
179
  userEvent.click(options[0]);
177
- expect(button).toHaveTextContent(options[0].textContent);
180
+ expect(button).toHaveTextContent(items[0].name);
178
181
  });
179
182
  test('hovering an option applies correct styles', function () {
180
183
  getComponent();
@@ -299,7 +302,10 @@ test('two listbox can not be open at the same time', function () {
299
302
  test('Item accepts a data-id and the data-id can be found in the DOM', function () {
300
303
  getComponent();
301
304
  var button = screen.queryByRole('button');
302
- userEvent.click(button);
305
+ expect(button).toBeInTheDocument();
306
+ if (button) {
307
+ userEvent.click(button);
308
+ }
303
309
  var options = screen.queryAllByRole('option');
304
310
  expect(options).toHaveLength(items.length);
305
311
  expect(options[0]).toHaveAttribute('data-id', items[0].name);
@@ -15,6 +15,7 @@ var defaultProps = {
15
15
  'data-testid': testId,
16
16
  label: 'testLabel'
17
17
  };
18
+ var label = defaultProps.label;
18
19
  var getComponent = function getComponent() {
19
20
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
20
21
  return render(___EmotionJSX(TextAreaField, _extends({}, defaultProps, props)));
@@ -31,12 +32,12 @@ test('disabled prop disables input', function () {
31
32
  getComponent({
32
33
  isDisabled: true
33
34
  });
34
- var textArea = screen.getByLabelText(defaultProps.label);
35
+ var textArea = screen.getByLabelText(label);
35
36
  expect(textArea).toBeDisabled();
36
37
  });
37
38
  test('text area field has focus', function () {
38
39
  getComponent();
39
- var textArea = screen.getByLabelText(defaultProps.label);
40
+ var textArea = screen.getByLabelText(label);
40
41
  userEvent.tab();
41
42
  expect(textArea).toHaveFocus();
42
43
  expect(textArea).toHaveClass('is-focused');
@@ -45,8 +46,8 @@ test('disabled prop disables text field label', function () {
45
46
  getComponent({
46
47
  isDisabled: true
47
48
  });
48
- var label = screen.getByText(defaultProps.label);
49
- expect(label).toHaveClass('is-disabled');
49
+ var labelDom = screen.getByText(label);
50
+ expect(labelDom).toHaveClass('is-disabled');
50
51
  });
51
52
  test('text area field with helper text', function () {
52
53
  var helperText = 'helper text';
@@ -63,8 +64,8 @@ test('float label prop adds float label class', function () {
63
64
  helperText: helperText,
64
65
  labelMode: labelMode
65
66
  });
66
- var label = screen.getByText(defaultProps.label);
67
- expect(label).toHaveClass('is-float-label');
67
+ var labelDom = screen.getByText(label);
68
+ expect(labelDom).toHaveClass('is-float-label');
68
69
  });
69
70
  test('mousemove calls resize event', function () {
70
71
  var labelMode = 'float';
@@ -74,7 +75,7 @@ test('mousemove calls resize event', function () {
74
75
  labelMode: labelMode,
75
76
  resizeCallback: mockfunction
76
77
  });
77
- var textArea = screen.getByLabelText(defaultProps.label);
78
+ var textArea = screen.getByLabelText(label);
78
79
  fireEvent.mouseMove(textArea);
79
80
  fireEvent.mouseMove(textArea);
80
81
  expect(mockfunction).toHaveBeenCalledTimes(2);
@@ -89,7 +90,7 @@ test('label will receive gridRow attribute if it will be higher than textarea',
89
90
  }
90
91
  });
91
92
  getComponent();
92
- expect(screen.getByText(defaultProps.label)).toHaveStyle('grid-row: 1/5');
93
+ expect(screen.getByText(label)).toHaveStyle('grid-row: 1/5');
93
94
  _Object$defineProperty(HTMLElement.prototype, 'offsetHeight', originalOffsetHeight);
94
95
  });
95
96
  test('form wrapper will have default max label column width when no custom width set', function () {
@@ -105,7 +106,7 @@ test('passing read only prop applys the is-read-only class to the textarea', fun
105
106
  getComponent({
106
107
  isReadOnly: isReadOnly
107
108
  });
108
- var textArea = screen.getByLabelText(defaultProps.label);
109
+ var textArea = screen.getByLabelText(label);
109
110
  expect(textArea).toHaveClass('is-read-only');
110
111
  });
111
112
  test('form wrapper will have a max label column width when custom width set', function () {
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pingux/astro",
3
- "version": "2.92.1",
3
+ "version": "2.93.0-alpha.1",
4
4
  "description": "React component library for Ping Identity's design system",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,7 +17,6 @@
17
17
  "lib"
18
18
  ],
19
19
  "scripts": {
20
- "install-react-version": "cd ../../ && yarn run install-react-18 && yarn && cd packages/astro && yarn",
21
20
  "build": "rm -rf lib && yarn run build:types && yarn run build:cjs && yarn run build:esm && cp README.md ./lib && cp MIGRATION.md ./lib",
22
21
  "build-ci": "yarn build",
23
22
  "append-version": "node ../../append_current_version.js",