@pingux/astro 1.2.1 → 1.3.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.
- package/CHANGELOG.md +21 -0
- package/lib/cjs/components/AccordionGridGroup/AccordionGridGroup.js +8 -2
- package/lib/cjs/components/AccordionGridItem/AccordionGridItemBody.js +5 -2
- package/lib/cjs/components/AccordionGridItem/AccordionGridItemHeader.js +8 -3
- package/lib/cjs/components/ArrayField/ArrayField.js +213 -0
- package/lib/cjs/components/ArrayField/ArrayField.stories.js +223 -0
- package/lib/cjs/components/ArrayField/ArrayField.test.js +208 -0
- package/lib/cjs/components/ArrayField/ArrayFieldDeleteButton.js +61 -0
- package/lib/cjs/components/ArrayField/index.js +27 -0
- package/lib/cjs/components/CodeView/CodeView.js +3 -3
- package/lib/cjs/components/ListView/ListView.stories.js +3 -0
- package/lib/cjs/components/Loader/Loader.stories.js +3 -3
- package/lib/cjs/components/Modal/Modal.js +3 -0
- package/lib/cjs/components/Modal/Modal.stories.js +11 -66
- package/lib/cjs/components/NavBar/NavBar.js +30 -4
- package/lib/cjs/components/NavBar/NavBar.stories.js +70 -463
- package/lib/cjs/components/NavBar/NavBar.test.js +51 -1
- package/lib/cjs/components/NavBarSection/NavBarItem.js +137 -0
- package/lib/cjs/components/NavBarSection/NavBarItemButton.js +96 -0
- package/lib/cjs/components/NavBarSection/NavBarItemHeader.js +1 -1
- package/lib/cjs/components/NavBarSection/NavBarItemLink.js +98 -0
- package/lib/cjs/components/NavBarSection/NavBarSection.js +10 -8
- package/lib/cjs/components/NavBarSection/index.js +28 -1
- package/lib/cjs/components/SelectFieldBase/SelectFieldBase.js +8 -1
- package/lib/cjs/context/NavBarContext/index.js +20 -0
- package/lib/cjs/hooks/index.js +9 -0
- package/lib/cjs/hooks/useNavBarPress/index.js +18 -0
- package/lib/cjs/hooks/useNavBarPress/useNavBarPress.js +38 -0
- package/lib/cjs/hooks/useNavBarPress/useNavBarPress.test.js +42 -0
- package/lib/cjs/index.js +80 -58
- package/lib/cjs/styles/variants/accordion.js +39 -7
- package/lib/cjs/styles/variants/boxes.js +1 -24
- package/lib/cjs/styles/variants/buttons.js +7 -1
- package/lib/cjs/styles/variants/codeView.js +91 -0
- package/lib/cjs/styles/variants/navBar.js +68 -0
- package/lib/cjs/styles/variants/separator.js +2 -1
- package/lib/cjs/styles/variants/text.js +3 -1
- package/lib/cjs/styles/variants/variants.js +3 -0
- package/lib/components/AccordionGridGroup/AccordionGridGroup.js +7 -2
- package/lib/components/AccordionGridItem/AccordionGridItemBody.js +4 -2
- package/lib/components/AccordionGridItem/AccordionGridItemHeader.js +9 -4
- package/lib/components/ArrayField/ArrayField.js +179 -0
- package/lib/components/ArrayField/ArrayField.stories.js +196 -0
- package/lib/components/ArrayField/ArrayField.test.js +185 -0
- package/lib/components/ArrayField/ArrayFieldDeleteButton.js +43 -0
- package/lib/components/ArrayField/index.js +2 -0
- package/lib/components/CodeView/CodeView.js +2 -2
- package/lib/components/ListView/ListView.stories.js +3 -0
- package/lib/components/Loader/Loader.stories.js +1 -1
- package/lib/components/Modal/Modal.js +4 -1
- package/lib/components/Modal/Modal.stories.js +10 -59
- package/lib/components/NavBar/NavBar.js +25 -4
- package/lib/components/NavBar/NavBar.stories.js +71 -462
- package/lib/components/NavBar/NavBar.test.js +39 -2
- package/lib/components/NavBarSection/NavBarItem.js +111 -0
- package/lib/components/NavBarSection/NavBarItemButton.js +69 -0
- package/lib/components/NavBarSection/NavBarItemHeader.js +1 -1
- package/lib/components/NavBarSection/NavBarItemLink.js +71 -0
- package/lib/components/NavBarSection/NavBarSection.js +9 -8
- package/lib/components/NavBarSection/index.js +4 -1
- package/lib/components/SelectFieldBase/SelectFieldBase.js +8 -1
- package/lib/context/NavBarContext/index.js +5 -0
- package/lib/hooks/index.js +1 -0
- package/lib/hooks/useNavBarPress/index.js +1 -0
- package/lib/hooks/useNavBarPress/useNavBarPress.js +27 -0
- package/lib/hooks/useNavBarPress/useNavBarPress.test.js +36 -0
- package/lib/index.js +2 -0
- package/lib/styles/variants/accordion.js +26 -5
- package/lib/styles/variants/boxes.js +1 -24
- package/lib/styles/variants/buttons.js +7 -1
- package/lib/styles/variants/codeView.js +91 -0
- package/lib/styles/variants/navBar.js +46 -0
- package/lib/styles/variants/separator.js +2 -1
- package/lib/styles/variants/text.js +3 -1
- package/lib/styles/variants/variants.js +2 -0
- package/package.json +3 -1
- package/lib/cjs/recipes/ArrayField.stories.js +0 -169
- package/lib/recipes/ArrayField.stories.js +0 -134
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,27 @@
|
|
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.3.0](https://gitlab.corp.pingidentity.com/ux/pingux/compare/@pingux/astro@1.2.1...@pingux/astro@1.3.0) (2022-02-23)
|
7
|
+
|
8
|
+
|
9
|
+
### Bug Fixes
|
10
|
+
|
11
|
+
* [UIP-4969] Update astro tab font size ([7af5410](https://gitlab.corp.pingidentity.com/ux/pingux/commit/7af54107825154d795ecb97143fc24364c9b225c))
|
12
|
+
* [UIP-5146] Loader Story Update - Change "Loader With Most Common Color" to "Custom Color" ([78fbdd9](https://gitlab.corp.pingidentity.com/ux/pingux/commit/78fbdd938ce5b0a3f87f7821599caf3967c3389b))
|
13
|
+
* [UIP-5150] Modal Storybook Improvements ([4a9bd28](https://gitlab.corp.pingidentity.com/ux/pingux/commit/4a9bd28aa9f804cd51cc3a89fd0467ddfd3a2327))
|
14
|
+
* [UIP-5225] Add accessible theme for CodeView using JS styles ([6659da6](https://gitlab.corp.pingidentity.com/ux/pingux/commit/6659da6743dd68886750d3c58465b36ad6b551c0))
|
15
|
+
* [UIP-5281] NavBar improvements and design review changes ([f8bd0ac](https://gitlab.corp.pingidentity.com/ux/pingux/commit/f8bd0acd6bcedfc92ac7a6615e4b79b19d1fbe9e))
|
16
|
+
|
17
|
+
|
18
|
+
### Features
|
19
|
+
|
20
|
+
* [UIP-4607] Array field component ([8cca040](https://gitlab.corp.pingidentity.com/ux/pingux/commit/8cca04033e330af5838b38f45e441464900db810))
|
21
|
+
* [UIP-5228] Add Storysource and Console addons to Astro ([a96de8c](https://gitlab.corp.pingidentity.com/ux/pingux/commit/a96de8cf5c557e74b400ada232caf58974e927cb))
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
6
27
|
## [1.2.1](https://gitlab.corp.pingidentity.com/ux/pingux/compare/@pingux/astro@1.2.0...@pingux/astro@1.2.1) (2022-02-16)
|
7
28
|
|
8
29
|
|
@@ -42,6 +42,8 @@ var _grid = require("@react-stately/grid");
|
|
42
42
|
|
43
43
|
var _grid2 = require("@react-aria/grid");
|
44
44
|
|
45
|
+
var _utils = require("@react-aria/utils");
|
46
|
+
|
45
47
|
var _list = require("@react-stately/list");
|
46
48
|
|
47
49
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
@@ -82,7 +84,8 @@ exports.collectionTypes = collectionTypes;
|
|
82
84
|
var AccordionGridGroup = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
83
85
|
var _context2;
|
84
86
|
|
85
|
-
var disabledKeys = props.disabledKeys
|
87
|
+
var disabledKeys = props.disabledKeys,
|
88
|
+
containerProps = props.containerProps;
|
86
89
|
var accordionGridRef = (0, _react.useRef)();
|
87
90
|
/* istanbul ignore next */
|
88
91
|
|
@@ -163,7 +166,7 @@ var AccordionGridGroup = /*#__PURE__*/(0, _react.forwardRef)(function (props, re
|
|
163
166
|
state: state,
|
164
167
|
keyboardDelegate: keyboardDelegate
|
165
168
|
}
|
166
|
-
}, (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({}, gridProps, {
|
169
|
+
}, (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({}, (0, _utils.mergeProps)(gridProps, containerProps), {
|
167
170
|
ref: accordionGridRef
|
168
171
|
}), (0, _map["default"])(_context2 = (0, _from["default"])(state.collection)).call(_context2, function (item) {
|
169
172
|
return (0, _react2.jsx)(_AccordionGridItem["default"], (0, _extends2["default"])({
|
@@ -206,6 +209,9 @@ AccordionGridGroup.propTypes = {
|
|
206
209
|
/** The element's unique identifier. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id). */
|
207
210
|
id: _propTypes["default"].string,
|
208
211
|
|
212
|
+
/** Props object that is spread directly into the root (top-level) element. */
|
213
|
+
containerProps: _propTypes["default"].shape({}),
|
214
|
+
|
209
215
|
/** Defines a string value that labels the current element. */
|
210
216
|
'aria-label': _propTypes["default"].string,
|
211
217
|
|
@@ -16,6 +16,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/e
|
|
16
16
|
|
17
17
|
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
18
18
|
|
19
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
20
|
+
|
19
21
|
var _react = _interopRequireWildcard(require("react"));
|
20
22
|
|
21
23
|
var _utils = require("@react-aria/utils");
|
@@ -40,7 +42,8 @@ var AccordionGridItemBody = /*#__PURE__*/(0, _react.forwardRef)(function (props,
|
|
40
42
|
var item = props.item,
|
41
43
|
className = props.className,
|
42
44
|
children = props.children,
|
43
|
-
isSelected = props.isSelected
|
45
|
+
isSelected = props.isSelected,
|
46
|
+
others = (0, _objectWithoutProperties2["default"])(props, ["item", "className", "children", "isSelected"]);
|
44
47
|
|
45
48
|
var _useAccordionGridCont = (0, _AccordionGridContext.useAccordionGridContext)(),
|
46
49
|
state = _useAccordionGridCont.state;
|
@@ -78,7 +81,7 @@ var AccordionGridItemBody = /*#__PURE__*/(0, _react.forwardRef)(function (props,
|
|
78
81
|
isSelected: isSelected,
|
79
82
|
className: classNames,
|
80
83
|
"aria-label": ariaLabel
|
81
|
-
}), children);
|
84
|
+
}, others), children);
|
82
85
|
});
|
83
86
|
AccordionGridItemBody.propTypes = {
|
84
87
|
isSelected: _propTypes["default"].bool,
|
@@ -68,13 +68,18 @@ var AccordionGridItemHeader = /*#__PURE__*/(0, _react.forwardRef)(function (prop
|
|
68
68
|
node: cellNode,
|
69
69
|
focusMode: 'cell'
|
70
70
|
}, state, cellRef),
|
71
|
-
gridCellProps = _useGridCell.gridCellProps
|
72
|
-
isPressed = _useGridCell.isPressed;
|
71
|
+
gridCellProps = _useGridCell.gridCellProps;
|
73
72
|
|
74
73
|
var _useHover = (0, _interactions.useHover)({}),
|
75
74
|
hoverProps = _useHover.hoverProps,
|
76
75
|
isHovered = _useHover.isHovered;
|
77
76
|
|
77
|
+
var _usePress = (0, _interactions.usePress)({
|
78
|
+
ref: cellRef
|
79
|
+
}),
|
80
|
+
pressProps = _usePress.pressProps,
|
81
|
+
isPressed = _usePress.isPressed;
|
82
|
+
|
78
83
|
var _useFocusRing = (0, _focus.useFocusRing)({
|
79
84
|
within: true
|
80
85
|
}),
|
@@ -84,7 +89,7 @@ var AccordionGridItemHeader = /*#__PURE__*/(0, _react.forwardRef)(function (prop
|
|
84
89
|
focusProps = _useFocusRing2.focusProps,
|
85
90
|
isFocusVisible = _useFocusRing2.isFocusVisible;
|
86
91
|
|
87
|
-
var mergedProps = (0, _utils.mergeProps)(gridCellProps, hoverProps, focusWithinProps, focusProps);
|
92
|
+
var mergedProps = (0, _utils.mergeProps)(pressProps, gridCellProps, hoverProps, focusWithinProps, focusProps);
|
88
93
|
|
89
94
|
var _useStatusClasses = (0, _hooks.useStatusClasses)(className, {
|
90
95
|
isPressed: isPressed,
|
@@ -0,0 +1,213 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard");
|
4
|
+
|
5
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
6
|
+
|
7
|
+
var _Object$defineProperty2 = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
8
|
+
|
9
|
+
_Object$defineProperty2(exports, "__esModule", {
|
10
|
+
value: true
|
11
|
+
});
|
12
|
+
|
13
|
+
exports["default"] = void 0;
|
14
|
+
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-property"));
|
16
|
+
|
17
|
+
var _defineProperties = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-properties"));
|
18
|
+
|
19
|
+
var _getOwnPropertyDescriptors = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors"));
|
20
|
+
|
21
|
+
var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
|
22
|
+
|
23
|
+
var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor"));
|
24
|
+
|
25
|
+
var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols"));
|
26
|
+
|
27
|
+
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
|
28
|
+
|
29
|
+
var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/values"));
|
30
|
+
|
31
|
+
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
32
|
+
|
33
|
+
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
34
|
+
|
35
|
+
var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
36
|
+
|
37
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
38
|
+
|
39
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
40
|
+
|
41
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
42
|
+
|
43
|
+
var _react = _interopRequireWildcard(require("react"));
|
44
|
+
|
45
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
46
|
+
|
47
|
+
var _uuid = require("uuid");
|
48
|
+
|
49
|
+
var _Box = _interopRequireDefault(require("../Box"));
|
50
|
+
|
51
|
+
var _Button = _interopRequireDefault(require("../Button"));
|
52
|
+
|
53
|
+
var _FieldHelperText = _interopRequireDefault(require("../FieldHelperText"));
|
54
|
+
|
55
|
+
var _Text = _interopRequireDefault(require("../Text"));
|
56
|
+
|
57
|
+
var _statuses = _interopRequireDefault(require("../../utils/devUtils/constants/statuses"));
|
58
|
+
|
59
|
+
var _react2 = require("@emotion/react");
|
60
|
+
|
61
|
+
function ownKeys(object, enumerableOnly) { var keys = (0, _keys["default"])(object); if (_getOwnPropertySymbols["default"]) { var symbols = (0, _getOwnPropertySymbols["default"])(object); if (enumerableOnly) symbols = (0, _filter["default"])(symbols).call(symbols, function (sym) { return (0, _getOwnPropertyDescriptor["default"])(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
62
|
+
|
63
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context3; (0, _forEach["default"])(_context3 = ownKeys(Object(source), true)).call(_context3, function (key) { (0, _defineProperty3["default"])(target, key, source[key]); }); } else if (_getOwnPropertyDescriptors["default"]) { (0, _defineProperties["default"])(target, (0, _getOwnPropertyDescriptors["default"])(source)); } else { var _context4; (0, _forEach["default"])(_context4 = ownKeys(Object(source))).call(_context4, function (key) { (0, _defineProperty2["default"])(target, key, (0, _getOwnPropertyDescriptor["default"])(source, key)); }); } } return target; }
|
64
|
+
|
65
|
+
var ArrayField = function ArrayField(_ref) {
|
66
|
+
var _context2;
|
67
|
+
|
68
|
+
var addButtonLabel = _ref.addButtonLabel,
|
69
|
+
defaultValue = _ref.defaultValue,
|
70
|
+
value = _ref.value,
|
71
|
+
label = _ref.label,
|
72
|
+
helperText = _ref.helperText,
|
73
|
+
status = _ref.status,
|
74
|
+
onAdd = _ref.onAdd,
|
75
|
+
onChange = _ref.onChange,
|
76
|
+
onDelete = _ref.onDelete,
|
77
|
+
renderField = _ref.renderField,
|
78
|
+
others = (0, _objectWithoutProperties2["default"])(_ref, ["addButtonLabel", "defaultValue", "value", "label", "helperText", "status", "onAdd", "onChange", "onDelete", "renderField"]);
|
79
|
+
var isControlled = value !== undefined;
|
80
|
+
var createEmptyField = (0, _react.useCallback)(function () {
|
81
|
+
return {
|
82
|
+
id: (0, _uuid.v4)(),
|
83
|
+
value: ''
|
84
|
+
};
|
85
|
+
}, []);
|
86
|
+
|
87
|
+
var _useState = (0, _react.useState)(defaultValue || [createEmptyField()]),
|
88
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
89
|
+
fieldValues = _useState2[0],
|
90
|
+
setFieldValues = _useState2[1];
|
91
|
+
|
92
|
+
var mapArrayFieldWithNewValue = (0, _react.useCallback)(function (arrValues, newValue, fieldId) {
|
93
|
+
return (0, _map["default"])(arrValues).call(arrValues, function (fieldValue) {
|
94
|
+
if (fieldValue.id === fieldId) {
|
95
|
+
return _objectSpread(_objectSpread({}, fieldValue), {}, {
|
96
|
+
value: newValue
|
97
|
+
});
|
98
|
+
}
|
99
|
+
|
100
|
+
return fieldValue;
|
101
|
+
});
|
102
|
+
}, []);
|
103
|
+
var onFieldValueChange = (0, _react.useCallback)(function (event, fieldId) {
|
104
|
+
var tempValue = event; // Checks if value receieved is a key or event
|
105
|
+
|
106
|
+
if (typeof event !== 'string') {
|
107
|
+
tempValue = event.target.value;
|
108
|
+
}
|
109
|
+
|
110
|
+
if (isControlled) {
|
111
|
+
onChange(mapArrayFieldWithNewValue(value, tempValue, fieldId));
|
112
|
+
} else {
|
113
|
+
setFieldValues(function (oldValues) {
|
114
|
+
return mapArrayFieldWithNewValue(oldValues, tempValue, fieldId);
|
115
|
+
});
|
116
|
+
}
|
117
|
+
}, [isControlled, mapArrayFieldWithNewValue, onChange, value]);
|
118
|
+
var onFieldDelete = (0, _react.useCallback)(function (fieldId) {
|
119
|
+
if (isControlled) {
|
120
|
+
onDelete(fieldId);
|
121
|
+
} else {
|
122
|
+
setFieldValues(function (oldValues) {
|
123
|
+
return (0, _filter["default"])(oldValues).call(oldValues, function (_ref2) {
|
124
|
+
var id = _ref2.id;
|
125
|
+
return id !== fieldId;
|
126
|
+
});
|
127
|
+
});
|
128
|
+
}
|
129
|
+
}, [isControlled, onDelete]);
|
130
|
+
var onFieldAdd = (0, _react.useCallback)(function () {
|
131
|
+
if (onAdd) {
|
132
|
+
return onAdd();
|
133
|
+
}
|
134
|
+
|
135
|
+
return setFieldValues(function (oldValues) {
|
136
|
+
var _context;
|
137
|
+
|
138
|
+
return (0, _concat["default"])(_context = []).call(_context, oldValues, [createEmptyField()]);
|
139
|
+
});
|
140
|
+
}, [createEmptyField, onAdd]);
|
141
|
+
return (0, _react2.jsx)(_Box["default"], others, (0, _react2.jsx)(_Text["default"], {
|
142
|
+
variant: "label"
|
143
|
+
}, label), (0, _react2.jsx)(_Box["default"], {
|
144
|
+
as: "ul",
|
145
|
+
pl: "0"
|
146
|
+
}, (0, _map["default"])(_context2 = value || fieldValues).call(_context2, function (_ref3) {
|
147
|
+
var id = _ref3.id,
|
148
|
+
onComponentRender = _ref3.onComponentRender,
|
149
|
+
fieldValue = _ref3.fieldValue,
|
150
|
+
otherFieldProps = (0, _objectWithoutProperties2["default"])(_ref3, ["id", "onComponentRender", "fieldValue"]);
|
151
|
+
var isDisabled = (value || fieldValues).length === 1;
|
152
|
+
return (0, _react2.jsx)(_Box["default"], {
|
153
|
+
as: "li",
|
154
|
+
mb: "xs",
|
155
|
+
key: id
|
156
|
+
}, onComponentRender ? onComponentRender(id, fieldValue, onFieldValueChange, onFieldDelete, isDisabled, otherFieldProps) : renderField(id, fieldValue, onFieldValueChange, onFieldDelete, isDisabled, otherFieldProps));
|
157
|
+
})), helperText && (0, _react2.jsx)(_FieldHelperText["default"], {
|
158
|
+
status: status
|
159
|
+
}, helperText), (0, _react2.jsx)(_Button["default"], {
|
160
|
+
"aria-label": "Add field",
|
161
|
+
variant: "text",
|
162
|
+
onPress: onFieldAdd,
|
163
|
+
sx: {
|
164
|
+
width: 'fit-content'
|
165
|
+
}
|
166
|
+
}, (0, _react2.jsx)(_Text["default"], {
|
167
|
+
variant: "label",
|
168
|
+
color: "active"
|
169
|
+
}, addButtonLabel)));
|
170
|
+
};
|
171
|
+
|
172
|
+
ArrayField.propTypes = {
|
173
|
+
/** Label for add button */
|
174
|
+
addButtonLabel: _propTypes["default"].string,
|
175
|
+
|
176
|
+
/** The default value for the array input field (uncontrolled). */
|
177
|
+
defaultValue: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
178
|
+
id: _propTypes["default"].string,
|
179
|
+
value: _propTypes["default"].string
|
180
|
+
})),
|
181
|
+
|
182
|
+
/** The default value of the array input field (controlled). */
|
183
|
+
value: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
184
|
+
id: _propTypes["default"].string,
|
185
|
+
value: _propTypes["default"].string
|
186
|
+
})),
|
187
|
+
|
188
|
+
/** The rendered label for the field. */
|
189
|
+
label: _propTypes["default"].node,
|
190
|
+
|
191
|
+
/** Text to display before add button. Useful for errors or other info. */
|
192
|
+
helperText: _propTypes["default"].node,
|
193
|
+
|
194
|
+
/** Callback for changing array field data */
|
195
|
+
onChange: _propTypes["default"].func,
|
196
|
+
|
197
|
+
/** Callback for adding new empty field */
|
198
|
+
onAdd: _propTypes["default"].func,
|
199
|
+
|
200
|
+
/** Callback for deleting a field */
|
201
|
+
onDelete: _propTypes["default"].func,
|
202
|
+
|
203
|
+
/** Render prop to display an input field */
|
204
|
+
renderField: _propTypes["default"].func,
|
205
|
+
|
206
|
+
/** Determines the helper text styling. */
|
207
|
+
status: _propTypes["default"].oneOf((0, _values["default"])(_statuses["default"]))
|
208
|
+
};
|
209
|
+
ArrayField.defaultProps = {
|
210
|
+
addButtonLabel: '+ Add'
|
211
|
+
};
|
212
|
+
var _default = ArrayField;
|
213
|
+
exports["default"] = _default;
|
@@ -0,0 +1,223 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
|
+
|
7
|
+
_Object$defineProperty(exports, "__esModule", {
|
8
|
+
value: true
|
9
|
+
});
|
10
|
+
|
11
|
+
exports.Controlled = exports.Uncontrolled = exports["default"] = void 0;
|
12
|
+
|
13
|
+
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
14
|
+
|
15
|
+
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
16
|
+
|
17
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
18
|
+
|
19
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
20
|
+
|
21
|
+
var _react = _interopRequireDefault(require("react"));
|
22
|
+
|
23
|
+
var _overlays = require("@react-aria/overlays");
|
24
|
+
|
25
|
+
var _uuid = require("uuid");
|
26
|
+
|
27
|
+
var _index = require("../../index");
|
28
|
+
|
29
|
+
var _react2 = require("@emotion/react");
|
30
|
+
|
31
|
+
var _default = {
|
32
|
+
title: 'Form/ArrayField',
|
33
|
+
parameters: {
|
34
|
+
actions: {
|
35
|
+
argTypesRegex: '^on.*'
|
36
|
+
},
|
37
|
+
docs: {
|
38
|
+
source: {
|
39
|
+
type: 'code'
|
40
|
+
}
|
41
|
+
}
|
42
|
+
},
|
43
|
+
argTypes: {
|
44
|
+
label: {
|
45
|
+
defaultValue: 'Array field label',
|
46
|
+
control: {
|
47
|
+
type: 'text'
|
48
|
+
}
|
49
|
+
},
|
50
|
+
helperText: {
|
51
|
+
defaultValue: 'Helper text info...',
|
52
|
+
control: {
|
53
|
+
type: 'text'
|
54
|
+
}
|
55
|
+
},
|
56
|
+
addButtonLabel: {
|
57
|
+
defaultValue: '+ Add field',
|
58
|
+
control: {
|
59
|
+
type: 'text'
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
};
|
64
|
+
exports["default"] = _default;
|
65
|
+
var defaultData = [{
|
66
|
+
id: (0, _uuid.v4)(),
|
67
|
+
value: 'Hello'
|
68
|
+
}, {
|
69
|
+
id: (0, _uuid.v4)(),
|
70
|
+
value: 'World'
|
71
|
+
}];
|
72
|
+
|
73
|
+
var Uncontrolled = function Uncontrolled(_ref) {
|
74
|
+
var args = (0, _extends2["default"])({}, _ref);
|
75
|
+
return (0, _react2.jsx)(_index.ArrayField, (0, _extends2["default"])({
|
76
|
+
defaultValue: defaultData,
|
77
|
+
renderField: function renderField(id, fieldValue, onFieldValueChange, onFieldDelete, isDisabled, otherFieldProps) {
|
78
|
+
return (0, _react2.jsx)(_index.TextField, (0, _extends2["default"])({
|
79
|
+
"aria-label": "Text field",
|
80
|
+
value: fieldValue,
|
81
|
+
onChange: function onChange(e) {
|
82
|
+
return onFieldValueChange(e, id);
|
83
|
+
},
|
84
|
+
mr: "xs",
|
85
|
+
slots: {
|
86
|
+
inContainer: (0, _react2.jsx)(_index.ArrayFieldDeleteButton, {
|
87
|
+
isDisabled: isDisabled,
|
88
|
+
onDelete: function onDelete() {
|
89
|
+
return onFieldDelete(id);
|
90
|
+
}
|
91
|
+
})
|
92
|
+
}
|
93
|
+
}, otherFieldProps));
|
94
|
+
},
|
95
|
+
sx: {
|
96
|
+
width: '400px'
|
97
|
+
}
|
98
|
+
}, args));
|
99
|
+
};
|
100
|
+
|
101
|
+
exports.Uncontrolled = Uncontrolled;
|
102
|
+
|
103
|
+
var Controlled = function Controlled() {
|
104
|
+
var defaultDataSelectField = [{
|
105
|
+
id: (0, _uuid.v4)(),
|
106
|
+
fieldValue: 'red',
|
107
|
+
onComponentRender: function onComponentRender(id, fieldValue, onFieldValueChange, onFieldDelete, isDisabled, otherFieldProps) {
|
108
|
+
return (0, _react2.jsx)(_overlays.OverlayProvider, null, (0, _react2.jsx)(_index.SelectField, (0, _extends2["default"])({
|
109
|
+
defaultSelectedKey: fieldValue,
|
110
|
+
onSelectionChange: function onSelectionChange(e) {
|
111
|
+
return onFieldValueChange(e, id);
|
112
|
+
},
|
113
|
+
width: "100%",
|
114
|
+
slots: {
|
115
|
+
inContainer: (0, _react2.jsx)(_index.ArrayFieldDeleteButton, {
|
116
|
+
isDisabled: isDisabled,
|
117
|
+
onDelete: function onDelete() {
|
118
|
+
return onFieldDelete(id);
|
119
|
+
}
|
120
|
+
})
|
121
|
+
}
|
122
|
+
}, otherFieldProps), (0, _react2.jsx)(_index.Item, {
|
123
|
+
key: "red"
|
124
|
+
}, "Red"), (0, _react2.jsx)(_index.Item, {
|
125
|
+
key: "blue"
|
126
|
+
}, "Blue"), (0, _react2.jsx)(_index.Item, {
|
127
|
+
key: "yellow"
|
128
|
+
}, "Yellow")));
|
129
|
+
}
|
130
|
+
}, {
|
131
|
+
id: (0, _uuid.v4)(),
|
132
|
+
fieldValue: 'black',
|
133
|
+
onComponentRender: function onComponentRender(id, fieldValue, onFieldValueChange, onFieldDelete, isDisabled, otherFieldProps) {
|
134
|
+
return (0, _react2.jsx)(_overlays.OverlayProvider, null, (0, _react2.jsx)(_index.SelectField, (0, _extends2["default"])({
|
135
|
+
defaultSelectedKey: fieldValue,
|
136
|
+
onSelectionChange: function onSelectionChange(key) {
|
137
|
+
return onFieldValueChange(key, id);
|
138
|
+
},
|
139
|
+
width: "100%",
|
140
|
+
slots: {
|
141
|
+
inContainer: (0, _react2.jsx)(_index.ArrayFieldDeleteButton, {
|
142
|
+
isDisabled: isDisabled,
|
143
|
+
onDelete: function onDelete() {
|
144
|
+
return onFieldDelete(id);
|
145
|
+
}
|
146
|
+
})
|
147
|
+
}
|
148
|
+
}, otherFieldProps), (0, _react2.jsx)(_index.Item, {
|
149
|
+
key: "orange"
|
150
|
+
}, "Orange"), (0, _react2.jsx)(_index.Item, {
|
151
|
+
key: "purple"
|
152
|
+
}, "Purple"), (0, _react2.jsx)(_index.Item, {
|
153
|
+
key: "black"
|
154
|
+
}, "Black")));
|
155
|
+
}
|
156
|
+
}];
|
157
|
+
var defaultEmptyField = {
|
158
|
+
id: (0, _uuid.v4)(),
|
159
|
+
fieldValue: 'blue',
|
160
|
+
onComponentRender: function onComponentRender(id, fieldValue, onFieldValueChange, onFieldDelete, isDisabled, otherFieldProps) {
|
161
|
+
return (0, _react2.jsx)(_overlays.OverlayProvider, null, (0, _react2.jsx)(_index.SelectField, (0, _extends2["default"])({
|
162
|
+
defaultSelectedKey: fieldValue,
|
163
|
+
onSelectionChange: function onSelectionChange(e) {
|
164
|
+
return onFieldValueChange(e, id);
|
165
|
+
},
|
166
|
+
width: "100%",
|
167
|
+
slots: {
|
168
|
+
inContainer: (0, _react2.jsx)(_index.ArrayFieldDeleteButton, {
|
169
|
+
isDisabled: isDisabled,
|
170
|
+
onDelete: function onDelete() {
|
171
|
+
return onFieldDelete(id);
|
172
|
+
}
|
173
|
+
})
|
174
|
+
}
|
175
|
+
}, otherFieldProps), (0, _react2.jsx)(_index.Item, {
|
176
|
+
key: "blue"
|
177
|
+
}, "Blue"), (0, _react2.jsx)(_index.Item, {
|
178
|
+
key: "teal"
|
179
|
+
}, "Teal"), (0, _react2.jsx)(_index.Item, {
|
180
|
+
key: "turquoise"
|
181
|
+
}, "Turquoise")));
|
182
|
+
}
|
183
|
+
};
|
184
|
+
|
185
|
+
var _React$useState = _react["default"].useState(defaultDataSelectField),
|
186
|
+
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
187
|
+
fieldValues = _React$useState2[0],
|
188
|
+
setFieldValues = _React$useState2[1];
|
189
|
+
|
190
|
+
function handleOnChange(values) {
|
191
|
+
setFieldValues(values);
|
192
|
+
}
|
193
|
+
|
194
|
+
function handleOnAdd() {
|
195
|
+
setFieldValues(function (oldValues) {
|
196
|
+
var _context;
|
197
|
+
|
198
|
+
return (0, _concat["default"])(_context = []).call(_context, oldValues, [defaultEmptyField]);
|
199
|
+
});
|
200
|
+
}
|
201
|
+
|
202
|
+
function handleOnDelete(fieldId) {
|
203
|
+
setFieldValues(function (oldValues) {
|
204
|
+
return (0, _filter["default"])(oldValues).call(oldValues, function (_ref2) {
|
205
|
+
var id = _ref2.id;
|
206
|
+
return id !== fieldId;
|
207
|
+
});
|
208
|
+
});
|
209
|
+
}
|
210
|
+
|
211
|
+
return (0, _react2.jsx)(_index.ArrayField, {
|
212
|
+
value: fieldValues,
|
213
|
+
helperText: "Here is some helpful text...",
|
214
|
+
onAdd: handleOnAdd,
|
215
|
+
onChange: handleOnChange,
|
216
|
+
onDelete: handleOnDelete,
|
217
|
+
sx: {
|
218
|
+
width: '400px'
|
219
|
+
}
|
220
|
+
});
|
221
|
+
};
|
222
|
+
|
223
|
+
exports.Controlled = Controlled;
|