@pingux/astro 1.16.0-alpha.4 → 1.17.0-alpha.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 +18 -0
- package/lib/cjs/components/ArrayField/ArrayField.js +5 -1
- package/lib/cjs/components/ArrayField/ArrayField.stories.js +1 -0
- package/lib/cjs/components/Button/Button.js +5 -0
- package/lib/cjs/components/ComboBoxField/ComboBoxField.js +40 -7
- package/lib/cjs/components/ComboBoxField/ComboBoxField.stories.js +58 -2
- package/lib/cjs/components/ComboBoxField/ComboBoxField.test.js +123 -25
- package/lib/cjs/components/Link/Link.js +5 -0
- package/lib/cjs/components/ListView/ListView.js +6 -0
- package/lib/cjs/components/Messages/Messages.js +4 -0
- package/lib/cjs/components/Modal/Modal.js +5 -0
- package/lib/cjs/components/NavBar/NavBar.stories.js +1 -1
- package/lib/cjs/components/OverlayPanel/OverlayPanel.js +3 -0
- package/lib/cjs/components/RequirementsList/RequirementsList.js +4 -0
- package/lib/cjs/components/ScrollBox/ScrollBox.js +5 -2
- package/lib/cjs/components/Stepper/Stepper.js +6 -0
- package/lib/cjs/components/Tab/Tab.js +4 -0
- package/lib/cjs/components/Tabs/Tabs.js +4 -0
- package/lib/components/ArrayField/ArrayField.js +6 -1
- package/lib/components/ArrayField/ArrayField.stories.js +1 -0
- package/lib/components/Button/Button.js +6 -0
- package/lib/components/ComboBoxField/ComboBoxField.js +40 -8
- package/lib/components/ComboBoxField/ComboBoxField.stories.js +51 -0
- package/lib/components/ComboBoxField/ComboBoxField.test.js +106 -25
- package/lib/components/Link/Link.js +6 -0
- package/lib/components/ListView/ListView.js +6 -0
- package/lib/components/Messages/Messages.js +5 -0
- package/lib/components/Modal/Modal.js +6 -0
- package/lib/components/NavBar/NavBar.stories.js +1 -1
- package/lib/components/OverlayPanel/OverlayPanel.js +4 -0
- package/lib/components/RequirementsList/RequirementsList.js +5 -0
- package/lib/components/ScrollBox/ScrollBox.js +6 -2
- package/lib/components/Stepper/Stepper.js +6 -0
- package/lib/components/Tab/Tab.js +5 -0
- package/lib/components/Tabs/Tabs.js +4 -0
- package/package.json +1 -1
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.16.0](https://gitlab.corp.pingidentity.com/ux/pingux/compare/@pingux/astro@1.15.0...@pingux/astro@1.16.0) (2022-06-08)
|
7
|
+
|
8
|
+
|
9
|
+
### Bug Fixes
|
10
|
+
|
11
|
+
* [UIP-5364] make chip icon not wrapped in a button aria-hidden ([cdf7df3](https://gitlab.corp.pingidentity.com/ux/pingux/commit/cdf7df39dcce043faaba97f54f491057d1dc4174))
|
12
|
+
* Added 5px padding to add btn ([1445f77](https://gitlab.corp.pingidentity.com/ux/pingux/commit/1445f77cbb8b8ece4c6d21249c3277e409dfd87c))
|
13
|
+
|
14
|
+
|
15
|
+
### Features
|
16
|
+
|
17
|
+
* [UIP-5374] change Loader role to alert ([27e9cfa](https://gitlab.corp.pingidentity.com/ux/pingux/commit/27e9cfa578b80f164ad617f28c1dd9fa92346d10))
|
18
|
+
* [UIP-5456] Multivalues selectedKeys not showing selected options in external app ([8342005](https://gitlab.corp.pingidentity.com/ux/pingux/commit/8342005406d0d1c351eda6a38c7070ce21ebb19b))
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
|
6
24
|
# [1.15.0](https://gitlab.corp.pingidentity.com/ux/pingux/compare/@pingux/astro@1.14.0...@pingux/astro@1.15.0) (2022-05-31)
|
7
25
|
|
8
26
|
|
@@ -81,6 +81,10 @@ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (
|
|
81
81
|
|
82
82
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context3, _context4; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context3 = ownKeys(Object(source), !0)).call(_context3, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context4 = ownKeys(Object(source))).call(_context4, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
83
83
|
|
84
|
+
/**
|
85
|
+
* Displays array collections providing useful functions and
|
86
|
+
* optimizations for arrays.
|
87
|
+
*/
|
84
88
|
var ArrayField = function ArrayField(props) {
|
85
89
|
var _context2;
|
86
90
|
|
@@ -123,7 +127,7 @@ var ArrayField = function ArrayField(props) {
|
|
123
127
|
});
|
124
128
|
}, []);
|
125
129
|
var onFieldValueChange = (0, _react.useCallback)(function (event, fieldId) {
|
126
|
-
var tempValue = event; // Checks if value
|
130
|
+
var tempValue = event; // Checks if value received is a key or event
|
127
131
|
|
128
132
|
if (typeof event !== 'string') {
|
129
133
|
tempValue = event.target.value;
|
@@ -64,6 +64,11 @@ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (
|
|
64
64
|
|
65
65
|
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) { (0, _defineProperty2["default"])(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; }
|
66
66
|
|
67
|
+
/**
|
68
|
+
* Buttons are used to trigger actions or events.
|
69
|
+
* This component is based on the [Button - Theme-UI](https://theme-ui.com/components/button/)
|
70
|
+
* and includes a variety of styles, such as primary action, secondary action, or warning.
|
71
|
+
*/
|
67
72
|
var Button = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
68
73
|
var className = props.className,
|
69
74
|
isDisabled = props.isDisabled,
|
@@ -38,6 +38,8 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-c
|
|
38
38
|
|
39
39
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
40
40
|
|
41
|
+
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
42
|
+
|
41
43
|
var _react = _interopRequireWildcard(require("react"));
|
42
44
|
|
43
45
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
@@ -78,7 +80,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
78
80
|
|
79
81
|
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; }
|
80
82
|
|
81
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var
|
83
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context2 = ownKeys(Object(source), !0)).call(_context2, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context3 = ownKeys(Object(source))).call(_context3, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
82
84
|
|
83
85
|
/**
|
84
86
|
* Combines an input with a listbox for a filterable dropdown list.
|
@@ -103,13 +105,14 @@ var ComboBoxField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
103
105
|
onFocusChange = props.onFocusChange,
|
104
106
|
onKeyDown = props.onKeyDown,
|
105
107
|
onKeyUp = props.onKeyUp,
|
108
|
+
hasAddOption = props.hasAddOption,
|
106
109
|
hasCustomValue = props.hasCustomValue,
|
107
110
|
hasNoEmptySelection = props.hasNoEmptySelection,
|
108
111
|
defaultSelectedKey = props.defaultSelectedKey,
|
109
112
|
selectedKey = props.selectedKey,
|
110
113
|
onSelectionChange = props.onSelectionChange,
|
111
|
-
|
112
|
-
|
114
|
+
initialDefaultItems = props.defaultItems,
|
115
|
+
initialItems = props.items,
|
113
116
|
onOpenChange = props.onOpenChange,
|
114
117
|
loadingState = props.loadingState,
|
115
118
|
onLoadMore = props.onLoadMore,
|
@@ -137,13 +140,11 @@ var ComboBoxField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
137
140
|
onFocusChange: onFocusChange,
|
138
141
|
onKeyDown: onKeyDown,
|
139
142
|
onKeyUp: onKeyUp,
|
140
|
-
allowsCustomValue: hasCustomValue,
|
143
|
+
allowsCustomValue: hasAddOption || hasCustomValue,
|
141
144
|
disallowEmptySelection: hasNoEmptySelection,
|
142
145
|
defaultSelectedKey: defaultSelectedKey,
|
143
146
|
selectedKey: selectedKey,
|
144
147
|
onSelectionChange: onSelectionChange,
|
145
|
-
defaultItems: defaultItems,
|
146
|
-
items: items,
|
147
148
|
onOpenChange: onOpenChange,
|
148
149
|
loadingState: loadingState,
|
149
150
|
onLoadMore: onLoadMore,
|
@@ -169,18 +170,47 @@ var ComboBoxField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
169
170
|
|
170
171
|
var onSelectionChangeHandler = function onSelectionChangeHandler(key) {
|
171
172
|
var newVal = key || selectedKey || '';
|
173
|
+
|
174
|
+
if (hasAddOption && selectedKey !== inputValue) {
|
175
|
+
newVal = inputValue;
|
176
|
+
}
|
177
|
+
|
172
178
|
if (onSelectionChange) onSelectionChange(newVal);
|
173
179
|
};
|
174
180
|
|
181
|
+
var shouldShowAddOption = hasAddOption && inputValue && selectedKey !== inputValue;
|
182
|
+
var addOption = "ADD: ".concat(inputValue);
|
183
|
+
|
184
|
+
var getItemsArr = function getItemsArr(initialArr) {
|
185
|
+
if (initialArr && shouldShowAddOption) {
|
186
|
+
var _context;
|
187
|
+
|
188
|
+
return (0, _concat["default"])(_context = []).call(_context, initialArr, [{
|
189
|
+
name: addOption,
|
190
|
+
key: addOption
|
191
|
+
}]);
|
192
|
+
}
|
193
|
+
|
194
|
+
return initialArr;
|
195
|
+
};
|
196
|
+
|
197
|
+
var defaultItems = getItemsArr(initialDefaultItems);
|
198
|
+
var items = getItemsArr(initialItems);
|
199
|
+
|
175
200
|
var _useFilter = (0, _i18n.useFilter)({
|
176
201
|
sensitivity: 'base'
|
177
202
|
}),
|
178
203
|
contains = _useFilter.contains;
|
179
204
|
|
180
205
|
var state = (0, _combobox2.useComboBoxState)(_objectSpread(_objectSpread({}, comboBoxOptions), {}, {
|
181
|
-
|
206
|
+
defaultItems: defaultItems,
|
207
|
+
items: items,
|
208
|
+
onSelectionChange: hasAddOption || hasCustomValue ? onSelectionChangeHandler : onSelectionChange,
|
182
209
|
defaultFilter: typeof defaultFilter !== 'undefined' ? defaultFilter : contains
|
183
210
|
}));
|
211
|
+
(0, _react.useEffect)(function () {
|
212
|
+
if (shouldShowAddOption) state.selectionManager.setFocusedKey(addOption);
|
213
|
+
}, [shouldShowAddOption, state, addOption]);
|
184
214
|
|
185
215
|
var _useComboBox = (0, _combobox.useComboBox)(_objectSpread(_objectSpread({}, comboBoxOptions), {}, {
|
186
216
|
buttonRef: buttonRef,
|
@@ -286,6 +316,9 @@ var ComboBoxField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
286
316
|
}, listbox));
|
287
317
|
});
|
288
318
|
ComboBoxField.propTypes = {
|
319
|
+
/* Whether or not adding new options to the list is enabled. */
|
320
|
+
hasAddOption: _propTypes["default"].bool,
|
321
|
+
|
289
322
|
/** Whether the ComboBox allows a non-item matching input value to be set. */
|
290
323
|
hasCustomValue: _propTypes["default"].bool,
|
291
324
|
|
@@ -14,7 +14,11 @@ _Object$defineProperty(exports, "__esModule", {
|
|
14
14
|
value: true
|
15
15
|
});
|
16
16
|
|
17
|
-
exports["default"] = exports.WithoutStatusIndicator = exports.WithSections = exports.WithCustomInputValue = exports.WithCustomHeight = exports.Required = exports.HelperText = exports.FocusMenuTrigger = exports.DisabledKeys = exports.Disabled = exports.Default = exports.CustomDefaultFilter = exports.ControlledWithCustomValue = exports.ControlledSelection = exports.ControlledMenu = exports.ControlledInput = exports.ControlledFiltering = exports.AsyncLoading = exports.AllowCustomValue = void 0;
|
17
|
+
exports["default"] = exports.WithoutStatusIndicator = exports.WithSections = exports.WithCustomInputValue = exports.WithCustomHeight = exports.Required = exports.HelperText = exports.FocusMenuTrigger = exports.DisabledKeys = exports.Disabled = exports.Default = exports.CustomDefaultFilter = exports.ControlledWithCustomValue = exports.ControlledWithAddOption = exports.ControlledSelection = exports.ControlledMenu = exports.ControlledInput = exports.ControlledFiltering = exports.AsyncLoading = exports.AllowCustomValue = void 0;
|
18
|
+
|
19
|
+
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
20
|
+
|
21
|
+
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
18
22
|
|
19
23
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
20
24
|
|
@@ -562,4 +566,56 @@ var CustomDefaultFilter = function CustomDefaultFilter() {
|
|
562
566
|
}));
|
563
567
|
};
|
564
568
|
|
565
|
-
exports.CustomDefaultFilter = CustomDefaultFilter;
|
569
|
+
exports.CustomDefaultFilter = CustomDefaultFilter;
|
570
|
+
|
571
|
+
var ControlledWithAddOption = function ControlledWithAddOption() {
|
572
|
+
var _useState11 = (0, _react.useState)(items),
|
573
|
+
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
574
|
+
options = _useState12[0],
|
575
|
+
setOptions = _useState12[1];
|
576
|
+
|
577
|
+
var _useState13 = (0, _react.useState)(''),
|
578
|
+
_useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
|
579
|
+
inputValue = _useState14[0],
|
580
|
+
setInputValue = _useState14[1];
|
581
|
+
|
582
|
+
var _useState15 = (0, _react.useState)(''),
|
583
|
+
_useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
|
584
|
+
selectedKey = _useState16[0],
|
585
|
+
setSelectedKey = _useState16[1];
|
586
|
+
|
587
|
+
var onSelectionChange = function onSelectionChange(key) {
|
588
|
+
// Add new option to options array
|
589
|
+
if (key && !(0, _find["default"])(options).call(options, function (_ref2) {
|
590
|
+
var name = _ref2.name;
|
591
|
+
return name === key;
|
592
|
+
})) {
|
593
|
+
var _context2;
|
594
|
+
|
595
|
+
setOptions((0, _concat["default"])(_context2 = []).call(_context2, options, [{
|
596
|
+
key: key,
|
597
|
+
name: key
|
598
|
+
}]));
|
599
|
+
}
|
600
|
+
|
601
|
+
setInputValue(key);
|
602
|
+
setSelectedKey(key);
|
603
|
+
};
|
604
|
+
|
605
|
+
return (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_ComboBoxField["default"], (0, _extends2["default"])({
|
606
|
+
label: "Example label",
|
607
|
+
defaultItems: options
|
608
|
+
}, actions, {
|
609
|
+
inputValue: inputValue,
|
610
|
+
selectedKey: selectedKey,
|
611
|
+
onInputChange: setInputValue,
|
612
|
+
onSelectionChange: onSelectionChange,
|
613
|
+
hasAddOption: true
|
614
|
+
}), function (item) {
|
615
|
+
return (0, _react2.jsx)(_index.Item, {
|
616
|
+
key: item.name
|
617
|
+
}, item.name);
|
618
|
+
}));
|
619
|
+
};
|
620
|
+
|
621
|
+
exports.ControlledWithAddOption = ControlledWithAddOption;
|
@@ -32,6 +32,10 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/
|
|
32
32
|
|
33
33
|
var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
|
34
34
|
|
35
|
+
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
36
|
+
|
37
|
+
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
38
|
+
|
35
39
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
36
40
|
|
37
41
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
@@ -62,7 +66,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
62
66
|
|
63
67
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty2(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
64
68
|
|
65
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var
|
69
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context6, _context7; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty2(_context6 = ownKeys(Object(source), !0)).call(_context6, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty2(_context7 = ownKeys(Object(source))).call(_context7, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
66
70
|
|
67
71
|
var items = [{
|
68
72
|
name: 'Aardvark',
|
@@ -121,6 +125,54 @@ var ComboBoxWithCustomFilter = function ComboBoxWithCustomFilter() {
|
|
121
125
|
});
|
122
126
|
};
|
123
127
|
|
128
|
+
var ComboBoxWithAddOption = function ComboBoxWithAddOption() {
|
129
|
+
var _useState3 = (0, _react.useState)(items),
|
130
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
131
|
+
options = _useState4[0],
|
132
|
+
setOptions = _useState4[1];
|
133
|
+
|
134
|
+
var _useState5 = (0, _react.useState)(''),
|
135
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
136
|
+
inputValue = _useState6[0],
|
137
|
+
setInputValue = _useState6[1];
|
138
|
+
|
139
|
+
var _useState7 = (0, _react.useState)(''),
|
140
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
141
|
+
selectedKey = _useState8[0],
|
142
|
+
setSelectedKey = _useState8[1];
|
143
|
+
|
144
|
+
var onSelectionChange = function onSelectionChange(key) {
|
145
|
+
if (key && !(0, _find["default"])(options).call(options, function (_ref2) {
|
146
|
+
var name = _ref2.name;
|
147
|
+
return name === key;
|
148
|
+
})) {
|
149
|
+
var _context;
|
150
|
+
|
151
|
+
setOptions((0, _concat["default"])(_context = []).call(_context, options, [{
|
152
|
+
key: key,
|
153
|
+
name: key
|
154
|
+
}]));
|
155
|
+
}
|
156
|
+
|
157
|
+
setInputValue(key);
|
158
|
+
setSelectedKey(key);
|
159
|
+
};
|
160
|
+
|
161
|
+
return (0, _react2.jsx)(_index.ComboBoxField, {
|
162
|
+
label: "Example label",
|
163
|
+
defaultItems: options,
|
164
|
+
inputValue: inputValue,
|
165
|
+
selectedKey: selectedKey,
|
166
|
+
onInputChange: setInputValue,
|
167
|
+
onSelectionChange: onSelectionChange,
|
168
|
+
hasAddOption: true
|
169
|
+
}, function (item) {
|
170
|
+
return (0, _react2.jsx)(_index.Item, {
|
171
|
+
key: item.name
|
172
|
+
}, item.name);
|
173
|
+
});
|
174
|
+
};
|
175
|
+
|
124
176
|
beforeAll(function () {
|
125
177
|
jest.spyOn(window.HTMLElement.prototype, 'clientWidth', 'get').mockImplementation(function () {
|
126
178
|
return 1000;
|
@@ -474,43 +526,43 @@ test('should use default contains filtering', function () {
|
|
474
526
|
});
|
475
527
|
test('should be able to use controlled filtering', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
476
528
|
var options, input;
|
477
|
-
return _regenerator["default"].wrap(function _callee$(
|
529
|
+
return _regenerator["default"].wrap(function _callee$(_context2) {
|
478
530
|
while (1) {
|
479
|
-
switch (
|
531
|
+
switch (_context2.prev = _context2.next) {
|
480
532
|
case 0:
|
481
533
|
(0, _testWrapper.render)((0, _react2.jsx)(ComboBoxWithCustomFilter, null));
|
482
534
|
input = _testWrapper.screen.queryByRole('combobox'); // Should list all without filterable input
|
483
535
|
|
484
536
|
_userEvent["default"].type(input, '{arrowdown}');
|
485
537
|
|
486
|
-
|
538
|
+
_context2.next = 5;
|
487
539
|
return _testWrapper.screen.findAllByRole('option');
|
488
540
|
|
489
541
|
case 5:
|
490
|
-
options =
|
542
|
+
options = _context2.sent;
|
491
543
|
expect(options).toHaveLength(items.length); // Should only list the second option
|
492
544
|
|
493
545
|
_userEvent["default"].type(input, 'k');
|
494
546
|
|
495
|
-
|
547
|
+
_context2.next = 10;
|
496
548
|
return _testWrapper.screen.findAllByRole('option');
|
497
549
|
|
498
550
|
case 10:
|
499
|
-
options =
|
551
|
+
options = _context2.sent;
|
500
552
|
expect(options[0]).toHaveTextContent(items[1].name);
|
501
553
|
|
502
554
|
case 12:
|
503
555
|
case "end":
|
504
|
-
return
|
556
|
+
return _context2.stop();
|
505
557
|
}
|
506
558
|
}
|
507
559
|
}, _callee);
|
508
560
|
})));
|
509
561
|
test('should be able to use custom default filtering', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
510
562
|
var options, defaultFilter, input;
|
511
|
-
return _regenerator["default"].wrap(function _callee2$(
|
563
|
+
return _regenerator["default"].wrap(function _callee2$(_context3) {
|
512
564
|
while (1) {
|
513
|
-
switch (
|
565
|
+
switch (_context3.prev = _context3.next) {
|
514
566
|
case 0:
|
515
567
|
defaultFilter = function defaultFilter(option, inputValue) {
|
516
568
|
return (0, _startsWith["default"])(option).call(option, inputValue);
|
@@ -523,34 +575,34 @@ test('should be able to use custom default filtering', /*#__PURE__*/(0, _asyncTo
|
|
523
575
|
|
524
576
|
_userEvent["default"].type(input, '{arrowdown}');
|
525
577
|
|
526
|
-
|
578
|
+
_context3.next = 6;
|
527
579
|
return _testWrapper.screen.findAllByRole('option');
|
528
580
|
|
529
581
|
case 6:
|
530
|
-
options =
|
582
|
+
options = _context3.sent;
|
531
583
|
expect(options).toHaveLength(items.length); // Should only list the second option
|
532
584
|
|
533
585
|
_userEvent["default"].type(input, 'K');
|
534
586
|
|
535
|
-
|
587
|
+
_context3.next = 11;
|
536
588
|
return _testWrapper.screen.findAllByRole('option');
|
537
589
|
|
538
590
|
case 11:
|
539
|
-
options =
|
591
|
+
options = _context3.sent;
|
540
592
|
expect(options[0]).toHaveTextContent(items[1].name);
|
541
593
|
|
542
594
|
case 13:
|
543
595
|
case "end":
|
544
|
-
return
|
596
|
+
return _context3.stop();
|
545
597
|
}
|
546
598
|
}
|
547
599
|
}, _callee2);
|
548
600
|
})));
|
549
601
|
test('should show in input "textValue" if provided', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
550
602
|
var newItems, input, options;
|
551
|
-
return _regenerator["default"].wrap(function _callee3$(
|
603
|
+
return _regenerator["default"].wrap(function _callee3$(_context4) {
|
552
604
|
while (1) {
|
553
|
-
switch (
|
605
|
+
switch (_context4.prev = _context4.next) {
|
554
606
|
case 0:
|
555
607
|
newItems = (0, _map["default"])(items).call(items, function (item) {
|
556
608
|
return _objectSpread(_objectSpread({}, item), {}, {
|
@@ -564,11 +616,11 @@ test('should show in input "textValue" if provided', /*#__PURE__*/(0, _asyncToGe
|
|
564
616
|
|
565
617
|
_userEvent["default"].click(input);
|
566
618
|
|
567
|
-
|
619
|
+
_context4.next = 6;
|
568
620
|
return _testWrapper.screen.findAllByRole('option');
|
569
621
|
|
570
622
|
case 6:
|
571
|
-
options =
|
623
|
+
options = _context4.sent;
|
572
624
|
|
573
625
|
_userEvent["default"].click(options[0]);
|
574
626
|
|
@@ -580,7 +632,7 @@ test('should show in input "textValue" if provided', /*#__PURE__*/(0, _asyncToGe
|
|
580
632
|
|
581
633
|
case 11:
|
582
634
|
case "end":
|
583
|
-
return
|
635
|
+
return _context4.stop();
|
584
636
|
}
|
585
637
|
}
|
586
638
|
}, _callee3);
|
@@ -951,25 +1003,71 @@ test('onSelectionChange works properly with custom value', function () {
|
|
951
1003
|
|
952
1004
|
expect(onSelectionChange).toHaveBeenCalledWith('');
|
953
1005
|
});
|
1006
|
+
test('add option shows when "hasAddOption" is provided', function () {
|
1007
|
+
(0, _testWrapper.render)((0, _react2.jsx)(ComboBoxWithAddOption, null));
|
1008
|
+
|
1009
|
+
var input = _testWrapper.screen.queryByRole('combobox');
|
1010
|
+
|
1011
|
+
expect(input).toHaveValue('');
|
1012
|
+
expect(_testWrapper.screen.queryByRole('listbox')).not.toBeInTheDocument();
|
1013
|
+
expect(_testWrapper.screen.queryByRole('option')).not.toBeInTheDocument();
|
1014
|
+
var inputValue = 'New value';
|
1015
|
+
|
1016
|
+
_userEvent["default"].type(input, inputValue);
|
1017
|
+
|
1018
|
+
expect(input).toHaveValue(inputValue);
|
1019
|
+
expect(_testWrapper.screen.queryByRole('listbox')).toBeInTheDocument();
|
1020
|
+
|
1021
|
+
var option = _testWrapper.screen.queryByRole('option');
|
1022
|
+
|
1023
|
+
expect(option).toBeInTheDocument();
|
1024
|
+
expect(option).toHaveClass('is-focused');
|
1025
|
+
expect(option).toHaveTextContent("ADD: ".concat(inputValue));
|
1026
|
+
});
|
1027
|
+
test('if "hasAddOption" is provided, then custom value is added to listbox on blur', function () {
|
1028
|
+
(0, _testWrapper.render)((0, _react2.jsx)(ComboBoxWithAddOption, null));
|
1029
|
+
|
1030
|
+
var input = _testWrapper.screen.queryByRole('combobox');
|
1031
|
+
|
1032
|
+
var inputValue = 'New value';
|
1033
|
+
|
1034
|
+
_userEvent["default"].type(input, inputValue);
|
1035
|
+
|
1036
|
+
expect(input).toHaveValue(inputValue); // blur input
|
1037
|
+
|
1038
|
+
_userEvent["default"].tab();
|
1039
|
+
|
1040
|
+
expect(_testWrapper.screen.queryByRole('listbox')).not.toBeInTheDocument();
|
1041
|
+
expect(_testWrapper.screen.queryByRole('option')).not.toBeInTheDocument();
|
1042
|
+
|
1043
|
+
_userEvent["default"].click(input);
|
1044
|
+
|
1045
|
+
expect(input).toHaveValue(inputValue);
|
1046
|
+
expect(_testWrapper.screen.queryByRole('listbox')).toBeInTheDocument();
|
1047
|
+
|
1048
|
+
var options = _testWrapper.screen.queryAllByRole('option');
|
1049
|
+
|
1050
|
+
expect(options[options.length - 1]).toHaveTextContent(inputValue);
|
1051
|
+
});
|
954
1052
|
test('should have no accessibility violations', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
955
1053
|
var _getComponent6, container, results;
|
956
1054
|
|
957
|
-
return _regenerator["default"].wrap(function _callee4$(
|
1055
|
+
return _regenerator["default"].wrap(function _callee4$(_context5) {
|
958
1056
|
while (1) {
|
959
|
-
switch (
|
1057
|
+
switch (_context5.prev = _context5.next) {
|
960
1058
|
case 0:
|
961
1059
|
jest.useRealTimers();
|
962
1060
|
_getComponent6 = getComponent(), container = _getComponent6.container;
|
963
|
-
|
1061
|
+
_context5.next = 4;
|
964
1062
|
return (0, _jestAxe.axe)(container);
|
965
1063
|
|
966
1064
|
case 4:
|
967
|
-
results =
|
1065
|
+
results = _context5.sent;
|
968
1066
|
expect(results).toHaveNoViolations();
|
969
1067
|
|
970
1068
|
case 6:
|
971
1069
|
case "end":
|
972
|
-
return
|
1070
|
+
return _context5.stop();
|
973
1071
|
}
|
974
1072
|
}
|
975
1073
|
}, _callee4);
|
@@ -44,6 +44,11 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
|
|
44
44
|
|
45
45
|
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; }
|
46
46
|
|
47
|
+
/**
|
48
|
+
* Link uses the [Link - Theme-UI](https://theme-ui.com/components/link) component and
|
49
|
+
* React Aria's [useLink](https://react-spectrum.adobe.com/react-aria/useLink.html) hook.
|
50
|
+
*
|
51
|
+
*/
|
47
52
|
var Link = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
48
53
|
var className = props.className,
|
49
54
|
isDisabled = props.isDisabled,
|
@@ -107,6 +107,12 @@ function useListLayout(state) {
|
|
107
107
|
layout.disabledKeys = state.disabledKeys;
|
108
108
|
return layout;
|
109
109
|
}
|
110
|
+
/**
|
111
|
+
* ListViews are used to display a list of items. Users can select,
|
112
|
+
* view, or edit items in this list. This virtualized component supports
|
113
|
+
* asynchronous data in infinitely scrollable lists.
|
114
|
+
*/
|
115
|
+
|
110
116
|
|
111
117
|
var ListView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
112
118
|
var disabledKeys = props.disabledKeys,
|
@@ -46,6 +46,10 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
|
|
46
46
|
|
47
47
|
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; }
|
48
48
|
|
49
|
+
/**
|
50
|
+
*Messages are intended to display non-critical alerts that
|
51
|
+
attract the users’ attention, but do not interfere or temporarily block their work.
|
52
|
+
*/
|
49
53
|
var Messages = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
50
54
|
var _context;
|
51
55
|
|
@@ -68,6 +68,11 @@ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (
|
|
68
68
|
|
69
69
|
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) { (0, _defineProperty2["default"])(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; }
|
70
70
|
|
71
|
+
/**
|
72
|
+
* Modals are overlays that interrupt a user’s workflow to convey an important message.
|
73
|
+
* The component must be wrapped in an OverlayProvider, and the first child should be a trigger,
|
74
|
+
* such as Button.
|
75
|
+
*/
|
71
76
|
var Modal = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
72
77
|
var className = props.className,
|
73
78
|
closeButton = props.closeButton,
|
@@ -44,6 +44,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
|
|
44
44
|
|
45
45
|
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; }
|
46
46
|
|
47
|
+
/**
|
48
|
+
* In Astro, side panels are used to show details and present modal interactions.
|
49
|
+
*/
|
47
50
|
var OverlayPanel = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
48
51
|
var _props$sx;
|
49
52
|
|
@@ -48,6 +48,10 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
|
|
48
48
|
|
49
49
|
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; }
|
50
50
|
|
51
|
+
/**
|
52
|
+
* List of requirements for a password, with indicators that can change to show when
|
53
|
+
* requirements are satisfied.
|
54
|
+
*/
|
51
55
|
var RequirementsList = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
52
56
|
var requirements = props.requirements,
|
53
57
|
others = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
@@ -56,6 +56,9 @@ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (
|
|
56
56
|
|
57
57
|
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) { (0, _defineProperty2["default"])(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; }
|
58
58
|
|
59
|
+
/**
|
60
|
+
* Scrollbox is a container that allows content to be scrolled
|
61
|
+
*/
|
59
62
|
var ScrollBox = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
60
63
|
var maxHeight = props.maxHeight,
|
61
64
|
children = props.children,
|
@@ -66,7 +69,7 @@ var ScrollBox = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
66
69
|
|
67
70
|
var _useState = (0, _react.useState)(0),
|
68
71
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
69
|
-
|
72
|
+
scrollTopPosition = _useState2[0],
|
70
73
|
setScrollTopPosition = _useState2[1];
|
71
74
|
|
72
75
|
var _useState3 = (0, _react.useState)(false),
|
@@ -94,7 +97,7 @@ var ScrollBox = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
94
97
|
setIsTopShadowShowing(outerRef.current.firstChild.scrollTop !== 0);
|
95
98
|
}
|
96
99
|
}
|
97
|
-
}, [
|
100
|
+
}, [scrollTopPosition]);
|
98
101
|
/* istanbul ignore next */
|
99
102
|
|
100
103
|
var onScroll = function onScroll() {
|
@@ -73,6 +73,12 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
73
73
|
var ACTIVE = _Stepper.stepStatuses.ACTIVE,
|
74
74
|
COMPLETED = _Stepper.stepStatuses.COMPLETED,
|
75
75
|
INACTIVE = _Stepper.stepStatuses.INACTIVE;
|
76
|
+
/**
|
77
|
+
* The Stepper component acts as a wrapper for individual Step components.
|
78
|
+
* Stepper is used to display progress through a sequence of logical and numbered steps
|
79
|
+
* usually within a configuration wizard.
|
80
|
+
*/
|
81
|
+
|
76
82
|
var Stepper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
77
83
|
var activeStep = props.activeStep,
|
78
84
|
onStepChange = props.onStepChange,
|