@pingux/astro 2.71.0-alpha.0 → 2.71.0-alpha.2

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 (25) hide show
  1. package/lib/cjs/components/ListBox/ListBox.js +4 -2
  2. package/lib/cjs/components/ListBox/ListBox.styles.js +20 -0
  3. package/lib/cjs/components/ListBox/Option.js +47 -8
  4. package/lib/cjs/components/MultivaluesField/CondensedMultivaluesField.js +508 -0
  5. package/lib/cjs/components/MultivaluesField/DefaultMultivaluesField.js +616 -0
  6. package/lib/cjs/components/MultivaluesField/MultivaluesField.js +18 -481
  7. package/lib/cjs/components/MultivaluesField/MultivaluesField.stories.js +114 -2
  8. package/lib/cjs/components/MultivaluesField/MultivaluesField.test.js +251 -2
  9. package/lib/cjs/components/SelectFieldBase/SelectFieldBase.js +3 -1
  10. package/lib/cjs/recipes/DateTimeRangePicker.stories.js +182 -0
  11. package/lib/cjs/types/listBox.d.ts +6 -0
  12. package/lib/cjs/utils/designUtils/figmaLinks.d.ts +3 -0
  13. package/lib/cjs/utils/designUtils/figmaLinks.js +3 -0
  14. package/lib/components/ListBox/ListBox.js +4 -2
  15. package/lib/components/ListBox/ListBox.styles.js +20 -0
  16. package/lib/components/ListBox/Option.js +47 -8
  17. package/lib/components/MultivaluesField/CondensedMultivaluesField.js +495 -0
  18. package/lib/components/MultivaluesField/DefaultMultivaluesField.js +603 -0
  19. package/lib/components/MultivaluesField/MultivaluesField.js +18 -480
  20. package/lib/components/MultivaluesField/MultivaluesField.stories.js +111 -1
  21. package/lib/components/MultivaluesField/MultivaluesField.test.js +250 -2
  22. package/lib/components/SelectFieldBase/SelectFieldBase.js +3 -1
  23. package/lib/recipes/DateTimeRangePicker.stories.js +167 -0
  24. package/lib/utils/designUtils/figmaLinks.js +3 -0
  25. package/package.json +1 -1
@@ -3,7 +3,7 @@
3
3
  var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
4
  var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
5
5
  var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
6
- var _filterInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
6
+ var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
7
7
  var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
8
8
  var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
9
9
  var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
@@ -15,498 +15,35 @@ _Object$defineProperty(exports, "__esModule", {
15
15
  value: true
16
16
  });
17
17
  exports["default"] = void 0;
18
- var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
19
- var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
20
- var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
21
- var _trim = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/trim"));
22
- var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
23
- var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
24
- var _findIndex = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find-index"));
25
- var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
26
- var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
27
- var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
28
18
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
29
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
30
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
19
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
31
20
  var _react = _interopRequireWildcard(require("react"));
32
- var _reactAria = require("react-aria");
33
- var _CloseIcon = _interopRequireDefault(require("@pingux/mdi-react/CloseIcon"));
34
- var _i18n = require("@react-aria/i18n");
35
- var _utils = require("@react-aria/utils");
36
- var _visuallyHidden = require("@react-aria/visually-hidden");
37
- var _list = require("@react-stately/list");
38
21
  var _propTypes = _interopRequireDefault(require("prop-types"));
39
- var _ = require("../..");
40
- var _MultivaluesContext = require("../../context/MultivaluesContext");
41
- var _hooks = require("../../hooks");
42
- var _pendoID = require("../../utils/devUtils/constants/pendoID");
43
22
  var _isIterable = require("../../utils/devUtils/props/isIterable");
44
23
  var _ariaAttributes = require("../../utils/docUtils/ariaAttributes");
45
24
  var _fieldAttributes = require("../../utils/docUtils/fieldAttributes");
46
25
  var _statusProp = require("../../utils/docUtils/statusProp");
