@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.
- package/lib/cjs/components/ArrayField/ArrayField.js +10 -3
- package/lib/cjs/components/ArrayField/ArrayField.stories.d.ts +3 -0
- package/lib/cjs/components/ArrayField/ArrayField.stories.js +65 -2
- package/lib/cjs/components/ArrayField/ArrayField.test.js +26 -0
- package/lib/cjs/components/SelectField/Select.styles.d.ts +2 -0
- package/lib/cjs/components/SelectField/SelectField.d.ts +4 -0
- package/lib/cjs/components/SelectField/SelectField.js +18 -91
- package/lib/cjs/components/SelectField/SelectField.stories.d.ts +50 -0
- package/lib/cjs/components/SelectField/SelectField.stories.js +4 -1
- package/lib/cjs/components/SelectField/SelectField.test.d.ts +1 -0
- package/lib/cjs/components/SelectField/SelectField.test.js +20 -4
- package/lib/cjs/components/SelectField/index.d.ts +1 -0
- package/lib/cjs/components/SelectFieldBase/SelectFieldBase.d.ts +11 -0
- package/lib/cjs/components/SelectFieldBase/SelectFieldBase.js +26 -83
- package/lib/cjs/components/SelectFieldBase/SelectFieldBase.test.d.ts +1 -0
- package/lib/cjs/components/SelectFieldBase/SelectFieldBase.test.js +10 -4
- package/lib/cjs/components/SelectFieldBase/index.d.ts +1 -0
- package/lib/cjs/components/TextAreaField/TextAreaField.test.js +10 -9
- package/lib/cjs/hooks/useSelectField/useSelectField.d.ts +12 -7
- package/lib/cjs/types/TextAreaField.d.ts +2 -13
- package/lib/cjs/types/arrayField.d.ts +7 -3
- package/lib/cjs/types/selectField.d.ts +23 -0
- package/lib/cjs/types/selectField.js +6 -0
- package/lib/cjs/types/shared/dom.d.ts +1 -0
- package/lib/cjs/types/shared/fieldProps.d.ts +12 -0
- package/lib/cjs/types/shared/fieldProps.js +6 -0
- package/lib/cjs/types/textField.d.ts +2 -11
- package/lib/components/ArrayField/ArrayField.js +10 -3
- package/lib/components/ArrayField/ArrayField.stories.js +63 -1
- package/lib/components/ArrayField/ArrayField.test.js +26 -0
- package/lib/components/SelectField/Select.styles.js +1 -0
- package/lib/components/SelectField/SelectField.js +19 -92
- package/lib/components/SelectField/SelectField.stories.js +4 -1
- package/lib/components/SelectField/SelectField.test.js +20 -4
- package/lib/components/SelectFieldBase/SelectFieldBase.js +27 -84
- package/lib/components/SelectFieldBase/SelectFieldBase.test.js +10 -4
- package/lib/components/TextAreaField/TextAreaField.test.js +10 -9
- package/lib/types/selectField.js +1 -0
- package/lib/types/shared/fieldProps.js +1 -0
- 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 {
|
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 (
|
42
|
-
var columnStyleProps =
|
43
|
-
defaultText =
|
44
|
-
fieldContainerProps =
|
45
|
-
fieldControlInputProps =
|
46
|
-
fieldControlWrapperProps =
|
47
|
-
fieldLabelProps =
|
48
|
-
helperText =
|
49
|
-
isLoadingInitial =
|
50
|
-
label =
|
51
|
-
labelMode =
|
52
|
-
name =
|
53
|
-
overlay =
|
54
|
-
placeholder =
|
55
|
-
slots =
|
56
|
-
state =
|
57
|
-
status =
|
58
|
-
trigger =
|
59
|
-
triggerProps =
|
60
|
-
triggerRef =
|
61
|
-
valueProps =
|
62
|
-
others = _objectWithoutProperties(
|
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
|
-
|
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
|
-
|
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(
|
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
|
-
|
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(
|
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(
|
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
|
49
|
-
expect(
|
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
|
67
|
-
expect(
|
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(
|
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(
|
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(
|
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.
|
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",
|