@salutejs/plasma-new-hope 0.174.0-canary.1505.11505788468.0 → 0.174.0-canary.1505.11515852860.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. package/cjs/components/Combobox/ComboboxNew/Combobox.js +15 -21
  2. package/cjs/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
  3. package/cjs/components/Combobox/ComboboxNew/utils/getInitialValue.js +1 -7
  4. package/cjs/components/Combobox/ComboboxNew/utils/getInitialValue.js.map +1 -1
  5. package/cjs/components/Select/Select.js +2 -10
  6. package/cjs/components/Select/Select.js.map +1 -1
  7. package/cjs/components/Select/utils/getInitialValue.js +1 -7
  8. package/cjs/components/Select/utils/getInitialValue.js.map +1 -1
  9. package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.js +14 -20
  10. package/emotion/cjs/components/Combobox/ComboboxNew/utils/getInitialValue.js +1 -7
  11. package/emotion/cjs/components/Select/Select.js +2 -10
  12. package/emotion/cjs/components/Select/utils/getInitialValue.js +1 -7
  13. package/emotion/cjs/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +6 -0
  14. package/emotion/cjs/examples/plasma_web/components/Combobox/Combobox.stories.tsx +6 -0
  15. package/emotion/es/components/Combobox/ComboboxNew/Combobox.js +14 -20
  16. package/emotion/es/components/Combobox/ComboboxNew/utils/getInitialValue.js +1 -7
  17. package/emotion/es/components/Select/Select.js +2 -10
  18. package/emotion/es/components/Select/utils/getInitialValue.js +1 -7
  19. package/emotion/es/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +6 -0
  20. package/emotion/es/examples/plasma_web/components/Combobox/Combobox.stories.tsx +6 -0
  21. package/es/components/Combobox/ComboboxNew/Combobox.js +15 -21
  22. package/es/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
  23. package/es/components/Combobox/ComboboxNew/utils/getInitialValue.js +1 -7
  24. package/es/components/Combobox/ComboboxNew/utils/getInitialValue.js.map +1 -1
  25. package/es/components/Select/Select.js +2 -10
  26. package/es/components/Select/Select.js.map +1 -1
  27. package/es/components/Select/utils/getInitialValue.js +1 -7
  28. package/es/components/Select/utils/getInitialValue.js.map +1 -1
  29. package/package.json +2 -2
  30. package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.js +14 -20
  31. package/styled-components/cjs/components/Combobox/ComboboxNew/utils/getInitialValue.js +1 -7
  32. package/styled-components/cjs/components/Select/Select.js +2 -10
  33. package/styled-components/cjs/components/Select/utils/getInitialValue.js +1 -7
  34. package/styled-components/cjs/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +6 -0
  35. package/styled-components/cjs/examples/plasma_web/components/Combobox/Combobox.stories.tsx +6 -0
  36. package/styled-components/es/components/Combobox/ComboboxNew/Combobox.js +14 -20
  37. package/styled-components/es/components/Combobox/ComboboxNew/utils/getInitialValue.js +1 -7
  38. package/styled-components/es/components/Select/Select.js +2 -10
  39. package/styled-components/es/components/Select/utils/getInitialValue.js +1 -7
  40. package/styled-components/es/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +6 -0
  41. package/styled-components/es/examples/plasma_web/components/Combobox/Combobox.stories.tsx +6 -0
  42. package/types/components/Combobox/ComboboxNew/Combobox.d.ts.map +1 -1
  43. package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts +7 -1
  44. package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts.map +1 -1
  45. package/types/components/Combobox/ComboboxNew/utils/getInitialValue.d.ts.map +1 -1
  46. package/types/components/Select/Select.d.ts.map +1 -1
  47. package/types/components/Select/utils/getInitialValue.d.ts.map +1 -1
  48. package/types/examples/plasma_b2c/components/Combobox/Combobox.d.ts +18 -6
  49. package/types/examples/plasma_b2c/components/Combobox/Combobox.d.ts.map +1 -1
  50. package/types/examples/plasma_web/components/Combobox/Combobox.d.ts +18 -6
  51. package/types/examples/plasma_web/components/Combobox/Combobox.d.ts.map +1 -1