47
- var _ListBox = _interopRequireDefault(require("../ListBox"));
26
+ var _CondensedMultivaluesField = _interopRequireDefault(require("./CondensedMultivaluesField"));
27
+ var _DefaultMultivaluesField = _interopRequireDefault(require("./DefaultMultivaluesField"));
48
28
  var _react2 = require("@emotion/react");
49
- var _excluded = ["defaultSelectedKeys", "direction", "disabledKeys", "containerProps", "hasAutoFocus", "hasNoStatusIndicator", "helperText", "inputProps", "isDisabled", "isNotFlippable", "isReadOnly", "isRequired", "items", "label", "mode", "onBlur", "onFocus", "onInputChange", "onKeyDown", "onKeyUp", "onOpenChange", "onSelectionChange", "placeholder", "readOnlyKeys", "selectedKeys", "scrollBoxProps", "status"];
50
29
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
51
30
  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; }
52
- 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; }
53
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context11, _context12; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context11 = ownKeys(Object(source), !0)).call(_context11, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context12 = ownKeys(Object(source))).call(_context12, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
31
+ 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; }
32
+ 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; }
54
33
  var MultivaluesField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
55
- var _context8, _listBoxRef$current;
56
- var defaultSelectedKeys = props.defaultSelectedKeys,
57
- direction = props.direction,
58
- _props$disabledKeys = props.disabledKeys,
59
- disabledKeys = _props$disabledKeys === void 0 ? [] : _props$disabledKeys,
60
- containerProps = props.containerProps,
61
- hasAutoFocus = props.hasAutoFocus,
62
- hasNoStatusIndicator = props.hasNoStatusIndicator,
63
- helperText = props.helperText,
64
- customInputProps = props.inputProps,
65
- isDisabled = props.isDisabled,
66
- isNotFlippable = props.isNotFlippable,
67
- isReadOnly = props.isReadOnly,
68
- isRequired = props.isRequired,
69
- initialItems = props.items,
70
- label = props.label,
71
- mode = props.mode,
72
- _onBlur = props.onBlur,
73
- _onFocus = props.onFocus,
74
- onInputChange = props.onInputChange,
75
- onKeyDown = props.onKeyDown,
76
- _onKeyUp = props.onKeyUp,
77
- onOpenChange = props.onOpenChange,
78
- onSelectionChange = props.onSelectionChange,
79
- placeholder = props.placeholder,
80
- _props$readOnlyKeys = props.readOnlyKeys,
81
- readOnlyKeys = _props$readOnlyKeys === void 0 ? [] : _props$readOnlyKeys,
82
- selectedKeys = props.selectedKeys,
83
- scrollBoxProps = props.scrollBoxProps,
84
- status = props.status,
85
- others = (0, _objectWithoutProperties2["default"])(props, _excluded);
86
- var hasCustomValue = mode === 'non-restrictive';
87
- (0, _hooks.usePropWarning)(props, 'disabled', 'isDisabled');
88
- var _useState = (0, _react.useState)([]),
89
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
90
- customItems = _useState2[0],
91
- setCustomItems = _useState2[1];
92
- var _useState3 = (0, _react.useState)(''),
93
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
94
- filterString = _useState4[0],
95
- setFilterString = _useState4[1];
96
- var _useState5 = (0, _react.useState)(false),
97
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
98
- isOpen = _useState6[0],
99
- setIsOpen = _useState6[1];
100
- var _useState7 = (0, _react.useState)(initialItems),
101
- _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
102
- items = _useState8[0],
103
- setItems = _useState8[1];
104
- var _useState9 = (0, _react.useState)(''),
105
- _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
106
- activeDescendant = _useState10[0],
107
- setActiveDescendant = _useState10[1];
108
- var toggleItems = function toggleItems(keys) {
109
- setItems((0, _filter["default"])(initialItems).call(initialItems, function (item) {
110
- var _context;
111
- return !(0, _includes["default"])(_context = (0, _from["default"])(keys)).call(_context, item.key);
112
- }));
113
- setFilterString('');
114
- if (onSelectionChange) onSelectionChange(keys);
115
- };
116
- var _useFilter = (0, _i18n.useFilter)({
117
- sensitivity: 'base'
118
- }),
119
- contains = _useFilter.contains;
120
- var state = (0, _list.useListState)(_objectSpread(_objectSpread({}, props), {}, {
121
- filter: function filter(nodes) {
122
- var _context2;
123
- return (0, _filter["default"])(_context2 = (0, _from["default"])(nodes)).call(_context2, function (item) {
124
- return contains(item.textValue, filterString);
125
- });
126
- },
127
- items: (0, _filter["default"])(items).call(items, function (_ref) {
128
- var key = _ref.key;
129
- return !(0, _includes["default"])(readOnlyKeys).call(readOnlyKeys, key);
130
- }),
131
- onSelectionChange: toggleItems,
132
- selectionMode: 'multiple'
133
- }));
134
- var selectionManager = state.selectionManager;
135
- var filteredItems = (0, _react.useMemo)(function () {
136
- return (0, _from["default"])(state.collection);
137
- }, [state.collection, filterString]);
138
- var close = function close() {
139
- return setIsOpen(false);
140
- };
141
- var closeBadgeRefs = (0, _react.useRef)([]);
142
- var inputWrapperRef = (0, _react.useRef)();
143
- var inputRef = (0, _react.useRef)();
144
- /* istanbul ignore next */
145
- (0, _react.useImperativeHandle)(ref, function () {
146
- return inputWrapperRef.current;
147
- });
148
- (0, _react.useImperativeHandle)(ref, function () {
149
- return inputRef.current;
150
- });
151
- var listBoxRef = (0, _react.useRef)();
152
- var popoverRef = (0, _react.useRef)();
153
- var _useOverlayPosition = (0, _reactAria.useOverlayPosition)({
154
- isOpen: isOpen,
155
- onClose: close,
156
- offset: 1,
157
- overlayRef: popoverRef,
158
- placement: "".concat(direction, " end"),
159
- scrollRef: listBoxRef,
160
- shouldFlip: !isNotFlippable,
161
- targetRef: inputWrapperRef
162
- }),
163
- overlayProps = _useOverlayPosition.overlayProps,
164
- placement = _useOverlayPosition.placement,
165
- updatePosition = _useOverlayPosition.updatePosition;
166
-
167
- // Update position once the ListBox has rendered. This ensures that
168
- // it flips properly when it doesn't fit in the available space.
169
- /* istanbul ignore next */
170
- (0, _utils.useLayoutEffect)(function () {
171
- if (isOpen) {
172
- requestAnimationFrame(function () {
173
- updatePosition();
174
- });
175
- }
176
- }, [isOpen, selectionManager.selectedKeys, updatePosition]);
177
-
178
- // Measure the width of the input to inform the width of the menu (below).
179
- var _useState11 = (0, _react.useState)(null),
180
- _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
181
- menuWidth = _useState12[0],
182
- setMenuWidth = _useState12[1];
183
- var onResize = (0, _react.useCallback)(function () {
184
- /* istanbul ignore next */
185
- if (inputWrapperRef.current) {
186
- setMenuWidth("".concat(inputWrapperRef.current.offsetWidth + 2, "px"));
187
- }
188
- }, [inputWrapperRef, isOpen, setMenuWidth]);
189
- (0, _utils.useResizeObserver)({
190
- ref: inputWrapperRef,
191
- onResize: onResize
192
- });
193
- (0, _utils.useLayoutEffect)(onResize, [onResize]);
194
- var style = _objectSpread(_objectSpread({}, overlayProps.style), {}, {
195
- width: menuWidth,
196
- minWidth: menuWidth
197
- });
198
- (0, _react.useEffect)(function () {
199
- if (defaultSelectedKeys) selectionManager.setSelectedKeys(defaultSelectedKeys);
200
- }, []);
201
- (0, _react.useEffect)(function () {
202
- if (selectedKeys) selectionManager.setSelectedKeys(selectedKeys);
203
- }, []);
204
- (0, _react.useEffect)(function () {
205
- if (onOpenChange) onOpenChange(isOpen);
206
- if (!isOpen) setActiveDescendant('');
207
- }, [isOpen]);
208
- var addNewBadgeFromInput = function addNewBadgeFromInput(inputValue) {
209
- var _context3, _context4;
210
- var key = (0, _trim["default"])(inputValue).call(inputValue);
211
- if (key === '') {
212
- return;
213
- }
214
- if (state.selectionManager.isSelected(key)) {
215
- return;
216
- }
217
- selectionManager.setSelectedKeys((0, _concat["default"])(_context3 = []).call(_context3, (0, _from["default"])(selectionManager.state.selectedKeys), [key]));
218
- setCustomItems((0, _concat["default"])(_context4 = []).call(_context4, customItems, [{
219
- id: key,
220
- key: key,
221
- name: key
222
- }]));
223
- setFilterString('');
224
- };
225
-
226
- // there actually is a test for this, but coverage is not picking it up.
227
- /* istanbul ignore next */
228
- var selectTheOnlyFilteredItem = function selectTheOnlyFilteredItem() {
229
- var key = filteredItems[0].key;
230
- if (!(0, _includes["default"])(disabledKeys).call(disabledKeys, key)) {
231
- selectionManager.toggleSelection(filteredItems[0].key);
232
- setFilterString('');
233
- }
234
- };
235
-
236
- // there actually is a test for this, but coverage is not picking it up.
237
- /* istanbul ignore next */
238
- var onBlurTextField = function onBlurTextField() {
239
- if (hasCustomValue && filteredItems.length === 1) {
240
- selectTheOnlyFilteredItem();
241
- } else if (hasCustomValue) {
242
- addNewBadgeFromInput(filterString);
243
- }
244
- };
245
-
246
- /* istanbul ignore next */
247
- var keyDown = function keyDown(e) {
248
- switch (e.key) {
249
- case 'Enter':
250
- {
251
- e.preventDefault();
252
- if (selectionManager.focusedKey) {
253
- var key = selectionManager.focusedKey;
254
- if (!(0, _includes["default"])(disabledKeys).call(disabledKeys, key)) {
255
- selectionManager.toggleSelection(selectionManager.focusedKey);
256
- setFilterString('');
257
- }
258
- } else if (hasCustomValue && !selectionManager.focusedKey) {
259
- var _key = e.target.value;
260
- if (_key === '') {
261
- return;
262
- }
263
- addNewBadgeFromInput(e.target.value);
264
- } else if (hasCustomValue && filteredItems.length === 1) {
265
- selectTheOnlyFilteredItem();
266
- } else if (!hasCustomValue) {
267
- setFilterString('');
268
- close();
269
- }
270
- break;
271
- }
272
- case 'ArrowDown':
273
- {
274
- var nextKey = state.collection.getKeyAfter(selectionManager.focusedKey) || state.collection.getFirstKey();
275
- if (nextKey) selectionManager.setFocusedKey(nextKey);
276
- break;
277
- }
278
- case 'ArrowUp':
279
- {
280
- var prevKey = state.collection.getKeyBefore(selectionManager.focusedKey) || state.collection.getLastKey();
281
- if (prevKey) selectionManager.setFocusedKey(prevKey);
282
- break;
283
- }
284
- case 'Escape':
285
- {
286
- setFilterString('');
287
- close();
288
- break;
289
- }
34
+ var component = (0, _react.useMemo)(function () {
35
+ switch (props.mode) {
36
+ case 'condensed':
37
+ return (0, _react2.jsx)(_CondensedMultivaluesField["default"], (0, _extends2["default"])({
38
+ ref: ref
39
+ }, props));
290
40
  default:
291
- break;
292
- }
293
- if (onKeyDown) onKeyDown(e.nativeEvent);
294
- };
295
- var deleteItem = function deleteItem(key, e) {
296
- var _context5;
297
- var activeBadgesKeys = (0, _reduce["default"])(_context5 = closeBadgeRefs.current).call(_context5, function (result, item) {
298
- if (item) {
299
- result.push(item.dataset.item);
300
- }
301
- return result;
302
- }, []);
303
- selectionManager.toggleSelection(key);
304
- if (e.pointerType !== 'keyboard') return;
305
- if (activeBadgesKeys.length > 1) {
306
- var badgeIndex = (0, _findIndex["default"])(activeBadgesKeys).call(activeBadgesKeys, function (item) {
307
- return item === key;
308
- });
309
- var nextFocusBadgeIndex = badgeIndex === activeBadgesKeys.length - 1 ? badgeIndex - 1 : badgeIndex;
310
- closeBadgeRefs.current[nextFocusBadgeIndex].focus();
311
- } else {
312
- inputRef.current.focus();
41
+ return (0, _react2.jsx)(_DefaultMultivaluesField["default"], (0, _extends2["default"])({
42
+ ref: ref
43
+ }, props));
313
44
  }
314
- };
315
- var readOnlyTextItem = function readOnlyTextItem(key, name) {
316
- return (0, _react2.jsx)(_.Text, {
317
- key: key,
318
- role: "presentation",
319
- label: name,
320
- variant: "bodyStrong",
321
- sx: {
322
- bg: 'accent.95',
323
- fontSize: 'sm',
324
- alignSelf: 'center',
325
- ':not(:last-of-type):after': {
326
- content: "\",\xA0\""
327
- }
328
- }
329
- }, name);
330
- };
331
- var readOnlyInputEntry = isReadOnly && (readOnlyKeys.length ? (0, _map["default"])(readOnlyKeys).call(readOnlyKeys, function (key) {
332
- var _context6, _context7;
333
- var item = (0, _find["default"])(_context6 = (0, _concat["default"])(_context7 = []).call(_context7, initialItems, customItems)).call(_context6, function (el) {
334
- return el.key === key;
335
- });
336
- if (item) {
337
- return readOnlyTextItem(item.key, item.name);
338
- }
339
- return null;
340
- }) : (0, _map["default"])(initialItems).call(initialItems, function (item) {
341
- return readOnlyTextItem(item.key, item.name);
342
- }));
343
- var readOnlyItems = !isReadOnly && (0, _map["default"])(readOnlyKeys).call(readOnlyKeys, function (key) {
344
- var item = (0, _find["default"])(initialItems).call(initialItems, function (el) {
345
- return el.key === key;
346
- });
347
- if (item) {
348
- return (0, _react2.jsx)(_.Badge, {
349
- key: item.key,
350
- label: item.name,
351
- variant: "readOnlyBadge",
352
- bg: "white",
353
- textProps: {
354
- sx: {
355
- color: 'text.primary',
356
- tabIndex: '-1'
357
- }
358
- },
359
- as: "li",
360
- tabIndex: 0
361
- });
362
- }
363
- return null;
364
- });
365
- var multivaluesFieldBadge = function multivaluesFieldBadge(item, index) {
366
- return (0, _react2.jsx)(_.Box, {
367
- as: "li",
368
- key: "li ".concat(item.key)
369
- }, (0, _react2.jsx)(_.Badge, (0, _extends2["default"])({
370
- key: item.key,
371
- role: "presentation",
372
- variant: "selectedItemBadge",
373
- bg: "active",
374
- label: item.name,
375
- slots: item.slots
376
- }, item.badgeProps), (0, _react2.jsx)(_.IconButton, (0, _extends2["default"])({
377
- "aria-label": "delete ".concat(item.name),
378
- "data-item": item.name,
379
- onPress: function onPress(e) {
380
- return deleteItem(item.key, e);
381
- },
382
- ref: function ref(el) {
383
- return closeBadgeRefs.current[index] = el;
384
- } // eslint-disable-line
385
- ,
386
- variant: "badge.deleteButton",
387
- "aria-describedby": "selectedKeysState"
388
- }, item.buttonProps), (0, _react2.jsx)(_.Icon, {
389
- icon: _CloseIcon["default"],
390
- color: "white",
391
- size: 14,
392
- title: {
393
- name: 'Clear Icon'
394
- }
395
- }))));
396
- };
397
- var selectedItems = (0, _react2.jsx)(_react["default"].Fragment, null, (0, _map["default"])(_context8 = (0, _from["default"])(selectionManager.selectedKeys)).call(_context8, function (key, i) {
398
- var _context9, _context10;
399
- var item = (0, _find["default"])(_context9 = (0, _concat["default"])(_context10 = []).call(_context10, initialItems, customItems)).call(_context9, function (el) {
400
- return el.key === key;
401
- });
402
- if (item) {
403
- return multivaluesFieldBadge(item, i);
404
- }
405
- return null;
406
- }));
407
- var listbox = (0, _react2.jsx)(_reactAria.FocusScope, null, (0, _react2.jsx)(_reactAria.DismissButton, {
408
- onDismiss: close
409
- }), (0, _react2.jsx)(_.ScrollBox, scrollBoxProps, (0, _react2.jsx)(_ListBox["default"], {
410
- ref: listBoxRef,
411
- hasAutoFocus: hasAutoFocus,
412
- hasVirtualFocus: true,
413
- hasNoEmptySelection: true,
414
- state: state,
415
- "aria-label": "List of options"
416
- })), (0, _react2.jsx)(_reactAria.DismissButton, {
417
- onDismiss: close
418
- }));
419
- var visuallyHidden = (0, _react2.jsx)(_visuallyHidden.VisuallyHidden, {
420
- id: "selectedKeysState"
421
- }, "Selected options:", (0, _from["default"])(selectionManager.selectedKeys).join(' '));
422
-
423
- // the reason we are using two different visually hiddens, rather than one that updates it's value
424
- // is because there are tests that break if an empty visually hidden is rendered in the TextField
425
- var EmptyVisuallyHidden = function EmptyVisuallyHidden() {
426
- return (0, _react2.jsx)(_visuallyHidden.VisuallyHidden, {
427
- id: "emptyKeysState"
428
- }, "Nothing Selected");
429
- };
430
- var inputProps = _objectSpread(_objectSpread({}, customInputProps), {}, {
431
- controlProps: {
432
- 'aria-activedescendant': activeDescendant,
433
- 'aria-controls': (_listBoxRef$current = listBoxRef.current) === null || _listBoxRef$current === void 0 ? void 0 : _listBoxRef$current.id,
434
- 'aria-expanded': isOpen,
435
- role: 'combobox',
436
- ref: inputRef
437
- },
438
- hasAutoFocus: hasAutoFocus,
439
- hasNoStatusIndicator: hasNoStatusIndicator,
440
- isDisabled: isDisabled,
441
- isReadOnly: isReadOnly,
442
- isRequired: isRequired,
443
- label: label,
444
- placeholder: placeholder,
445
- wrapperProps: {
446
- ref: inputWrapperRef,
447
- variant: 'forms.input.multivaluesWrapper',
448
- sx: isReadOnly && {
449
- boxShadow: 'inset 0 0 0 100px #e5e9f8',
450
- border: 'none'
451
- }
452
- },
453
- status: status
454
- });
455
- return (0, _react2.jsx)(_MultivaluesContext.MultivaluesContext.Provider, {
456
- value: setActiveDescendant
457
- }, (0, _react2.jsx)(_.Box, containerProps, (0, _react2.jsx)(_.TextField, (0, _extends2["default"])({
458
- onBlur: function onBlur(e) {
459
- setIsOpen(false);
460
- if (filterString !== '') onBlurTextField();
461
- if (_onBlur) _onBlur(e.nativeEvent);
462
- if (!hasCustomValue) setFilterString('');
463
- },
464
- onChange: function onChange(e) {
465
- if (!isOpen) setIsOpen(true);
466
- setFilterString(e.target.value);
467
- if (onInputChange) onInputChange(e.target.value);
468
- },
469
- onFocus: function onFocus(e) {
470
- if (!isReadOnly) {
471
- setIsOpen(true);
472
- }
473
- if (_onFocus) _onFocus(e.nativeEvent);
474
- },
475
- onKeyDown: keyDown,
476
- onKeyUp: function onKeyUp(e) {
477
- return _onKeyUp && _onKeyUp(e.nativeEvent);
478
- },
479
- "aria-describedby": selectionManager.selectedKeys.size > 0 ? 'selectedKeysState' : 'emptyKeysState',
480
- slots: {
481
- beforeInput: (0, _react2.jsx)(_react["default"].Fragment, null, readOnlyItems && (0, _react2.jsx)(_.Box, {
482
- as: "ul",
483
- isRow: true,
484
- sx: {
485
- p: 0,
486
- flexWrap: 'wrap'
487
- }
488
- }, readOnlyItems), ' ', selectedItems && (0, _react2.jsx)(_.Box, {
489
- as: "ul",
490
- isRow: true,
491
- sx: {
492
- p: 0,
493
- flexWrap: 'wrap'
494
- }
495
- }, selectedItems), readOnlyInputEntry, selectionManager.selectedKeys.size > 0 && visuallyHidden)
496
- } // eslint-disable-line
497
- ,
498
- value: filterString,
499
- helperText: helperText,
500
- "aria-invalid": status === 'error' && true
501
- }, (0, _pendoID.getPendoID)('MultivaluesField'), others, inputProps)), (0, _react2.jsx)(_.PopoverContainer, {
502
- hasNoArrow: true,
503
- isNonModal: true,
504
- isOpen: !state.collection.size ? false : isOpen,
505
- onClose: close,
506
- placement: placement,
507
- ref: popoverRef,
508
- style: style
509
- }, listbox), (0, _react2.jsx)(EmptyVisuallyHidden, null)));
45
+ }, [props.mode]);
46
+ return component;
510
47
  });
