@salutejs/plasma-new-hope 0.335.0-canary.2194.17367251959.0 → 0.335.0-canary.2196.17375511532.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/cjs/components/Combobox/ComboboxNew/Combobox.js +15 -30
- package/cjs/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
- package/cjs/components/Combobox/ComboboxNew/utils/getTextValue.js +24 -0
- package/cjs/components/Combobox/ComboboxNew/utils/getTextValue.js.map +1 -0
- package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.js +26 -44
- package/emotion/cjs/components/Combobox/ComboboxNew/utils/getTextValue.js +25 -0
- package/emotion/cjs/components/Combobox/ComboboxNew/utils/index.js +4 -0
- package/emotion/cjs/examples/components/Chip/Chip.config.js +13 -14
- package/emotion/es/components/Combobox/ComboboxNew/Combobox.js +12 -30
- package/emotion/es/components/Combobox/ComboboxNew/utils/getTextValue.js +16 -0
- package/emotion/es/components/Combobox/ComboboxNew/utils/index.js +1 -0
- package/emotion/es/examples/components/Chip/Chip.config.js +13 -14
- package/es/components/Combobox/ComboboxNew/Combobox.js +15 -30
- package/es/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
- package/es/components/Combobox/ComboboxNew/utils/getTextValue.js +20 -0
- package/es/components/Combobox/ComboboxNew/utils/getTextValue.js.map +1 -0
- package/package.json +2 -2
- package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.js +26 -44
- package/styled-components/cjs/components/Combobox/ComboboxNew/utils/getTextValue.js +25 -0
- package/styled-components/cjs/components/Combobox/ComboboxNew/utils/index.js +4 -0
- package/styled-components/cjs/examples/components/Chip/Chip.config.js +0 -21
- package/styled-components/es/components/Combobox/ComboboxNew/Combobox.js +12 -30
- package/styled-components/es/components/Combobox/ComboboxNew/utils/getTextValue.js +16 -0
- package/styled-components/es/components/Combobox/ComboboxNew/utils/index.js +1 -0
- package/styled-components/es/examples/components/Chip/Chip.config.js +0 -21
- package/types/components/Combobox/ComboboxNew/Combobox.d.ts.map +1 -1
- package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts +1 -1
- package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts.map +1 -1
- package/types/components/Combobox/ComboboxNew/utils/getTextValue.d.ts +4 -0
- package/types/components/Combobox/ComboboxNew/utils/getTextValue.d.ts.map +1 -0
- package/types/components/Combobox/ComboboxNew/utils/index.d.ts +1 -0
- package/types/components/Combobox/ComboboxNew/utils/index.d.ts.map +1 -1
- package/types/examples/components/Chip/Chip.config.d.ts +0 -1
- package/types/examples/components/Chip/Chip.config.d.ts.map +1 -1
- package/types/examples/components/Chip/Chip.d.ts +0 -1
- package/types/examples/components/Chip/Chip.d.ts.map +1 -1
- package/types/examples/components/Combobox/Combobox.d.ts.map +1 -1
@@ -19,13 +19,12 @@ _export(exports, {
|
|
19
19
|
var _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
20
20
|
var _plasmacore = require("@salutejs/plasma-core");
|
21
21
|
var _utils = require("../../../utils");
|
22
|
-
var _utils1 = require("../../../utils");
|
23
22
|
var _hooks = require("../../../hooks");
|
24
|
-
var
|
23
|
+
var _utils1 = require("../../Select/utils");
|
25
24
|
var _Comboboxtokens = require("./Combobox.tokens");
|
26
25
|
var _FloatingPopover = require("./FloatingPopover");
|
27
26
|
var _useKeyboardNavigation = require("./hooks/useKeyboardNavigation");
|
28
|
-
var
|
27
|
+
var _utils2 = require("./utils");
|
29
28
|
var _ui = require("./ui");
|
30
29
|
var _reducers = require("./reducers");
|
31
30
|
var _getPathMaps = require("./hooks/getPathMaps");
|
@@ -218,7 +217,7 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
218
217
|
}
|
219
218
|
var comboboxRoot = function(Root) {
|
220
219
|
return /*#__PURE__*/ (0, _react.forwardRef)(function(props, ref) {
|
221
|
-
var
|
220
|
+
var _getItemByFocused;
|
222
221
|
var name = props.name, multiple = props.multiple, outerValue = props.value, outerOnChange = props.onChange, defaultValue = props.defaultValue, isTargetAmount = props.isTargetAmount, targetAmount = props.targetAmount, items = props.items, _props_placement = props.placement, placement = _props_placement === void 0 ? 'bottom-start' : _props_placement, label = props.label, placeholder = props.placeholder, helperText = props.helperText, contentLeft = props.contentLeft, textBefore = props.textBefore, textAfter = props.textAfter, _props_variant = props.variant, variant = _props_variant === void 0 ? 'normal' : _props_variant, listOverflow = props.listOverflow, listHeight = props.listHeight, listMaxHeight = props.listMaxHeight, listWidth = props.listWidth, portal = props.portal, renderItem = props.renderItem, view = props.view, size = props.size, labelPlacement = props.labelPlacement, keepPlaceholder = props.keepPlaceholder, _props_readOnly = props.readOnly, readOnly = _props_readOnly === void 0 ? false : _props_readOnly, _props_disabled = props.disabled, disabled = _props_disabled === void 0 ? false : _props_disabled, _props_alwaysOpened = props.alwaysOpened, alwaysOpened = _props_alwaysOpened === void 0 ? false : _props_alwaysOpened, filter = props.filter, outerCloseAfterSelect = props.closeAfterSelect, renderValue = props.renderValue, zIndex = props.zIndex, beforeList = props.beforeList, afterList = props.afterList, _props_virtual = props.virtual, virtual = _props_virtual === void 0 ? false : _props_virtual, hintView = props.hintView, hintSize = props.hintSize, emptyStateDescription = props.emptyStateDescription, onChangeValue = props.onChangeValue, onScroll = props.onScroll, onToggle = props.onToggle, // @ts-ignore
|
223
222
|
_offset = props._offset, rest = _object_without_properties(props, [
|
224
223
|
"name",
|
@@ -266,7 +265,7 @@ var comboboxRoot = function(Root) {
|
|
266
265
|
"_offset"
|
267
266
|
]);
|
268
267
|
var transformedItems = (0, _react.useMemo)(function() {
|
269
|
-
return (0,
|
268
|
+
return (0, _utils2.initialItemsTransform)(items || []);
|
270
269
|
}, [
|
271
270
|
items
|
272
271
|
]);
|
@@ -276,7 +275,7 @@ var comboboxRoot = function(Root) {
|
|
276
275
|
}, [
|
277
276
|
items
|
278
277
|
]), 3), valueToCheckedMap = _useMemo[0], valueToItemMap = _useMemo[1], labelToItemMap = _useMemo[2];
|
279
|
-
var _useState = _sliced_to_array((0, _react.useState)(
|
278
|
+
var _useState = _sliced_to_array((0, _react.useState)((0, _utils2.getTextValue)(multiple, outerValue, valueToItemMap, renderValue)), 2), textValue = _useState[0], setTextValue = _useState[1];
|
280
279
|
var _useState1 = _sliced_to_array((0, _react.useState)(multiple ? [] : ''), 2), internalValue = _useState1[0], setInternalValue = _useState1[1];
|
281
280
|
var value = outerValue !== null && outerValue !== undefined ? outerValue : internalValue;
|
282
281
|
var inputRef = (0, _react.useRef)(null);
|
@@ -284,8 +283,7 @@ var comboboxRoot = function(Root) {
|
|
284
283
|
var inputForkRef = (0, _plasmacore.useForkRef)(inputRef, ref);
|
285
284
|
var treeId = (0, _utils.safeUseId)();
|
286
285
|
var filteredItems = (0, _react.useMemo)(function() {
|
287
|
-
|
288
|
-
return (0, _utils3.filterItems)(transformedItems, textValue, ((_valueToItemMap_get = valueToItemMap.get(value)) === null || _valueToItemMap_get === void 0 ? void 0 : _valueToItemMap_get.label) || value, filter);
|
286
|
+
return (0, _utils2.filterItems)(transformedItems, textValue, (0, _utils2.getTextValue)(multiple, value, valueToItemMap, renderValue), filter);
|
289
287
|
}, [
|
290
288
|
transformedItems,
|
291
289
|
textValue,
|
@@ -322,30 +320,19 @@ var comboboxRoot = function(Root) {
|
|
322
320
|
if (onToggle) {
|
323
321
|
onToggle(false);
|
324
322
|
}
|
325
|
-
//
|
326
|
-
|
327
|
-
// Если нет выбранного элемента, то стираем значение инпута.
|
328
|
-
if (textValue !== value) {
|
329
|
-
if ((0, _utils1.isEmpty)(value)) {
|
330
|
-
setTextValue('');
|
331
|
-
} else if (multiple) {
|
332
|
-
setTextValue('');
|
333
|
-
} else {
|
334
|
-
var _valueToItemMap_get;
|
335
|
-
setTextValue(((_valueToItemMap_get = valueToItemMap.get(value)) === null || _valueToItemMap_get === void 0 ? void 0 : _valueToItemMap_get.label) || value || '');
|
336
|
-
}
|
337
|
-
}
|
323
|
+
// Возвращаем актуальное значение поля ввода после закрытия выпадающего списка.
|
324
|
+
setTextValue((0, _utils2.getTextValue)(multiple, value, valueToItemMap, renderValue));
|
338
325
|
}, floatingPopoverRef);
|
339
326
|
// Эта функция срабатывает при изменении Combobox и
|
340
327
|
// при изменении нативного Select для формы (срабатывает только после изменения internalValue и рендера).
|
341
328
|
var onChange = function(newValue, item) {
|
342
329
|
// Условие для отправки изменений наружу
|
343
330
|
if (props.onChange) {
|
344
|
-
// Условие для
|
331
|
+
// Условие для отправки, если комбобокс используется без формы.
|
345
332
|
if (!props.name && (typeof newValue === 'string' || Array.isArray(newValue))) {
|
346
333
|
props.onChange(newValue, item || null);
|
347
334
|
}
|
348
|
-
// Условие для
|
335
|
+
// Условие для отправки, если комбобокс используется с формой.
|
349
336
|
if (props.name && (typeof newValue === "undefined" ? "undefined" : _type_of(newValue)) === 'object' && !Array.isArray(newValue)) {
|
350
337
|
props.onChange(newValue);
|
351
338
|
}
|
@@ -404,7 +391,7 @@ var comboboxRoot = function(Root) {
|
|
404
391
|
resultValues.splice(index, 1);
|
405
392
|
}
|
406
393
|
});
|
407
|
-
var removedItemValue = (0,
|
394
|
+
var removedItemValue = (0, _utils2.getRemovedElement)(value, resultValues, isTargetAmount);
|
408
395
|
onChange(resultValues, removedItemValue ? valueToItemMap.get(removedItemValue) || {
|
409
396
|
value: removedItemValue,
|
410
397
|
label: removedItemValue.toString()
|
@@ -414,7 +401,7 @@ var comboboxRoot = function(Root) {
|
|
414
401
|
var _labelToItemMap_get;
|
415
402
|
return ((_labelToItemMap_get = labelToItemMap.get(chipLabel)) === null || _labelToItemMap_get === void 0 ? void 0 : _labelToItemMap_get.value) || chipLabel;
|
416
403
|
});
|
417
|
-
var removedItemValue1 = (0,
|
404
|
+
var removedItemValue1 = (0, _utils2.getRemovedElement)(value, newValues, isTargetAmount);
|
418
405
|
onChange(newValues, removedItemValue1 ? valueToItemMap.get(removedItemValue1) || {
|
419
406
|
value: removedItemValue1,
|
420
407
|
label: removedItemValue1.toString()
|
@@ -450,12 +437,12 @@ var comboboxRoot = function(Root) {
|
|
450
437
|
var checkedCopy = new Map(checked);
|
451
438
|
if (!checkedCopy.get(item.value)) {
|
452
439
|
checkedCopy.set(item.value, true);
|
453
|
-
(0,
|
440
|
+
(0, _utils2.updateDescendants)(item, checkedCopy, true, valueToItemMap);
|
454
441
|
} else {
|
455
442
|
checkedCopy.set(item.value, false);
|
456
|
-
(0,
|
443
|
+
(0, _utils2.updateDescendants)(item, checkedCopy, false);
|
457
444
|
}
|
458
|
-
(0,
|
445
|
+
(0, _utils2.updateAncestors)(item, checkedCopy);
|
459
446
|
var newValues = [];
|
460
447
|
valueToItemMap.forEach(function(item, key) {
|
461
448
|
if (checkedCopy.get(key)) {
|
@@ -484,7 +471,7 @@ var comboboxRoot = function(Root) {
|
|
484
471
|
};
|
485
472
|
// Обработчик клика по айтему выпадающего списка
|
486
473
|
var handleItemClick = function(item, e) {
|
487
|
-
if (!(0,
|
474
|
+
if (!(0, _utils.isEmpty)(item === null || item === void 0 ? void 0 : item.items)) {
|
488
475
|
return;
|
489
476
|
}
|
490
477
|
if (multiple) {
|
@@ -530,7 +517,7 @@ var comboboxRoot = function(Root) {
|
|
530
517
|
return [];
|
531
518
|
};
|
532
519
|
var handlePressDown = function(item, e) {
|
533
|
-
if ((0,
|
520
|
+
if ((0, _utils.isEmpty)(item.items)) {
|
534
521
|
handleItemClick(item, e);
|
535
522
|
} else if (multiple) {
|
536
523
|
handleCheckboxChange(item);
|
@@ -561,14 +548,14 @@ var comboboxRoot = function(Root) {
|
|
561
548
|
checkedCopy.forEach(function(_, key) {
|
562
549
|
checkedCopy.set(key, false);
|
563
550
|
});
|
564
|
-
if (!(0,
|
551
|
+
if (!(0, _utils.isEmpty)(value)) {
|
565
552
|
if (Array.isArray(value)) {
|
566
553
|
value.forEach(function(val) {
|
567
554
|
// Только если value находится в items, т.к. value может и не существовать в items.
|
568
555
|
if (valueToItemMap.has(val)) {
|
569
556
|
checkedCopy.set(val, true);
|
570
|
-
(0,
|
571
|
-
(0,
|
557
|
+
(0, _utils2.updateDescendants)(valueToItemMap.get(val), checkedCopy, true);
|
558
|
+
(0, _utils2.updateAncestors)(valueToItemMap.get(val), checkedCopy);
|
572
559
|
}
|
573
560
|
});
|
574
561
|
} else {
|
@@ -576,15 +563,11 @@ var comboboxRoot = function(Root) {
|
|
576
563
|
// eslint-disable-next-line no-lonely-if
|
577
564
|
if (valueToItemMap.has(value)) {
|
578
565
|
checkedCopy.set(value, 'done');
|
579
|
-
(0,
|
566
|
+
(0, _utils2.updateSingleAncestors)(valueToItemMap.get(value), checkedCopy, 'dot');
|
580
567
|
}
|
581
568
|
}
|
582
569
|
}
|
583
570
|
setChecked(checkedCopy);
|
584
|
-
if (!multiple && textValue === value && valueToItemMap.has(value)) {
|
585
|
-
var _valueToItemMap_get;
|
586
|
-
setTextValue(((_valueToItemMap_get = valueToItemMap.get(value)) === null || _valueToItemMap_get === void 0 ? void 0 : _valueToItemMap_get.label) || '');
|
587
|
-
}
|
588
571
|
// В deps мы кладем именно outerValue и internalValue, а не просто value.
|
589
572
|
// Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.
|
590
573
|
// А переменную, содержащую сложные типы данных, нельзя помещать в deps.
|
@@ -594,9 +577,8 @@ var comboboxRoot = function(Root) {
|
|
594
577
|
items
|
595
578
|
]);
|
596
579
|
// При изменении value нужно возвращать значение в инпуте к исходному.
|
597
|
-
(0,
|
598
|
-
|
599
|
-
setTextValue(multiple ? '' : ((_valueToItemMap_get = valueToItemMap.get(value)) === null || _valueToItemMap_get === void 0 ? void 0 : _valueToItemMap_get.label) || (value === null || value === void 0 ? void 0 : value.toString()) || '');
|
580
|
+
(0, _hooks.useDidMountLayoutEffect)(function() {
|
581
|
+
setTextValue((0, _utils2.getTextValue)(multiple, value, valueToItemMap, renderValue));
|
600
582
|
}, [
|
601
583
|
outerValue,
|
602
584
|
internalValue
|
@@ -667,7 +649,7 @@ var comboboxRoot = function(Root) {
|
|
667
649
|
onClick: handleClickArrow
|
668
650
|
}, /*#__PURE__*/ _react.default.createElement(_Comboboxstyles.StyledArrow, {
|
669
651
|
color: "inherit",
|
670
|
-
size: (0,
|
652
|
+
size: (0, _utils1.sizeToIconSize)(size),
|
671
653
|
className: withArrowInverse
|
672
654
|
})),
|
673
655
|
textBefore: textBefore,
|
@@ -680,7 +662,7 @@ var comboboxRoot = function(Root) {
|
|
680
662
|
"aria-autocomplete": "list",
|
681
663
|
"aria-controls": "".concat(treeId, "_tree_level_1"),
|
682
664
|
"aria-expanded": isCurrentListOpen,
|
683
|
-
"aria-activedescendant": activeDescendantItemValue ? (0,
|
665
|
+
"aria-activedescendant": activeDescendantItemValue ? (0, _utils2.getItemId)(treeId, activeDescendantItemValue) : '',
|
684
666
|
labelPlacement: labelPlacement,
|
685
667
|
keepPlaceholder: keepPlaceholder
|
686
668
|
}, multiple ? {
|
@@ -713,7 +695,7 @@ var comboboxRoot = function(Root) {
|
|
713
695
|
virtual: virtual,
|
714
696
|
listOverflow: listOverflow,
|
715
697
|
onScroll: virtual ? undefined : onScroll
|
716
|
-
}, beforeList, (0,
|
698
|
+
}, beforeList, (0, _utils.isEmpty)(filteredItems) ? /*#__PURE__*/ _react.default.createElement(_Comboboxstyles.StyledEmptyState, {
|
717
699
|
className: _Comboboxtokens.classes.emptyStateWrapper,
|
718
700
|
size: size,
|
719
701
|
description: emptyStateDescription || 'Ничего не найдено'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "getTextValue", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return getTextValue;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
// Type Guard для multiple.
|
12
|
+
// @ts-ignore
|
13
|
+
function isMultiple(multiple, value) {
|
14
|
+
return Boolean(multiple);
|
15
|
+
}
|
16
|
+
var getTextValue = function(multiple, value, valueToItemMap, renderValue) {
|
17
|
+
var _valueToItemMap_get;
|
18
|
+
if (isMultiple(multiple, value) || !value) {
|
19
|
+
return '';
|
20
|
+
}
|
21
|
+
return (renderValue === null || renderValue === void 0 ? void 0 : renderValue({
|
22
|
+
value: value,
|
23
|
+
label: ''
|
24
|
+
})) || ((_valueToItemMap_get = valueToItemMap.get(value)) === null || _valueToItemMap_get === void 0 ? void 0 : _valueToItemMap_get.label) || value.toString();
|
25
|
+
};
|
@@ -18,6 +18,9 @@ _export(exports, {
|
|
18
18
|
get getRemovedElement () {
|
19
19
|
return _getRemovedElement.getRemovedElement;
|
20
20
|
},
|
21
|
+
get getTextValue () {
|
22
|
+
return _getTextValue.getTextValue;
|
23
|
+
},
|
21
24
|
get initialItemsTransform () {
|
22
25
|
return _initialItemsTransform.initialItemsTransform;
|
23
26
|
},
|
@@ -42,3 +45,4 @@ var _sizeToIconSize = require("./sizeToIconSize");
|
|
42
45
|
var _filterItems = require("./filterItems");
|
43
46
|
var _getItemId = require("./getItemId");
|
44
47
|
var _getRemovedElement = require("./getRemovedElement");
|
48
|
+
var _getTextValue = require("./getTextValue");
|