@@ -163,15 +163,7 @@ var selectRoot = exports.selectRoot = function selectRoot(Root) {
163
163
  if (e) {
164
164
  e.stopPropagation();
165
165
  }
166
- var checkedCopy = new Map(checked);
167
- var isCurrentChecked = checkedCopy.get(item.value);
168
- checkedCopy.forEach(function (_, key) {
169
- checkedCopy.set(key, false);
170
- });
171
- if (!isCurrentChecked) {
172
- checkedCopy.set(item.value, 'done');
173
- (0, _utils2.updateSingleAncestors)(item, checkedCopy, 'dot');
174
- }
166
+ var isCurrentChecked = checked.get(item.value);
175
167
  if (closeAfterSelect) {
176
168
  dispatchPath({
177
169
  type: 'reset'
@@ -243,7 +235,7 @@ var selectRoot = exports.selectRoot = function selectRoot(Root) {
243
235
  }
244
236
  }
245
237
  setChecked(checkedCopy);
246
- }, [outerValue]);
238
+ }, [outerValue, items]);
247
239
  return /*#__PURE__*/_react["default"].createElement(Root, _extends({
248
240
  ref: ref,
249
241
  size: size,
@@ -11,13 +11,7 @@ var getInitialValue = exports.getInitialValue = function getInitialValue(outerVa
11
11
  if (outerValue.length === 0) {
12
12
  return [];
13
13
  }
14
- var updatedValue = [];
15
- outerValue.forEach(function (value) {
16
- if (valueToItemMap.has(value)) {
17
- updatedValue.push(value);
18
- }
19
- });
20
- return updatedValue;
14
+ return outerValue.filter(valueToItemMap.has.bind(valueToItemMap));
21
15
  }
22
16
  if (valueToItemMap.has(outerValue)) {
23
17
  return outerValue;
@@ -68,6 +68,10 @@ const meta: Meta<StorySelectProps> = {
68
68
  control: { type: 'boolean' },
69
69
  if: { arg: 'alwaysOpened', truthy: false },
70
70
  },
71
+ targetAmount: {
72
+ control: { type: 'number' },
73
+ if: { arg: 'isTargetAmount', truthy: true },
74
+ },
71
75
  },
72
76
  args: {
73
77
  label: 'Label',
@@ -78,6 +82,7 @@ const meta: Meta<StorySelectProps> = {
78
82
  view: 'default',
79
83
  enableContentLeft: false,
80
84
  isTargetAmount: false,
85
+ targetAmount: undefined,
81
86
  variant: 'normal',
82
87
  alwaysOpened: false,
83
88
  disabled: false,
@@ -94,6 +99,7 @@ const meta: Meta<StorySelectProps> = {
94
99
  'placeholder',
95
100
  'helperText',
96
101
  'isTargetAmount',
102
+ 'targetAmount',
97
103
  'closeAfterSelect',
98
104
  'alwaysOpened',
99
105
  'variant',
@@ -68,6 +68,10 @@ const meta: Meta<StorySelectProps> = {
68
68
  control: { type: 'boolean' },
69
69
  if: { arg: 'alwaysOpened', truthy: false },
70
70
  },
71
+ targetAmount: {
72
+ control: { type: 'number' },
73
+ if: { arg: 'isTargetAmount', truthy: true },
74
+ },
71
75
  },
72
76
  args: {
73
77
  label: 'Label',
@@ -78,6 +82,7 @@ const meta: Meta<StorySelectProps> = {
78
82
  view: 'default',
79
83
  enableContentLeft: false,
80
84
  isTargetAmount: false,
85
+ targetAmount: undefined,
81
86
  variant: 'normal',
82
87
  alwaysOpened: false,
83
88
  disabled: false,
@@ -94,6 +99,7 @@ const meta: Meta<StorySelectProps> = {
94
99
  'placeholder',
95
100
  'helperText',
96
101
  'isTargetAmount',
102
+ 'targetAmount',
97
103
  'closeAfterSelect',
98
104
  'alwaysOpened',
99
105
  'variant',
@@ -1,4 +1,4 @@
1
- var _excluded = ["multiple", "value", "onChange", "isTargetAmount", "items", "placement", "label", "placeholder", "helperText", "contentLeft", "textBefore", "textAfter", "variant", "listOverflow", "listHeight", "listWidth", "portal", "renderItem", "view", "size", "labelPlacement", "readOnly", "disabled", "alwaysOpened", "filter", "closeAfterSelect", "renderValue"];
1
+ var _excluded = ["multiple", "value", "onChange", "isTargetAmount", "targetAmount", "items", "placement", "label", "placeholder", "helperText", "contentLeft", "textBefore", "textAfter", "variant", "listOverflow", "listHeight", "listWidth", "portal", "renderItem", "view", "size", "labelPlacement", "readOnly", "disabled", "alwaysOpened", "filter", "closeAfterSelect", "renderValue"];
2
2
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
3
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
4
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -35,6 +35,7 @@ export var comboboxRoot = function comboboxRoot(Root) {
35
35
  outerValue = props.value,
36
36
  outerOnChange = props.onChange,
37
37
  isTargetAmount = props.isTargetAmount,
38
+ targetAmount = props.targetAmount,
38
39
  items = props.items,
39
40
  _props$placement = props.placement,
40
41
  placement = _props$placement === void 0 ? 'bottom-start' : _props$placement,
@@ -64,9 +65,13 @@ export var comboboxRoot = function comboboxRoot(Root) {
64
65
  outerCloseAfterSelect = props.closeAfterSelect,
65
66
  renderValue = props.renderValue,
66
67
  rest = _objectWithoutProperties(props, _excluded);
68
+ var transformedItems = useMemo(function () {
69
+ return initialItemsTransform(items || []);
70
+ }, [items]);
71
+
67
72
  // Создаем структуры для быстрой работы с деревом
68
73
  var _useMemo = useMemo(function () {
69
- return getTreeMaps(items);
74
+ return getTreeMaps(transformedItems);
70
75
  }, [items]),
71
76
  _useMemo2 = _slicedToArray(_useMemo, 3),
72
77
  valueToCheckedMap = _useMemo2[0],
@@ -85,9 +90,6 @@ export var comboboxRoot = function comboboxRoot(Root) {
85
90
  var floatingPopoverRef = useRef(null);
86
91
  var inputForkRef = useForkRef(inputRef, ref);
87
92
  var treeId = safeUseId();
88
- var transformedItems = useMemo(function () {
89
- return initialItemsTransform(items || []);
90
- }, [items]);
91
93
  var filteredItems = filterItems(transformedItems, textValue, (_valueToItemMap$get2 = valueToItemMap.get(value)) === null || _valueToItemMap$get2 === void 0 ? void 0 : _valueToItemMap$get2.label, filter);
92
94
  var _useMemo3 = useMemo(function () {
93
95
  return getPathMap(filteredItems);
@@ -254,16 +256,7 @@ export var comboboxRoot = function comboboxRoot(Root) {
254
256
  if (e) {
255
257
  e.stopPropagation();
256
258
  }
257
- var checkedCopy = new Map(checked);
258
- var isCurrentChecked = checkedCopy.get(item.value);
259
- checkedCopy.forEach(function (_, key) {
260
- checkedCopy.set(key, false);
261
- });
262
- if (!isCurrentChecked) {
263
- checkedCopy.set(item.value, 'done');
264
- updateSingleAncestors(item, checkedCopy, 'dot');
265
- }
266
- setTextValue(isCurrentChecked ? '' : item.label);
259
+ var isCurrentChecked = checked.get(item.value);
267
260
  if (!alwaysOpened && closeAfterSelect) {
268
261
  dispatchPath({
269
262
  type: 'reset'
@@ -280,14 +273,15 @@ export var comboboxRoot = function comboboxRoot(Root) {
280
273
  if (multiple && Array.isArray(value)) {
281
274
  if (value.length === 0) return [];
282
275
  if (isTargetAmount) {
283
- return ["\u0412\u044B\u0431\u0440\u0430\u043D\u043E ".concat(value.length)];
276
+ return ["\u0412\u044B\u0431\u0440\u0430\u043D\u043E ".concat(targetAmount || value.length)];
284
277
  }
285
- var mapper = renderValue && function (stringValue) {
278
+ var renderValueMapper = renderValue && function (stringValue) {
286
279
  return renderValue(valueToItemMap.get(stringValue));
287
- } || function (stringValue) {
280
+ };
281
+ var valueToItemMapper = function valueToItemMapper(stringValue) {
288
282
  return valueToItemMap.get(stringValue).label;
289
283
  };
290
- return value.map(mapper);
284
+ return value.map(renderValueMapper || valueToItemMapper);
291
285
  }
292
286
  return [];
293
287
  };
@@ -338,7 +332,7 @@ export var comboboxRoot = function comboboxRoot(Root) {
338
332
  // В deps мы кладем именно outerValue и internalValue, а не просто value.
339
333
  // Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.
340
334
  // А переменную, содержащую сложные типы данных, нельзя помещать в deps.
341
- }, [outerValue, internalValue]);
335
+ }, [outerValue, internalValue, items]);
342
336
  return /*#__PURE__*/React.createElement(Root, {
343
337
  size: size,
344
338
  view: view,
@@ -5,13 +5,7 @@ export var getInitialValue = function getInitialValue(outerValue, valueToItemMap
5
5
  if (outerValue.length === 0) {
6
6
  return [];
7
7
  }
8
- var updatedValue = [];
9
- outerValue.forEach(function (value) {
10
- if (valueToItemMap.has(value)) {
11
- updatedValue.push(value);
12
- }
13
- });
14
- return updatedValue;
8
+ return outerValue.filter(valueToItemMap.has.bind(valueToItemMap));
15
9
  }
16
10
  if (valueToItemMap.has(outerValue)) {
17
11
  return outerValue;
@@ -154,15 +154,7 @@ export var selectRoot = function selectRoot(Root) {
154
154
  if (e) {
155
155
  e.stopPropagation();
156
156
  }
157
- var checkedCopy = new Map(checked);
158
- var isCurrentChecked = checkedCopy.get(item.value);
159
- checkedCopy.forEach(function (_, key) {
160
- checkedCopy.set(key, false);
161
- });
162
- if (!isCurrentChecked) {
163
- checkedCopy.set(item.value, 'done');
164
- updateSingleAncestors(item, checkedCopy, 'dot');
165
- }
157
+ var isCurrentChecked = checked.get(item.value);
166
158
  if (closeAfterSelect) {
167
159
  dispatchPath({
168
160
  type: 'reset'
@@ -234,7 +226,7 @@ export var selectRoot = function selectRoot(Root) {
234
226
  }
235
227
  }
236
228
  setChecked(checkedCopy);
237
- }, [outerValue]);
229
+ }, [outerValue, items]);
238
230
  return /*#__PURE__*/React.createElement(Root, _extends({
239
231
  ref: ref,
240
232
  size: size,
@@ -5,13 +5,7 @@ export var getInitialValue = function getInitialValue(outerValue, valueToItemMap
5
5
  if (outerValue.length === 0) {
6
6
  return [];
7
7
  }
8
- var updatedValue = [];
9
- outerValue.forEach(function (value) {
10
- if (valueToItemMap.has(value)) {
11
- updatedValue.push(value);
12
- }
13
- });
14
- return updatedValue;
8
+ return outerValue.filter(valueToItemMap.has.bind(valueToItemMap));
15
9
  }
16
10
  if (valueToItemMap.has(outerValue)) {
17
11
  return outerValue;
@@ -68,6 +68,10 @@ const meta: Meta<StorySelectProps> = {
68
68
  control: { type: 'boolean' },
69
69
  if: { arg: 'alwaysOpened', truthy: false },
70
70
  },
71
+ targetAmount: {
72
+ control: { type: 'number' },
73
+ if: { arg: 'isTargetAmount', truthy: true },
74
+ },
71
75
  },
72
76
  args: {
73
77
  label: 'Label',
@@ -78,6 +82,7 @@ const meta: Meta<StorySelectProps> = {
78
82
  view: 'default',
79
83
  enableContentLeft: false,
80
84
  isTargetAmount: false,
85
+ targetAmount: undefined,
81
86
  variant: 'normal',
82
87
  alwaysOpened: false,
83
88
  disabled: false,
@@ -94,6 +99,7 @@ const meta: Meta<StorySelectProps> = {
94
99
  'placeholder',
95
100
  'helperText',
96
101
  'isTargetAmount',
102
+ 'targetAmount',
97
103
  'closeAfterSelect',
98
104
  'alwaysOpened',
99
105
  'variant',
@@ -68,6 +68,10 @@ const meta: Meta<StorySelectProps> = {
68
68
  control: { type: 'boolean' },
69
69
  if: { arg: 'alwaysOpened', truthy: false },
70
70
  },
71
+ targetAmount: {
72
+ control: { type: 'number' },
73
+ if: { arg: 'isTargetAmount', truthy: true },
74
+ },
71
75
  },
72
76
  args: {
73
77
  label: 'Label',
@@ -78,6 +82,7 @@ const meta: Meta<StorySelectProps> = {
78
82
  view: 'default',
79
83
  enableContentLeft: false,
80
84
  isTargetAmount: false,
85
+ targetAmount: undefined,
81
86
  variant: 'normal',
82
87
  alwaysOpened: false,
83
88
  disabled: false,
@@ -94,6 +99,7 @@ const meta: Meta<StorySelectProps> = {
94
99
  'placeholder',
95
100
  'helperText',
96
101
  'isTargetAmount',
102
+ 'targetAmount',
97
103
  'closeAfterSelect',
98
104
  'alwaysOpened',
99
105
  'variant',
@@ -8,8 +8,8 @@ import { getTreeMaps, getPathMap } from './hooks/getPathMaps.js';
8
8
  import { IconArrowWrapper, StyledArrow, Ul, StyledEmptyState, base } from './Combobox.styles.js';
9
9
  import { base as base$1 } from './variations/_view/base.js';
10
10
  import { base as base$2 } from './variations/_size/base.js';
11
- import { getInitialValue } from './utils/getInitialValue.js';
12
11
  import { initialItemsTransform } from './utils/initialItemsTransform.js';
12
+ import { getInitialValue } from './utils/getInitialValue.js';
13
13
  import { filterItems } from './utils/filterItems.js';
14
14
  import { pathReducer } from './reducers/pathReducer.js';
15
15
  import { focusedPathReducer } from './reducers/focusedPathReducer.js';
@@ -23,7 +23,7 @@ import { sizeToIconSize } from '../../Select/utils/sizeToIconSize.js';
23
23
  import { getItemId } from './utils/getItemId.js';
24
24
  import { Inner } from './ui/Inner/Inner.js';
25
25
 
26
- var _excluded = ["multiple", "value", "onChange", "isTargetAmount", "items", "placement", "label", "placeholder", "helperText", "contentLeft", "textBefore", "textAfter", "variant", "listOverflow", "listHeight", "listWidth", "portal", "renderItem", "view", "size", "labelPlacement", "readOnly", "disabled", "alwaysOpened", "filter", "closeAfterSelect", "renderValue"];
26
+ var _excluded = ["multiple", "value", "onChange", "isTargetAmount", "targetAmount", "items", "placement", "label", "placeholder", "helperText", "contentLeft", "textBefore", "textAfter", "variant", "listOverflow", "listHeight", "listWidth", "portal", "renderItem", "view", "size", "labelPlacement", "readOnly", "disabled", "alwaysOpened", "filter", "closeAfterSelect", "renderValue"];
27
27
  var Context = /*#__PURE__*/createContext({});
28
28
 
29
29
  /**
@@ -36,6 +36,7 @@ var comboboxRoot = function comboboxRoot(Root) {
36
36
  outerValue = props.value,
37
37
  outerOnChange = props.onChange,
38
38
  isTargetAmount = props.isTargetAmount,
39
+ targetAmount = props.targetAmount,
39
40
  items = props.items,
40
41
  _props$placement = props.placement,
41
42
  placement = _props$placement === void 0 ? 'bottom-start' : _props$placement,
@@ -65,9 +66,13 @@ var comboboxRoot = function comboboxRoot(Root) {
65
66
  outerCloseAfterSelect = props.closeAfterSelect,
66
67
  renderValue = props.renderValue,
67
68
  rest = _objectWithoutProperties(props, _excluded);
69
+ var transformedItems = useMemo(function () {
70
+ return initialItemsTransform(items || []);
71
+ }, [items]);
72
+
68
73
  // Создаем структуры для быстрой работы с деревом
69
74
  var _useMemo = useMemo(function () {
70
- return getTreeMaps(items);
75
+ return getTreeMaps(transformedItems);
71
76
  }, [items]),
72
77
  _useMemo2 = _slicedToArray(_useMemo, 3),
73
78
  valueToCheckedMap = _useMemo2[0],
@@ -86,9 +91,6 @@ var comboboxRoot = function comboboxRoot(Root) {
86
91
  var floatingPopoverRef = useRef(null);
87
92
  var inputForkRef = useForkRef(inputRef, ref);
88
93
  var treeId = safeUseId();
89
- var transformedItems = useMemo(function () {
90
- return initialItemsTransform(items || []);
91
- }, [items]);
92
94
  var filteredItems = filterItems(transformedItems, textValue, (_valueToItemMap$get2 = valueToItemMap.get(value)) === null || _valueToItemMap$get2 === void 0 ? void 0 : _valueToItemMap$get2.label, filter);
93
95
  var _useMemo3 = useMemo(function () {
94
96
  return getPathMap(filteredItems);
@@ -255,16 +257,7 @@ var comboboxRoot = function comboboxRoot(Root) {
255
257
  if (e) {
256
258
  e.stopPropagation();
257
259
  }
258
- var checkedCopy = new Map(checked);
259
- var isCurrentChecked = checkedCopy.get(item.value);
260
- checkedCopy.forEach(function (_, key) {
261
- checkedCopy.set(key, false);
262
- });
263
- if (!isCurrentChecked) {
264
- checkedCopy.set(item.value, 'done');
265
- updateSingleAncestors(item, checkedCopy, 'dot');
266
- }
267
- setTextValue(isCurrentChecked ? '' : item.label);
260
+ var isCurrentChecked = checked.get(item.value);
268
261
  if (!alwaysOpened && closeAfterSelect) {
269
262
  dispatchPath({
270
263
  type: 'reset'
@@ -281,14 +274,15 @@ var comboboxRoot = function comboboxRoot(Root) {
281
274
  if (multiple && Array.isArray(value)) {
282
275
  if (value.length === 0) return [];
283
276
  if (isTargetAmount) {
284
- return ["\u0412\u044B\u0431\u0440\u0430\u043D\u043E ".concat(value.length)];
277
+ return ["\u0412\u044B\u0431\u0440\u0430\u043D\u043E ".concat(targetAmount || value.length)];
285
278
  }
286
- var mapper = renderValue && function (stringValue) {
279
+ var renderValueMapper = renderValue && function (stringValue) {
287
280
  return renderValue(valueToItemMap.get(stringValue));
288
- } || function (stringValue) {
281
+ };
282
+ var valueToItemMapper = function valueToItemMapper(stringValue) {
289
283
  return valueToItemMap.get(stringValue).label;
290
284
  };
291
- return value.map(mapper);
285
+ return value.map(renderValueMapper || valueToItemMapper);
292
286
  }
293
287
  return [];
294
288
  };
@@ -339,7 +333,7 @@ var comboboxRoot = function comboboxRoot(Root) {
339
333
  // В deps мы кладем именно outerValue и internalValue, а не просто value.
340
334
  // Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.
341
335
  // А переменную, содержащую сложные типы данных, нельзя помещать в deps.
342
- }, [outerValue, internalValue]);
336
+ }, [outerValue, internalValue, items]);
343
337
  return /*#__PURE__*/React.createElement(Root, {
344
338
  size: size,
345
339
  view: view,
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.js","sources":["../../../../src/components/Combobox/ComboboxNew/Combobox.tsx"],"sourcesContent":["import React, { forwardRef, useState, useReducer, useMemo, createContext, useLayoutEffect, useRef } from 'react';\nimport type { ChangeEvent } from 'react';\nimport { safeUseId, useForkRef } from '@salutejs/plasma-core';\n\nimport { RootProps } from '../../../engines';\nimport { isEmpty } from '../../../utils';\nimport { useOutsideClick } from '../../../hooks';\nimport { sizeToIconSize } from '../../Select/utils';\n\nimport { classes } from './Combobox.tokens';\nimport { FloatingPopover } from './FloatingPopover';\nimport { useKeyNavigation, getItemByFocused } from './hooks/useKeyboardNavigation';\nimport {\n initialItemsTransform,\n updateAncestors,\n updateDescendants,\n updateSingleAncestors,\n filterItems,\n getItemId,\n getInitialValue,\n} from './utils';\nimport { Inner, StyledTextField } from './ui';\nimport { pathReducer, focusedPathReducer } from './reducers';\nimport { getPathMap, getTreeMaps } from './hooks/getPathMaps';\nimport { Ul, base, StyledArrow, IconArrowWrapper, StyledEmptyState } from './Combobox.styles';\nimport type { ItemContext, ComboboxProps } from './Combobox.types';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport type { ItemOptionTransformed } from './ui/Inner/ui/Item/Item.types';\n\nexport const Context = createContext<ItemContext>({} as ItemContext);\n\n/**\n * Поле ввода с выпадающим списком и возможностью фильтрации и выбора элементов.\n */\nexport const comboboxRoot = (Root: RootProps<HTMLInputElement, Omit<ComboboxProps, 'items'>>) =>\n forwardRef<HTMLInputElement, ComboboxProps>((props, ref) => {\n const {\n multiple,\n value: outerValue,\n onChange: outerOnChange,\n isTargetAmount,\n items,\n placement = 'bottom-start',\n label,\n placeholder,\n helperText,\n contentLeft,\n textBefore,\n textAfter,\n variant = 'normal',\n listOverflow,\n listHeight,\n listWidth,\n portal,\n renderItem,\n view,\n size,\n labelPlacement,\n readOnly = false,\n disabled = false,\n alwaysOpened = false,\n filter,\n closeAfterSelect: outerCloseAfterSelect,\n renderValue,\n ...rest\n } = props;\n // Создаем структуры для быстрой работы с деревом\n const [valueToCheckedMap, valueToItemMap, labelToItemMap] = useMemo(() => getTreeMaps(items), [items]);\n\n const [textValue, setTextValue] = useState(valueToItemMap.get(outerValue as string)?.label || '');\n const [internalValue, setInternalValue] = useState<string | string[]>(multiple ? [] : '');\n\n const value =\n outerValue !== null && outerValue !== undefined\n ? getInitialValue(outerValue, valueToItemMap)\n : internalValue;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const floatingPopoverRef = useRef<HTMLDivElement>(null);\n const inputForkRef = useForkRef(inputRef, ref);\n const treeId = safeUseId();\n\n const transformedItems = useMemo(() => initialItemsTransform(items || []), [items]);\n\n const filteredItems = filterItems(\n transformedItems,\n textValue,\n valueToItemMap.get(value as string)?.label as string,\n filter,\n );\n\n const [pathMap, focusedToValueMap] = useMemo(() => getPathMap(filteredItems), [filteredItems, textValue]);\n\n // Состояния дерева элементов\n const [path, dispatchPath] = useReducer(pathReducer, []);\n const [focusedPath, dispatchFocusedPath] = useReducer(focusedPathReducer, []);\n const [checked, setChecked] = useState(valueToCheckedMap);\n\n const isCurrentListOpen = alwaysOpened || Boolean(path[0]);\n const activeDescendantItemValue = getItemByFocused(focusedPath, focusedToValueMap)?.value || '';\n const withArrowInverse = isCurrentListOpen ? classes.arrowInverse : undefined;\n const closeAfterSelect = outerCloseAfterSelect ?? !multiple;\n\n // Логика работы при клике за пределами выпадающего списка\n const targetRef = useOutsideClick<HTMLUListElement>(() => {\n if (!isCurrentListOpen) {\n return;\n }\n\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n\n // Проверяем, отличается ли значение в инпуте от выбранного value после закрытия дропдауна.\n // Если изменилось, то возвращаем label выбранного айтема.\n // Если нет выбранного элемента, то стираем значение инпута.\n if (textValue !== value) {\n if (isEmpty(value)) {\n setTextValue('');\n } else {\n setTextValue(valueToItemMap.get(value as string)?.label || '');\n }\n }\n }, floatingPopoverRef);\n\n const onChange = (newValue: string | Array<string>) => {\n if (outerOnChange) {\n outerOnChange(newValue as any);\n }\n\n setInternalValue(newValue);\n };\n\n const handleClickArrow = () => {\n if (disabled || readOnly) {\n return;\n }\n\n if (isCurrentListOpen) {\n dispatchPath({ type: 'reset' });\n } else {\n dispatchPath({ type: 'opened_first_level' });\n }\n\n dispatchFocusedPath({ type: 'reset' });\n };\n\n // Обработчик изменения значения в инпуте\n const handleTextValueChange = (e: ChangeEvent<HTMLInputElement>) => {\n setTextValue(e.target.value);\n dispatchPath({ type: 'opened_first_level' });\n dispatchFocusedPath({ type: 'reset' });\n };\n\n // Обработчик чипов\n const handleChipsChange = (chipLabels: any[]) => {\n onChange(chipLabels.map((chipLabel) => labelToItemMap.get(chipLabel)!.value));\n };\n\n // Обработчик открытия/закрытия выпадающего списка\n const handleListToggle = (opened: boolean) => {\n if (disabled || readOnly) {\n return;\n }\n\n if (opened) {\n dispatchPath({ type: 'opened_first_level' });\n } else {\n dispatchFocusedPath({ type: 'reset' });\n dispatchPath({ type: 'reset' });\n }\n };\n\n // Обработчик выбора чекбоксов (только при multiple)\n const handleCheckboxChange = (item: ItemOptionTransformed) => {\n if (!multiple) {\n return;\n }\n\n const checkedCopy = new Map(checked);\n\n if (!checkedCopy.get(item.value)) {\n checkedCopy.set(item.value, true);\n updateDescendants(item, checkedCopy, true);\n } else {\n checkedCopy.set(item.value, false);\n updateDescendants(item, checkedCopy, false);\n }\n\n updateAncestors(item, checkedCopy);\n\n const newValues: Array<string> = [];\n\n valueToItemMap.forEach((item, key) => {\n if (checkedCopy.get(key)) {\n newValues.push(item.value);\n }\n });\n\n if (!alwaysOpened && closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(newValues);\n }\n\n // После выбора/снятия чекбокса скроллим к инпуту\n setTimeout(() => {\n if (inputRef.current) {\n inputRef.current.scrollIntoView({\n behavior: 'smooth',\n inline: 'start',\n });\n }\n }, 1);\n };\n\n // Обработчик клика по айтему выпадающего списка\n const handleItemClick = (item: ItemOptionTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (!isEmpty(item?.items)) {\n return;\n }\n\n if (multiple) {\n handleCheckboxChange(item);\n return;\n }\n\n if (e) {\n e.stopPropagation();\n }\n\n const checkedCopy = new Map(checked);\n\n const isCurrentChecked = checkedCopy.get(item.value);\n\n checkedCopy.forEach((_, key) => {\n checkedCopy.set(key, false);\n });\n\n if (!isCurrentChecked) {\n checkedCopy.set(item.value, 'done');\n updateSingleAncestors(item, checkedCopy, 'dot');\n }\n\n setTextValue(isCurrentChecked ? '' : item.label);\n\n if (!alwaysOpened && closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(isCurrentChecked ? '' : item.value);\n }\n };\n\n const getChips = (): string[] => {\n if (multiple && Array.isArray(value)) {\n if (value.length === 0) return [];\n\n if (isTargetAmount) {\n return [`Выбрано ${value.length}`];\n }\n\n const mapper =\n (renderValue && ((stringValue: string) => renderValue(valueToItemMap.get(stringValue)!))) ||\n ((stringValue: string) => valueToItemMap.get(stringValue)!.label);\n\n return value.map(mapper);\n }\n\n return [];\n };\n\n const handlePressDown = (item: ItemOptionTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (isEmpty(item.items)) {\n handleItemClick(item, e);\n } else if (multiple) {\n handleCheckboxChange(item);\n }\n };\n\n const { onKeyDown } = useKeyNavigation({\n focusedPath,\n dispatchFocusedPath,\n path,\n dispatchPath,\n pathMap,\n focusedToValueMap,\n handleListToggle,\n handlePressDown,\n multiselect: multiple,\n setTextValue,\n });\n\n // В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.\n // Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.\n useLayoutEffect(() => {\n const checkedCopy = new Map(checked);\n\n checkedCopy.forEach((_, key) => {\n checkedCopy.set(key, false);\n });\n\n if (!isEmpty(value)) {\n if (Array.isArray(value)) {\n value.forEach((val) => {\n checkedCopy.set(val, true);\n updateDescendants(valueToItemMap.get(val)!, checkedCopy, true);\n updateAncestors(valueToItemMap.get(val)!, checkedCopy);\n });\n } else {\n checkedCopy.set(value, 'done');\n updateSingleAncestors(valueToItemMap.get(value)!, checkedCopy, 'dot');\n }\n }\n\n setChecked(checkedCopy);\n\n setTextValue(valueToItemMap.get(outerValue as string)?.label || '');\n\n // В deps мы кладем именно outerValue и internalValue, а не просто value.\n // Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.\n // А переменную, содержащую сложные типы данных, нельзя помещать в deps.\n }, [outerValue, internalValue]);\n\n return (\n <Root size={size} view={view} labelPlacement={labelPlacement} disabled={disabled} readOnly={readOnly}>\n <div>\n <Context.Provider\n value={{\n focusedPath,\n checked,\n multiple,\n size,\n handleCheckboxChange,\n handleItemClick,\n variant,\n renderItem,\n valueToItemMap,\n treeId,\n }}\n >\n <FloatingPopover\n ref={floatingPopoverRef}\n opened={isCurrentListOpen}\n onToggle={(opened: boolean) => opened && handleListToggle(true)}\n placement={placement}\n portal={portal}\n target={(referenceRef) => (\n <StyledTextField\n ref={inputForkRef}\n inputWrapperRef={referenceRef}\n value={textValue}\n onChange={handleTextValueChange}\n size={size}\n view={view}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n label={label}\n placeholder={placeholder}\n contentLeft={contentLeft}\n contentRight={\n <IconArrowWrapper disabled={disabled} onClick={handleClickArrow}>\n <StyledArrow\n color=\"inherit\"\n size={sizeToIconSize(size)}\n className={withArrowInverse}\n />\n </IconArrowWrapper>\n }\n textBefore={textBefore}\n textAfter={textAfter}\n onKeyDown={onKeyDown}\n leftHelper={helperText}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls={`${treeId}_tree_level_1`}\n aria-expanded={isCurrentListOpen}\n aria-activedescendant={\n activeDescendantItemValue ? getItemId(treeId, activeDescendantItemValue) : ''\n }\n {...(multiple\n ? {\n enumerationType: 'chip',\n chips: getChips(),\n onChangeChips: handleChipsChange,\n }\n : { enumerationType: 'plain' })}\n {...rest}\n onEnterDisabled // Пропс для отключения обработчика Enter внутри Textfield\n />\n )}\n >\n <Root\n size={size}\n view={view}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n >\n <Ul\n role=\"tree\"\n id={`${treeId}_tree_level_1`}\n aria-multiselectable={Boolean(multiple)}\n listHeight={listHeight}\n listOverflow={listOverflow}\n listWidth={listWidth}\n ref={targetRef}\n >\n {isEmpty(filteredItems) ? (\n <StyledEmptyState\n className={classes.emptyStateWrapper}\n size={size}\n description=\"Ничего не найдено\"\n />\n ) : (\n filteredItems.map((item, index) => (\n <Inner\n key={`${index}/0`}\n item={item}\n currentLevel={0}\n path={path}\n dispatchPath={dispatchPath}\n index={index}\n listWidth={listWidth}\n />\n ))\n )}\n </Ul>\n </Root>\n </FloatingPopover>\n </Context.Provider>\n </div>\n </Root>\n );\n });\n\nexport const comboboxConfig = {\n name: 'Select',\n tag: 'div',\n layout: comboboxRoot,\n base,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n readOnly: {\n css: sizeCSS,\n },\n },\n defaults: {\n view: 'default',\n size: 'm',\n labelPlacement: 'outer',\n },\n};\n"],"names":["Context","createContext","comboboxRoot","Root","forwardRef","props","ref","_valueToItemMap$get","_valueToItemMap$get2","_getItemByFocused","multiple","outerValue","value","outerOnChange","onChange","isTargetAmount","items","_props$placement","placement","label","placeholder","helperText","contentLeft","textBefore","textAfter","_props$variant","variant","listOverflow","listHeight","listWidth","portal","renderItem","view","size","labelPlacement","_props$readOnly","readOnly","_props$disabled","disabled","_props$alwaysOpened","alwaysOpened","filter","outerCloseAfterSelect","closeAfterSelect","renderValue","rest","_objectWithoutProperties","_excluded","_useMemo","useMemo","getTreeMaps","_useMemo2","_slicedToArray","valueToCheckedMap","valueToItemMap","labelToItemMap","_useState","useState","get","_useState2","textValue","setTextValue","_useState3","_useState4","internalValue","setInternalValue","undefined","getInitialValue","inputRef","useRef","floatingPopoverRef","inputForkRef","useForkRef","treeId","safeUseId","transformedItems","initialItemsTransform","filteredItems","filterItems","_useMemo3","getPathMap","_useMemo4","pathMap","focusedToValueMap","_useReducer","useReducer","pathReducer","_useReducer2","path","dispatchPath","_useReducer3","focusedPathReducer","_useReducer4","focusedPath","dispatchFocusedPath","_useState5","_useState6","checked","setChecked","isCurrentListOpen","Boolean","activeDescendantItemValue","getItemByFocused","withArrowInverse","classes","arrowInverse","targetRef","useOutsideClick","type","isEmpty","_valueToItemMap$get3","newValue","handleClickArrow","handleTextValueChange","e","target","handleChipsChange","chipLabels","map","chipLabel","handleListToggle","opened","handleCheckboxChange","item","checkedCopy","Map","set","updateDescendants","updateAncestors","newValues","forEach","key","push","setTimeout","current","scrollIntoView","behavior","inline","handleItemClick","stopPropagation","isCurrentChecked","_","updateSingleAncestors","getChips","Array","isArray","length","concat","mapper","stringValue","handlePressDown","_useKeyNavigation","useKeyNavigation","multiselect","onKeyDown","useLayoutEffect","_valueToItemMap$get4","val","React","createElement","Provider","FloatingPopover","onToggle","referenceRef","StyledTextField","_extends","inputWrapperRef","contentRight","IconArrowWrapper","onClick","StyledArrow","color","sizeToIconSize","className","leftHelper","role","getItemId","enumerationType","chips","onChangeChips","onEnterDisabled","Ul","id","StyledEmptyState","emptyStateWrapper","description","index","Inner","currentLevel","comboboxConfig","name","tag","layout","base","variations","css","viewCSS","sizeCSS","defaults"],"mappings":"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"}
1
+ {"version":3,"file":"Combobox.js","sources":["../../../../src/components/Combobox/ComboboxNew/Combobox.tsx"],"sourcesContent":["import React, { forwardRef, useState, useReducer, useMemo, createContext, useLayoutEffect, useRef } from 'react';\nimport type { ChangeEvent } from 'react';\nimport { safeUseId, useForkRef } from '@salutejs/plasma-core';\n\nimport { RootProps } from '../../../engines';\nimport { isEmpty } from '../../../utils';\nimport { useOutsideClick } from '../../../hooks';\nimport { sizeToIconSize } from '../../Select/utils';\n\nimport { classes } from './Combobox.tokens';\nimport { FloatingPopover } from './FloatingPopover';\nimport { useKeyNavigation, getItemByFocused } from './hooks/useKeyboardNavigation';\nimport {\n initialItemsTransform,\n updateAncestors,\n updateDescendants,\n updateSingleAncestors,\n filterItems,\n getItemId,\n getInitialValue,\n} from './utils';\nimport { Inner, StyledTextField } from './ui';\nimport { pathReducer, focusedPathReducer } from './reducers';\nimport { getPathMap, getTreeMaps } from './hooks/getPathMaps';\nimport { Ul, base, StyledArrow, IconArrowWrapper, StyledEmptyState } from './Combobox.styles';\nimport type { ItemContext, ComboboxProps } from './Combobox.types';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport type { ItemOptionTransformed } from './ui/Inner/ui/Item/Item.types';\n\nexport const Context = createContext<ItemContext>({} as ItemContext);\n\n/**\n * Поле ввода с выпадающим списком и возможностью фильтрации и выбора элементов.\n */\nexport const comboboxRoot = (Root: RootProps<HTMLInputElement, Omit<ComboboxProps, 'items'>>) =>\n forwardRef<HTMLInputElement, ComboboxProps>((props, ref) => {\n const {\n multiple,\n value: outerValue,\n onChange: outerOnChange,\n isTargetAmount,\n targetAmount,\n items,\n placement = 'bottom-start',\n label,\n placeholder,\n helperText,\n contentLeft,\n textBefore,\n textAfter,\n variant = 'normal',\n listOverflow,\n listHeight,\n listWidth,\n portal,\n renderItem,\n view,\n size,\n labelPlacement,\n readOnly = false,\n disabled = false,\n alwaysOpened = false,\n filter,\n closeAfterSelect: outerCloseAfterSelect,\n renderValue,\n ...rest\n } = props;\n const transformedItems = useMemo(() => initialItemsTransform(items || []), [items]);\n\n // Создаем структуры для быстрой работы с деревом\n const [valueToCheckedMap, valueToItemMap, labelToItemMap] = useMemo(() => getTreeMaps(transformedItems), [\n items,\n ]);\n\n const [textValue, setTextValue] = useState(valueToItemMap.get(outerValue as string)?.label || '');\n const [internalValue, setInternalValue] = useState<string | string[]>(multiple ? [] : '');\n\n const value =\n outerValue !== null && outerValue !== undefined\n ? getInitialValue(outerValue, valueToItemMap)\n : internalValue;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const floatingPopoverRef = useRef<HTMLDivElement>(null);\n const inputForkRef = useForkRef(inputRef, ref);\n const treeId = safeUseId();\n\n const filteredItems = filterItems(\n transformedItems,\n textValue,\n valueToItemMap.get(value as string)?.label as string,\n filter,\n );\n\n const [pathMap, focusedToValueMap] = useMemo(() => getPathMap(filteredItems), [filteredItems, textValue]);\n\n // Состояния дерева элементов\n const [path, dispatchPath] = useReducer(pathReducer, []);\n const [focusedPath, dispatchFocusedPath] = useReducer(focusedPathReducer, []);\n const [checked, setChecked] = useState(valueToCheckedMap);\n\n const isCurrentListOpen = alwaysOpened || Boolean(path[0]);\n const activeDescendantItemValue = getItemByFocused(focusedPath, focusedToValueMap)?.value || '';\n const withArrowInverse = isCurrentListOpen ? classes.arrowInverse : undefined;\n const closeAfterSelect = outerCloseAfterSelect ?? !multiple;\n\n // Логика работы при клике за пределами выпадающего списка\n const targetRef = useOutsideClick<HTMLUListElement>(() => {\n if (!isCurrentListOpen) {\n return;\n }\n\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n\n // Проверяем, отличается ли значение в инпуте от выбранного value после закрытия дропдауна.\n // Если изменилось, то возвращаем label выбранного айтема.\n // Если нет выбранного элемента, то стираем значение инпута.\n if (textValue !== value) {\n if (isEmpty(value)) {\n setTextValue('');\n } else {\n setTextValue(valueToItemMap.get(value as string)?.label || '');\n }\n }\n }, floatingPopoverRef);\n\n const onChange = (newValue: string | Array<string>) => {\n if (outerOnChange) {\n outerOnChange(newValue as any);\n }\n\n setInternalValue(newValue);\n };\n\n const handleClickArrow = () => {\n if (disabled || readOnly) {\n return;\n }\n\n if (isCurrentListOpen) {\n dispatchPath({ type: 'reset' });\n } else {\n dispatchPath({ type: 'opened_first_level' });\n }\n\n dispatchFocusedPath({ type: 'reset' });\n };\n\n // Обработчик изменения значения в инпуте\n const handleTextValueChange = (e: ChangeEvent<HTMLInputElement>) => {\n setTextValue(e.target.value);\n dispatchPath({ type: 'opened_first_level' });\n dispatchFocusedPath({ type: 'reset' });\n };\n\n // Обработчик чипов\n const handleChipsChange = (chipLabels: any[]) => {\n onChange(chipLabels.map((chipLabel) => labelToItemMap.get(chipLabel)!.value));\n };\n\n // Обработчик открытия/закрытия выпадающего списка\n const handleListToggle = (opened: boolean) => {\n if (disabled || readOnly) {\n return;\n }\n\n if (opened) {\n dispatchPath({ type: 'opened_first_level' });\n } else {\n dispatchFocusedPath({ type: 'reset' });\n dispatchPath({ type: 'reset' });\n }\n };\n\n // Обработчик выбора чекбоксов (только при multiple)\n const handleCheckboxChange = (item: ItemOptionTransformed) => {\n if (!multiple) {\n return;\n }\n\n const checkedCopy = new Map(checked);\n\n if (!checkedCopy.get(item.value)) {\n checkedCopy.set(item.value, true);\n updateDescendants(item, checkedCopy, true);\n } else {\n checkedCopy.set(item.value, false);\n updateDescendants(item, checkedCopy, false);\n }\n\n updateAncestors(item, checkedCopy);\n\n const newValues: Array<string> = [];\n\n valueToItemMap.forEach((item, key) => {\n if (checkedCopy.get(key)) {\n newValues.push(item.value);\n }\n });\n\n if (!alwaysOpened && closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(newValues);\n }\n\n // После выбора/снятия чекбокса скроллим к инпуту\n setTimeout(() => {\n if (inputRef.current) {\n inputRef.current.scrollIntoView({\n behavior: 'smooth',\n inline: 'start',\n });\n }\n }, 1);\n };\n\n // Обработчик клика по айтему выпадающего списка\n const handleItemClick = (item: ItemOptionTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (!isEmpty(item?.items)) {\n return;\n }\n\n if (multiple) {\n handleCheckboxChange(item);\n return;\n }\n\n if (e) {\n e.stopPropagation();\n }\n\n const isCurrentChecked = checked.get(item.value);\n\n if (!alwaysOpened && closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(isCurrentChecked ? '' : item.value);\n }\n };\n\n const getChips = (): string[] => {\n if (multiple && Array.isArray(value)) {\n if (value.length === 0) return [];\n\n if (isTargetAmount) {\n return [`Выбрано ${targetAmount || value.length}`];\n }\n\n const renderValueMapper =\n renderValue && ((stringValue: string) => renderValue(valueToItemMap.get(stringValue)!));\n const valueToItemMapper = (stringValue: string) => valueToItemMap.get(stringValue)!.label;\n\n return value.map(renderValueMapper || valueToItemMapper);\n }\n\n return [];\n };\n\n const handlePressDown = (item: ItemOptionTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (isEmpty(item.items)) {\n handleItemClick(item, e);\n } else if (multiple) {\n handleCheckboxChange(item);\n }\n };\n\n const { onKeyDown } = useKeyNavigation({\n focusedPath,\n dispatchFocusedPath,\n path,\n dispatchPath,\n pathMap,\n focusedToValueMap,\n handleListToggle,\n handlePressDown,\n multiselect: multiple,\n setTextValue,\n });\n\n // В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.\n // Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.\n useLayoutEffect(() => {\n const checkedCopy = new Map(checked);\n\n checkedCopy.forEach((_, key) => {\n checkedCopy.set(key, false);\n });\n\n if (!isEmpty(value)) {\n if (Array.isArray(value)) {\n value.forEach((val) => {\n checkedCopy.set(val, true);\n updateDescendants(valueToItemMap.get(val)!, checkedCopy, true);\n updateAncestors(valueToItemMap.get(val)!, checkedCopy);\n });\n } else {\n checkedCopy.set(value, 'done');\n updateSingleAncestors(valueToItemMap.get(value)!, checkedCopy, 'dot');\n }\n }\n\n setChecked(checkedCopy);\n\n setTextValue(valueToItemMap.get(outerValue as string)?.label || '');\n\n // В deps мы кладем именно outerValue и internalValue, а не просто value.\n // Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.\n // А переменную, содержащую сложные типы данных, нельзя помещать в deps.\n }, [outerValue, internalValue, items]);\n\n return (\n <Root size={size} view={view} labelPlacement={labelPlacement} disabled={disabled} readOnly={readOnly}>\n <div>\n <Context.Provider\n value={{\n focusedPath,\n checked,\n multiple,\n size,\n handleCheckboxChange,\n handleItemClick,\n variant,\n renderItem,\n valueToItemMap,\n treeId,\n }}\n >\n <FloatingPopover\n ref={floatingPopoverRef}\n opened={isCurrentListOpen}\n onToggle={(opened: boolean) => opened && handleListToggle(true)}\n placement={placement}\n portal={portal}\n target={(referenceRef) => (\n <StyledTextField\n ref={inputForkRef}\n inputWrapperRef={referenceRef}\n value={textValue}\n onChange={handleTextValueChange}\n size={size}\n view={view}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n label={label}\n placeholder={placeholder}\n contentLeft={contentLeft}\n contentRight={\n <IconArrowWrapper disabled={disabled} onClick={handleClickArrow}>\n <StyledArrow\n color=\"inherit\"\n size={sizeToIconSize(size)}\n className={withArrowInverse}\n />\n </IconArrowWrapper>\n }\n textBefore={textBefore}\n textAfter={textAfter}\n onKeyDown={onKeyDown}\n leftHelper={helperText}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls={`${treeId}_tree_level_1`}\n aria-expanded={isCurrentListOpen}\n aria-activedescendant={\n activeDescendantItemValue ? getItemId(treeId, activeDescendantItemValue) : ''\n }\n {...(multiple\n ? {\n enumerationType: 'chip',\n chips: getChips(),\n onChangeChips: handleChipsChange,\n }\n : { enumerationType: 'plain' })}\n {...rest}\n onEnterDisabled // Пропс для отключения обработчика Enter внутри Textfield\n />\n )}\n >\n <Root\n size={size}\n view={view}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n >\n <Ul\n role=\"tree\"\n id={`${treeId}_tree_level_1`}\n aria-multiselectable={Boolean(multiple)}\n listHeight={listHeight}\n listOverflow={listOverflow}\n listWidth={listWidth}\n ref={targetRef}\n >\n {isEmpty(filteredItems) ? (\n <StyledEmptyState\n className={classes.emptyStateWrapper}\n size={size}\n description=\"Ничего не найдено\"\n />\n ) : (\n filteredItems.map((item, index) => (\n <Inner\n key={`${index}/0`}\n item={item}\n currentLevel={0}\n path={path}\n dispatchPath={dispatchPath}\n index={index}\n listWidth={listWidth}\n />\n ))\n )}\n </Ul>\n </Root>\n </FloatingPopover>\n </Context.Provider>\n </div>\n </Root>\n );\n });\n\nexport const comboboxConfig = {\n name: 'Select',\n tag: 'div',\n layout: comboboxRoot,\n base,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n readOnly: {\n css: sizeCSS,\n },\n },\n defaults: {\n view: 'default',\n size: 'm',\n labelPlacement: 'outer',\n },\n};\n"],"names":["Context","createContext","comboboxRoot","Root","forwardRef","props","ref","_valueToItemMap$get","_valueToItemMap$get2","_getItemByFocused","multiple","outerValue","value","outerOnChange","onChange","isTargetAmount","targetAmount","items","_props$placement","placement","label","placeholder","helperText","contentLeft","textBefore","textAfter","_props$variant","variant","listOverflow","listHeight","listWidth","portal","renderItem","view","size","labelPlacement","_props$readOnly","readOnly","_props$disabled","disabled","_props$alwaysOpened","alwaysOpened","filter","outerCloseAfterSelect","closeAfterSelect","renderValue","rest","_objectWithoutProperties","_excluded","transformedItems","useMemo","initialItemsTransform","_useMemo","getTreeMaps","_useMemo2","_slicedToArray","valueToCheckedMap","valueToItemMap","labelToItemMap","_useState","useState","get","_useState2","textValue","setTextValue","_useState3","_useState4","internalValue","setInternalValue","undefined","getInitialValue","inputRef","useRef","floatingPopoverRef","inputForkRef","useForkRef","treeId","safeUseId","filteredItems","filterItems","_useMemo3","getPathMap","_useMemo4","pathMap","focusedToValueMap","_useReducer","useReducer","pathReducer","_useReducer2","path","dispatchPath","_useReducer3","focusedPathReducer","_useReducer4","focusedPath","dispatchFocusedPath","_useState5","_useState6","checked","setChecked","isCurrentListOpen","Boolean","activeDescendantItemValue","getItemByFocused","withArrowInverse","classes","arrowInverse","targetRef","useOutsideClick","type","isEmpty","_valueToItemMap$get3","newValue","handleClickArrow","handleTextValueChange","e","target","handleChipsChange","chipLabels","map","chipLabel","handleListToggle","opened","handleCheckboxChange","item","checkedCopy","Map","set","updateDescendants","updateAncestors","newValues","forEach","key","push","setTimeout","current","scrollIntoView","behavior","inline","handleItemClick","stopPropagation","isCurrentChecked","getChips","Array","isArray","length","concat","renderValueMapper","stringValue","valueToItemMapper","handlePressDown","_useKeyNavigation","useKeyNavigation","multiselect","onKeyDown","useLayoutEffect","_valueToItemMap$get4","_","val","updateSingleAncestors","React","createElement","Provider","FloatingPopover","onToggle","referenceRef","StyledTextField","_extends","inputWrapperRef","contentRight","IconArrowWrapper","onClick","StyledArrow","color","sizeToIconSize","className","leftHelper","role","getItemId","enumerationType","chips","onChangeChips","onEnterDisabled","Ul","id","StyledEmptyState","emptyStateWrapper","description","index","Inner","currentLevel","comboboxConfig","name","tag","layout","base","variations","css","viewCSS","sizeCSS","defaults"],"mappings":"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"}
@@ -5,13 +5,7 @@ var getInitialValue = function getInitialValue(outerValue, valueToItemMap) {
5
5
  if (outerValue.length === 0) {
6
6
  return [];
7
7
  }
8
- var updatedValue = [];
9
- outerValue.forEach(function (value) {
10
- if (valueToItemMap.has(value)) {
11
- updatedValue.push(value);
12
- }
13
- });
14
- return updatedValue;
8
+ return outerValue.filter(valueToItemMap.has.bind(valueToItemMap));
15
9
  }
16
10
  if (valueToItemMap.has(outerValue)) {
17
11
  return outerValue;
@@ -1 +1 @@
1
- {"version":3,"file":"getInitialValue.js","sources":["../../../../../src/components/Combobox/ComboboxNew/utils/getInitialValue.ts"],"sourcesContent":["import { ComboboxProps } from '../Combobox.types';\nimport { ValueToItemMapType } from '../hooks/getPathMaps';\n\n// Утилита предназначена для фильтрации элементов в value, которые отсутствуют в items.\n// Эти элементы игнорируются и не участвуют в дальнейшей работе компонента.\nexport const getInitialValue = (\n outerValue: NonNullable<ComboboxProps['value']>,\n valueToItemMap: ValueToItemMapType,\n) => {\n if (Array.isArray(outerValue)) {\n if (outerValue.length === 0) {\n return [];\n }\n\n const updatedValue: string[] = [];\n\n outerValue.forEach((value) => {\n if (valueToItemMap.has(value)) {\n updatedValue.push(value);\n }\n });\n\n return updatedValue;\n }\n\n if (valueToItemMap.has(outerValue)) {\n return outerValue;\n }\n\n return '';\n};\n"],"names":["getInitialValue","outerValue","valueToItemMap","Array","isArray","length","updatedValue","forEach","value","has","push"],"mappings":"AAGA;AACA;AACO,IAAMA,eAAe,GAAG,SAAlBA,eAAeA,CACxBC,UAA+C,EAC/CC,cAAkC,EACjC;AACD,EAAA,IAAIC,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,EAAE;AAC3B,IAAA,IAAIA,UAAU,CAACI,MAAM,KAAK,CAAC,EAAE;AACzB,MAAA,OAAO,EAAE,CAAA;AACb,KAAA;IAEA,IAAMC,YAAsB,GAAG,EAAE,CAAA;AAEjCL,IAAAA,UAAU,CAACM,OAAO,CAAC,UAACC,KAAK,EAAK;AAC1B,MAAA,IAAIN,cAAc,CAACO,GAAG,CAACD,KAAK,CAAC,EAAE;AAC3BF,QAAAA,YAAY,CAACI,IAAI,CAACF,KAAK,CAAC,CAAA;AAC5B,OAAA;AACJ,KAAC,CAAC,CAAA;AAEF,IAAA,OAAOF,YAAY,CAAA;AACvB,GAAA;AAEA,EAAA,IAAIJ,cAAc,CAACO,GAAG,CAACR,UAAU,CAAC,EAAE;AAChC,IAAA,OAAOA,UAAU,CAAA;AACrB,GAAA;AAEA,EAAA,OAAO,EAAE,CAAA;AACb;;;;"}
1
+ {"version":3,"file":"getInitialValue.js","sources":["../../../../../src/components/Combobox/ComboboxNew/utils/getInitialValue.ts"],"sourcesContent":["import { ComboboxProps } from '../Combobox.types';\nimport { ValueToItemMapType } from '../hooks/getPathMaps';\n\n// Утилита предназначена для фильтрации элементов в value, которые отсутствуют в items.\n// Эти элементы игнорируются и не участвуют в дальнейшей работе компонента.\nexport const getInitialValue = (\n outerValue: NonNullable<ComboboxProps['value']>,\n valueToItemMap: ValueToItemMapType,\n) => {\n if (Array.isArray(outerValue)) {\n if (outerValue.length === 0) {\n return [];\n }\n\n return outerValue.filter(valueToItemMap.has.bind(valueToItemMap));\n }\n\n if (valueToItemMap.has(outerValue)) {\n return outerValue;\n }\n\n return '';\n};\n"],"names":["getInitialValue","outerValue","valueToItemMap","Array","isArray","length","filter","has","bind"],"mappings":"AAGA;AACA;AACO,IAAMA,eAAe,GAAG,SAAlBA,eAAeA,CACxBC,UAA+C,EAC/CC,cAAkC,EACjC;AACD,EAAA,IAAIC,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,EAAE;AAC3B,IAAA,IAAIA,UAAU,CAACI,MAAM,KAAK,CAAC,EAAE;AACzB,MAAA,OAAO,EAAE,CAAA;AACb,KAAA;AAEA,IAAA,OAAOJ,UAAU,CAACK,MAAM,CAACJ,cAAc,CAACK,GAAG,CAACC,IAAI,CAACN,cAAc,CAAC,CAAC,CAAA;AACrE,GAAA;AAEA,EAAA,IAAIA,cAAc,CAACK,GAAG,CAACN,UAAU,CAAC,EAAE;AAChC,IAAA,OAAOA,UAAU,CAAA;AACrB,GAAA;AAEA,EAAA,OAAO,EAAE,CAAA;AACb;;;;"}