511
48
  MultivaluesField.propTypes = _objectSpread(_objectSpread(_objectSpread({
512
49
  /** The initial selected keys in the collection (uncontrolled). */
@@ -548,7 +85,7 @@ MultivaluesField.propTypes = _objectSpread(_objectSpread(_objectSpread({
548
85
  /** The rendered label for the field. */
549
86
  label: _propTypes["default"].string,
550
87
  /** Whether the component allows to create new values or only choose from the selection list */
551
- mode: _propTypes["default"].oneOf(['restrictive', 'non-restrictive']),
88
+ mode: _propTypes["default"].oneOf(['restrictive', 'non-restrictive', 'condensed']),
552
89
  /**
553
90
  * Handler that is called when the element loses focus.
554
91
  *
@@ -14,7 +14,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
14
14
  _Object$defineProperty(exports, "__esModule", {
15
15
  value: true
16
16
  });
17
- exports["default"] = exports.Uncontrolled = exports.ReadOnlyValues = exports.ReadOnlyField = exports.IconSlotsInBadge = exports.Error = exports.DisabledKeys = exports.Default = exports.CustomValues = exports.CustomSize = exports.Controlled = void 0;
17
+ exports["default"] = exports.Uncontrolled = exports.ReadOnlyValues = exports.ReadOnlyField = exports.IconSlotsInBadge = exports.Error = exports.DisabledKeys = exports.Default = exports.CustomValues = exports.CustomSize = exports.Controlled = exports.CondensedWithSection = exports.Condensed = void 0;
18
18
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
19
19
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
20
20
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
@@ -220,6 +220,60 @@ var items = [{
220
220
  name: 'Shark',
221
221
  key: 'Shark'
222
222
  }];
223
+ var checkboxItems = [{
224
+ id: 1,
225
+ name: 'Option 1',
226
+ key: 'Option 1'
227
+ }, {
228
+ id: 2,
229
+ name: 'Option 2',
230
+ key: 'Option 2'
231
+ }, {
232
+ id: 3,
233
+ name: 'Option 3',
234
+ key: 'Option 3'
235
+ }, {
236
+ id: 4,
237
+ name: 'Option 4',
238
+ key: 'Option 4'
239
+ }, {
240
+ id: 5,
241
+ name: 'Option 5',
242
+ key: 'Option 5'
243
+ }, {
244
+ id: 6,
245
+ name: 'Option 6',
246
+ key: 'Option 6'
247
+ }, {
248
+ id: 7,
249
+ name: 'Option 7',
250
+ key: 'Option 7'
251
+ }];
252
+ var withSection = [{
253
+ name: 'Animals',
254
+ key: 'Animals',
255
+ children: [{
256
+ name: 'Option A1'
257
+ }, {
258
+ name: 'Option A2'
259
+ }, {
260
+ name: 'Option A3'
261
+ }, {
262
+ name: 'Option A4'
263
+ }, {
264
+ name: 'Option A5'
265
+ }]
266
+ }, {
267
+ name: 'People',
268
+ key: 'People',
269
+ children: [{
270
+ name: 'Option B1'
271
+ }, {
272
+ name: 'Option B2'
273
+ }, {
274
+ name: 'Option B3'
275
+ }]
276
+ }];
223
277
  var itemsWithSlots = [{
224
278
  id: 1,
225
279
  name: 'Aardvark',
@@ -562,4 +616,62 @@ var CustomSize = function CustomSize(args) {
562
616
  }, item.name);
563
617
  }))));
564
618
  };
565
- exports.CustomSize = CustomSize;
619
+ exports.CustomSize = CustomSize;
620
+ var Condensed = function Condensed(args) {
621
+ var _useState23 = (0, _react.useState)(false),
622
+ _useState24 = (0, _slicedToArray2["default"])(_useState23, 2),
623
+ isOpen = _useState24[0],
624
+ setIsOpen = _useState24[1];
625
+ var direction = args.direction;
626
+ var onOpenChange = function onOpenChange() {
627
+ setIsOpen(true);
628
+ };
629
+ return (0, _react2.jsx)(_index.OverlayProvider
630
+ // note: spacing for demo purpose only so that the select list renders in the right place
631
+ , {
632
+ style: setOverlayStyle(direction, isOpen, '25%', '25%', '75%')
633
+ }, (0, _react2.jsx)(_index.MultivaluesField, (0, _extends2["default"])({
634
+ items: checkboxItems
635
+ }, args, {
636
+ mode: "condensed",
637
+ onOpenChange: onOpenChange
638
+ }), function (item) {
639
+ return (0, _react2.jsx)(_index.Item, {
640
+ key: item.key,
641
+ "data-id": item.name,
642
+ "aria-label": item.name
643
+ }, item.name);
644
+ }));
645
+ };
646
+ exports.Condensed = Condensed;
647
+ var CondensedWithSection = function CondensedWithSection(args) {
648
+ var _useState25 = (0, _react.useState)(false),
649
+ _useState26 = (0, _slicedToArray2["default"])(_useState25, 2),
650
+ isOpen = _useState26[0],
651
+ setIsOpen = _useState26[1];
652
+ var direction = args.direction;
653
+ var onOpenChange = function onOpenChange() {
654
+ setIsOpen(true);
655
+ };
656
+ return (0, _react2.jsx)(_index.OverlayProvider
657
+ // note: spacing for demo purpose only so that the select list renders in the right place
658
+ , {
659
+ style: setOverlayStyle(direction, isOpen, '25%', '25%', '75%')
660
+ }, (0, _react2.jsx)(_index.MultivaluesField, (0, _extends2["default"])({
661
+ items: withSection
662
+ }, args, {
663
+ mode: "condensed",
664
+ onOpenChange: onOpenChange
665
+ }), function (section) {
666
+ return (0, _react2.jsx)(_index.Section, {
667
+ key: section.key,
668
+ items: section.children,
669
+ title: section.name
670
+ }, function (item) {
671
+ return (0, _react2.jsx)(_index.Item, {
672
+ key: item.name
673
+ }, item.name);
674
+ });
675
+ }));
676
+ };
677
+ exports.CondensedWithSection = CondensedWithSection;