@salutejs/plasma-new-hope 0.340.0-canary.2305.18873573377.0 → 0.340.0-canary.2314.18974837629.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.
Files changed (128) hide show
  1. package/cjs/components/Combobox/ComboboxNew/Combobox.css +19 -0
  2. package/cjs/components/Combobox/ComboboxNew/Combobox.js +58 -11
  3. package/cjs/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
  4. package/cjs/components/Combobox/ComboboxNew/Combobox.tokens.js +2 -0
  5. package/cjs/components/Combobox/ComboboxNew/Combobox.tokens.js.map +1 -1
  6. package/cjs/components/Combobox/ComboboxNew/hooks/getPathMaps.js +8 -2
  7. package/cjs/components/Combobox/ComboboxNew/hooks/getPathMaps.js.map +1 -1
  8. package/cjs/components/Combobox/ComboboxNew/reducers/treePathReducer.js +123 -0
  9. package/cjs/components/Combobox/ComboboxNew/reducers/treePathReducer.js.map +1 -0
  10. package/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.css +57 -0
  11. package/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js +96 -0
  12. package/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js.map +1 -0
  13. package/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.styles.js +30 -0
  14. package/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.styles.js.map +1 -0
  15. package/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.styles_1auklgl.css +2 -0
  16. package/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.css +54 -0
  17. package/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js +127 -0
  18. package/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js.map +1 -0
  19. package/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.styles.js +205 -0
  20. package/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.styles.js.map +1 -0
  21. package/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.styles_7nhjnm.css +15 -0
  22. package/cjs/index.css +19 -0
  23. package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.js +50 -10
  24. package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.tokens.js +2 -0
  25. package/emotion/cjs/components/Combobox/ComboboxNew/hooks/getPathMaps.js +35 -3
  26. package/emotion/cjs/components/Combobox/ComboboxNew/reducers/index.js +1 -0
  27. package/emotion/cjs/components/Combobox/ComboboxNew/reducers/treePathReducer.js +140 -0
  28. package/emotion/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js +126 -0
  29. package/emotion/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.styles.js +36 -0
  30. package/emotion/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.types.js +4 -0
  31. package/emotion/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js +148 -0
  32. package/emotion/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.styles.js +183 -0
  33. package/emotion/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.types.js +4 -0
  34. package/emotion/cjs/components/Combobox/ComboboxNew/ui/index.js +1 -0
  35. package/emotion/cjs/examples/components/Combobox/Combobox.config.js +15 -15
  36. package/emotion/cjs/examples/components/Combobox/Combobox.js +0 -15
  37. package/emotion/es/components/Combobox/ComboboxNew/Combobox.js +52 -12
  38. package/emotion/es/components/Combobox/ComboboxNew/Combobox.tokens.js +2 -0
  39. package/emotion/es/components/Combobox/ComboboxNew/hooks/getPathMaps.js +35 -3
  40. package/emotion/es/components/Combobox/ComboboxNew/reducers/index.js +1 -0
  41. package/emotion/es/components/Combobox/ComboboxNew/reducers/treePathReducer.js +123 -0
  42. package/emotion/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js +75 -0
  43. package/emotion/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.styles.js +13 -0
  44. package/emotion/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.types.js +1 -0
  45. package/emotion/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js +97 -0
  46. package/emotion/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.styles.js +119 -0
  47. package/emotion/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.types.js +1 -0
  48. package/emotion/es/components/Combobox/ComboboxNew/ui/index.js +1 -0
  49. package/emotion/es/examples/components/Combobox/Combobox.config.js +15 -15
  50. package/es/components/Combobox/ComboboxNew/Combobox.css +19 -0
  51. package/es/components/Combobox/ComboboxNew/Combobox.js +59 -12
  52. package/es/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
  53. package/es/components/Combobox/ComboboxNew/Combobox.tokens.js +2 -0
  54. package/es/components/Combobox/ComboboxNew/Combobox.tokens.js.map +1 -1
  55. package/es/components/Combobox/ComboboxNew/hooks/getPathMaps.js +8 -2
  56. package/es/components/Combobox/ComboboxNew/hooks/getPathMaps.js.map +1 -1
  57. package/es/components/Combobox/ComboboxNew/reducers/treePathReducer.js +118 -0
  58. package/es/components/Combobox/ComboboxNew/reducers/treePathReducer.js.map +1 -0
  59. package/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.css +57 -0
  60. package/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js +88 -0
  61. package/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js.map +1 -0
  62. package/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.styles.js +25 -0
  63. package/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.styles.js.map +1 -0
  64. package/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.styles_1auklgl.css +2 -0
  65. package/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.css +54 -0
  66. package/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js +119 -0
  67. package/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js.map +1 -0
  68. package/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.styles.js +187 -0
  69. package/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.styles.js.map +1 -0
  70. package/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.styles_7nhjnm.css +15 -0
  71. package/es/index.css +19 -0
  72. package/package.json +4 -4
  73. package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.js +50 -10
  74. package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.tokens.js +2 -0
  75. package/styled-components/cjs/components/Combobox/ComboboxNew/hooks/getPathMaps.js +35 -3
  76. package/styled-components/cjs/components/Combobox/ComboboxNew/reducers/index.js +1 -0
  77. package/styled-components/cjs/components/Combobox/ComboboxNew/reducers/treePathReducer.js +140 -0
  78. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js +126 -0
  79. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.styles.js +50 -0
  80. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.types.js +4 -0
  81. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js +148 -0
  82. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.styles.js +296 -0
  83. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.types.js +4 -0
  84. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/index.js +1 -0
  85. package/styled-components/cjs/examples/components/Combobox/Combobox.config.js +12 -4
  86. package/styled-components/es/components/Combobox/ComboboxNew/Combobox.js +52 -12
  87. package/styled-components/es/components/Combobox/ComboboxNew/Combobox.tokens.js +2 -0
  88. package/styled-components/es/components/Combobox/ComboboxNew/hooks/getPathMaps.js +35 -3
  89. package/styled-components/es/components/Combobox/ComboboxNew/reducers/index.js +1 -0
  90. package/styled-components/es/components/Combobox/ComboboxNew/reducers/treePathReducer.js +123 -0
  91. package/styled-components/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js +75 -0
  92. package/styled-components/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.styles.js +27 -0
  93. package/styled-components/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.types.js +1 -0
  94. package/styled-components/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js +97 -0
  95. package/styled-components/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.styles.js +232 -0
  96. package/styled-components/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.types.js +1 -0
  97. package/styled-components/es/components/Combobox/ComboboxNew/ui/index.js +1 -0
  98. package/styled-components/es/examples/components/Combobox/Combobox.config.js +12 -4
  99. package/types/components/Combobox/ComboboxNew/Combobox.d.ts.map +1 -1
  100. package/types/components/Combobox/ComboboxNew/Combobox.tokens.d.ts +2 -0
  101. package/types/components/Combobox/ComboboxNew/Combobox.tokens.d.ts.map +1 -1
  102. package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts +17 -3
  103. package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts.map +1 -1
  104. package/types/components/Combobox/ComboboxNew/hooks/getPathMaps.d.ts +2 -1
  105. package/types/components/Combobox/ComboboxNew/hooks/getPathMaps.d.ts.map +1 -1
  106. package/types/components/Combobox/ComboboxNew/reducers/index.d.ts +1 -0
  107. package/types/components/Combobox/ComboboxNew/reducers/index.d.ts.map +1 -1
  108. package/types/components/Combobox/ComboboxNew/reducers/treePathReducer.d.ts +18 -0
  109. package/types/components/Combobox/ComboboxNew/reducers/treePathReducer.d.ts.map +1 -0
  110. package/types/components/Combobox/ComboboxNew/ui/TreeList/TreeList.d.ts +4 -0
  111. package/types/components/Combobox/ComboboxNew/ui/TreeList/TreeList.d.ts.map +1 -0
  112. package/types/components/Combobox/ComboboxNew/ui/TreeList/TreeList.styles.d.ts +6 -0
  113. package/types/components/Combobox/ComboboxNew/ui/TreeList/TreeList.styles.d.ts.map +1 -0
  114. package/types/components/Combobox/ComboboxNew/ui/TreeList/TreeList.types.d.ts +11 -0
  115. package/types/components/Combobox/ComboboxNew/ui/TreeList/TreeList.types.d.ts.map +1 -0
  116. package/types/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.d.ts +4 -0
  117. package/types/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.d.ts.map +1 -0
  118. package/types/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.styles.d.ts +62 -0
  119. package/types/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.styles.d.ts.map +1 -0
  120. package/types/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.types.d.ts +6 -0
  121. package/types/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.types.d.ts.map +1 -0
  122. package/types/components/Combobox/ComboboxNew/ui/index.d.ts +1 -0
  123. package/types/components/Combobox/ComboboxNew/ui/index.d.ts.map +1 -1
  124. package/types/components/Select/ui/TreeList/ui/Item/Item.types.d.ts +0 -8
  125. package/types/components/Select/ui/TreeList/ui/Item/Item.types.d.ts.map +1 -1
  126. package/types/examples/components/Combobox/Combobox.config.d.ts.map +1 -1
  127. package/types/examples/components/Combobox/Combobox.d.ts +48 -0
  128. package/types/examples/components/Combobox/Combobox.d.ts.map +1 -1
@@ -206,7 +206,7 @@ function _unsupported_iterable_to_array(o, minLen) {
206
206
  var comboboxRoot = function(Root) {
207
207
  return /*#__PURE__*/ (0, _react.forwardRef)(function(props, ref) {
208
208
  var _getItemByFocused;
209
- 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, _props_mode = props.mode, mode = _props_mode === void 0 ? 'default' : _props_mode, _props_chipClickArea = props.chipClickArea, chipClickArea = _props_chipClickArea === void 0 ? 'full' : _props_chipClickArea, // @ts-ignore
209
+ 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_treeView = props.treeView, treeView = _props_treeView === void 0 ? false : _props_treeView, _props_arrowPlacement = props.arrowPlacement, arrowPlacement = _props_arrowPlacement === void 0 ? 'left' : _props_arrowPlacement, _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, _props_mode = props.mode, mode = _props_mode === void 0 ? 'default' : _props_mode, _props_chipClickArea = props.chipClickArea, chipClickArea = _props_chipClickArea === void 0 ? 'full' : _props_chipClickArea, // @ts-ignore
210
210
  _offset = props._offset, rest = _object_without_properties(props, [
211
211
  "name",
212
212
  "multiple",
@@ -216,6 +216,8 @@ var comboboxRoot = function(Root) {
216
216
  "isTargetAmount",
217
217
  "targetAmount",
218
218
  "items",
219
+ "treeView",
220
+ "arrowPlacement",
219
221
  "placement",
220
222
  "label",
221
223
  "placeholder",
@@ -264,7 +266,7 @@ var comboboxRoot = function(Root) {
264
266
  return (0, _getPathMaps.getTreeMaps)(transformedItems);
265
267
  }, [
266
268
  items
267
- ]), 2), valueToCheckedMap = _useMemo[0], valueToItemMap = _useMemo[1];
269
+ ]), 3), valueToCheckedMap = _useMemo[0], valueToItemMap = _useMemo[1], valueToPathMap = _useMemo[2];
268
270
  var _useState = _sliced_to_array((0, _react.useState)((0, _utils2.getTextValue)(multiple, outerValue, valueToItemMap, renderValue)), 2), textValue = _useState[0], setTextValue = _useState[1];
269
271
  var _useState1 = _sliced_to_array((0, _react.useState)(multiple ? [] : ''), 2), internalValue = _useState1[0], setInternalValue = _useState1[1];
270
272
  var value = outerValue !== null && outerValue !== undefined ? outerValue : internalValue;
@@ -294,6 +296,7 @@ var comboboxRoot = function(Root) {
294
296
  var _useReducer = _sliced_to_array((0, _react.useReducer)(_reducers.pathReducer, initialPath), 2), path = _useReducer[0], dispatchPath = _useReducer[1];
295
297
  var _useReducer1 = _sliced_to_array((0, _react.useReducer)(_reducers.focusedPathReducer, []), 2), focusedPath = _useReducer1[0], dispatchFocusedPath = _useReducer1[1];
296
298
  var _useState2 = _sliced_to_array((0, _react.useState)(valueToCheckedMap), 2), checked = _useState2[0], setChecked = _useState2[1];
299
+ var _useReducer2 = _sliced_to_array((0, _react.useReducer)(_reducers.treePathReducer, {}), 2), treePath = _useReducer2[0], dispatchTreePath = _useReducer2[1];
297
300
  var isCurrentListOpen = Boolean(path[0]);
298
301
  var activeDescendantItemValue = ((_getItemByFocused = (0, _useKeyboardNavigation.getItemByFocused)(focusedPath, focusedToValueMap)) === null || _getItemByFocused === void 0 ? void 0 : _getItemByFocused.value) || '';
299
302
  var withArrowInverse = isCurrentListOpen ? _Comboboxtokens.classes.arrowInverse : undefined;
@@ -378,6 +381,9 @@ var comboboxRoot = function(Root) {
378
381
  dispatchPath({
379
382
  type: 'reset'
380
383
  });
384
+ dispatchTreePath({
385
+ type: 'reset'
386
+ });
381
387
  // Скроллим чипы к левому краю при закрытии компонента
382
388
  var el = rootRef === null || rootRef === void 0 ? void 0 : (_rootRef_current = rootRef.current) === null || _rootRef_current === void 0 ? void 0 : _rootRef_current.querySelector('.input-scrollable-wrapper');
383
389
  if (multiple && value.length > 0 && el) {
@@ -441,6 +447,9 @@ var comboboxRoot = function(Root) {
441
447
  dispatchFocusedPath({
442
448
  type: 'reset'
443
449
  });
450
+ dispatchTreePath({
451
+ type: 'reset'
452
+ });
444
453
  }
445
454
  if (onChange) {
446
455
  onChange(newValues, item);
@@ -466,6 +475,9 @@ var comboboxRoot = function(Root) {
466
475
  dispatchFocusedPath({
467
476
  type: 'reset'
468
477
  });
478
+ dispatchTreePath({
479
+ type: 'reset'
480
+ });
469
481
  }
470
482
  // Закрываем список, если элемент уже выбран.
471
483
  if (mode === 'radio' && isCurrentChecked) {
@@ -596,6 +608,23 @@ var comboboxRoot = function(Root) {
596
608
  }, [
597
609
  defaultValue
598
610
  ]);
611
+ // Эффект для раскрытия дерева при поиске.
612
+ (0, _react.useLayoutEffect)(function() {
613
+ if (treeView) {
614
+ if (textValue === '') {
615
+ dispatchTreePath({
616
+ type: 'reset'
617
+ });
618
+ } else {
619
+ dispatchTreePath({
620
+ type: 'expand_all',
621
+ value: filteredItems
622
+ });
623
+ }
624
+ }
625
+ }, [
626
+ textValue
627
+ ]);
599
628
  return /*#__PURE__*/ _react.default.createElement(Root, {
600
629
  size: size,
601
630
  view: view,
@@ -628,7 +657,11 @@ var comboboxRoot = function(Root) {
628
657
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
629
658
  // @ts-ignore
630
659
  // eslint-disable-next-line no-underscore-dangle
631
- _checkboxAppearance: rest._checkboxAppearance
660
+ _checkboxAppearance: rest._checkboxAppearance,
661
+ treePath: treePath,
662
+ dispatchTreePath: dispatchTreePath,
663
+ arrowPlacement: arrowPlacement,
664
+ valueToPathMap: valueToPathMap
632
665
  }
633
666
  }, /*#__PURE__*/ _react.default.createElement(_FloatingPopover.FloatingPopover, {
634
667
  ref: floatingPopoverRef,
@@ -694,7 +727,18 @@ var comboboxRoot = function(Root) {
694
727
  disabled: disabled,
695
728
  readOnly: readOnly,
696
729
  name: name
697
- }, /*#__PURE__*/ _react.default.createElement(_Comboboxstyles.ListWrapper, {
730
+ }, (0, _utils.isEmpty)(filteredItems) ? /*#__PURE__*/ _react.default.createElement(_Comboboxstyles.StyledEmptyState, {
731
+ className: _Comboboxtokens.classes.emptyStateWrapper,
732
+ size: size,
733
+ description: emptyStateDescription || 'Ничего не найдено'
734
+ }) : /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, treeView ? /*#__PURE__*/ _react.default.createElement(_ui.TreeList, {
735
+ items: filteredItems,
736
+ listMaxHeight: listMaxHeight || listHeight,
737
+ onScroll: virtual ? undefined : onScroll,
738
+ virtual: virtual,
739
+ beforeList: beforeList,
740
+ afterList: afterList
741
+ }) : /*#__PURE__*/ _react.default.createElement(_Comboboxstyles.ListWrapper, {
698
742
  ref: listWrapperRef,
699
743
  listWidth: listWidth
700
744
  }, /*#__PURE__*/ _react.default.createElement(_Comboboxstyles.Ul, {
@@ -704,11 +748,7 @@ var comboboxRoot = function(Root) {
704
748
  listMaxHeight: listMaxHeight || listHeight,
705
749
  virtual: virtual,
706
750
  onScroll: virtual ? undefined : onScroll
707
- }, beforeList, (0, _utils.isEmpty)(filteredItems) ? /*#__PURE__*/ _react.default.createElement(_Comboboxstyles.StyledEmptyState, {
708
- className: _Comboboxtokens.classes.emptyStateWrapper,
709
- size: size,
710
- description: emptyStateDescription || 'Ничего не найдено'
711
- }) : /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, props.multiple && props.selectAllOptions && // TODO: #2004
751
+ }, beforeList, props.multiple && props.selectAllOptions && // TODO: #2004
712
752
  /*#__PURE__*/ _react.default.createElement(_ui.SelectAll, {
713
753
  selectAllOptions: props.selectAllOptions,
714
754
  variant: variant
@@ -727,7 +767,7 @@ var comboboxRoot = function(Root) {
727
767
  listWidth: listWidth,
728
768
  portal: listWrapperRef
729
769
  });
730
- })), afterList)))))));
770
+ }), afterList))))))));
731
771
  });
732
772
  };
733
773
  var comboboxConfig = {
@@ -54,6 +54,8 @@ var tokens = {
54
54
  itemIconMargin: '--plasma-combobox-item-icon-margin',
55
55
  itemBackgroundHover: '--plasma-combobox-item-background-hover',
56
56
  itemIconColor: '--plasma-combobox-item-icon-color',
57
+ itemGap: '--plasma-select-item-gap',
58
+ itemTreeOffsetWidth: '--plasma-select-item-tree-offset-width',
57
59
  cellPadding: '--plasma-combobox-cell-padding',
58
60
  cellPaddingLeftContent: '--plasma-combobox-cell-padding-left-content',
59
61
  cellPaddingContent: '--plasma-combobox-cell-padding-content',
@@ -17,6 +17,31 @@ _export(exports, {
17
17
  }
18
18
  });
19
19
  var _utils = require("../../../../utils");
20
+ function _array_like_to_array(arr, len) {
21
+ if (len == null || len > arr.length) len = arr.length;
22
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
23
+ return arr2;
24
+ }
25
+ function _array_without_holes(arr) {
26
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
27
+ }
28
+ function _iterable_to_array(iter) {
29
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
30
+ }
31
+ function _non_iterable_spread() {
32
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
33
+ }
34
+ function _to_consumable_array(arr) {
35
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
36
+ }
37
+ function _unsupported_iterable_to_array(o, minLen) {
38
+ if (!o) return;
39
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
40
+ var n = Object.prototype.toString.call(o).slice(8, -1);
41
+ if (n === "Object" && o.constructor) n = o.constructor.name;
42
+ if (n === "Map" || n === "Set") return Array.from(n);
43
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
44
+ }
20
45
  var getPathMap = function(items) {
21
46
  var pathMap = new Map();
22
47
  var focusedToValueMap = new Map();
@@ -42,22 +67,29 @@ var getPathMap = function(items) {
42
67
  var getTreeMaps = function(items) {
43
68
  var valueToCheckedMap = new Map();
44
69
  var valueToItemMap = new Map();
70
+ var valueToPathMap = new Map();
45
71
  var rec = function(items) {
46
- var prevIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : '';
72
+ var prevIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : '', path = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
47
73
  items === null || items === void 0 ? void 0 : items.forEach(function(item, index) {
48
74
  var value = item.value, innerItems = item.items;
49
75
  var currIndex = "".concat(prevIndex, "/").concat(index).replace(/^(\/)/, '');
50
76
  valueToCheckedMap.set(value, false);
77
+ valueToPathMap.set(value.toString(), _to_consumable_array(path).concat([
78
+ value.toString()
79
+ ]));
51
80
  if ((0, _utils.isEmpty)(innerItems) || !innerItems) {
52
81
  valueToItemMap.set(value, item);
53
82
  } else {
54
- rec(innerItems, currIndex);
83
+ rec(innerItems, currIndex, _to_consumable_array(path).concat([
84
+ value.toString()
85
+ ]));
55
86
  }
56
87
  });
57
88
  };
58
89
  rec(items);
59
90
  return [
60
91
  valueToCheckedMap,
61
- valueToItemMap
92
+ valueToItemMap,
93
+ valueToPathMap
62
94
  ];
63
95
  };
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  _export_star(require("./pathReducer"), exports);
6
6
  _export_star(require("./focusedPathReducer"), exports);
7
+ _export_star(require("./treePathReducer"), exports);
7
8
  function _export_star(from, to) {
8
9
  Object.keys(from).forEach(function(k) {
9
10
  if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get keyExists () {
13
+ return keyExists;
14
+ },
15
+ get treePathReducer () {
16
+ return treePathReducer;
17
+ }
18
+ });
19
+ var _utils = require("../../../../utils");
20
+ function _type_of(obj) {
21
+ "@swc/helpers - typeof";
22
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
23
+ }
24
+ var keyExists = function(obj, path) {
25
+ if ((typeof obj === "undefined" ? "undefined" : _type_of(obj)) !== 'object' || obj === null || !Array.isArray(path)) {
26
+ return false;
27
+ }
28
+ var current = obj;
29
+ for(var i = 0; i < path.length; i++){
30
+ var key = path[i];
31
+ if (current === null || (typeof current === "undefined" ? "undefined" : _type_of(current)) !== 'object' || !(key in current)) {
32
+ return false;
33
+ }
34
+ current = current[key];
35
+ }
36
+ return true;
37
+ };
38
+ function createObjectAtPath(obj, path) {
39
+ if ((typeof obj === "undefined" ? "undefined" : _type_of(obj)) !== 'object' || obj === null) {
40
+ return;
41
+ }
42
+ var current = obj;
43
+ for(var i = 0; i < path.length; i++){
44
+ var key = path[i];
45
+ if (i === path.length - 1) {
46
+ current[key] = {};
47
+ break;
48
+ }
49
+ if (current[key] === undefined || current[key] === null) {
50
+ current[key] = {};
51
+ }
52
+ current = current[key];
53
+ }
54
+ return obj;
55
+ }
56
+ function removeObjectAtPath(obj, path) {
57
+ if (path.length === 0) {
58
+ return obj;
59
+ }
60
+ var current = obj;
61
+ for(var i = 0; i < path.length; i++){
62
+ var key = path[i];
63
+ if (current === null || (typeof current === "undefined" ? "undefined" : _type_of(current)) !== 'object' || !(key in current)) {
64
+ return obj;
65
+ }
66
+ if (i === path.length - 1) {
67
+ delete current[key];
68
+ break;
69
+ }
70
+ current = current[key];
71
+ }
72
+ return obj;
73
+ }
74
+ // Утилита, которая получается на вход список отфильтрованных элементов
75
+ // и возвращает объект путей раскрытых элементов дерева.
76
+ function generateNestedTreePathFromFilteredItems(items) {
77
+ var result = {};
78
+ var buildTree = function(currentItems, currentLevel) {
79
+ if (!currentItems || !Array.isArray(currentItems)) return;
80
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
81
+ try {
82
+ for(var _iterator = currentItems[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
83
+ var item = _step.value;
84
+ if (item === null || item === void 0 ? void 0 : item.value) {
85
+ // Создаем новый уровень для текущего значения
86
+ currentLevel[item === null || item === void 0 ? void 0 : item.value] = {};
87
+ // Рекурсивно обрабатываем дочерние элементы
88
+ if ((item === null || item === void 0 ? void 0 : item.items) && (item === null || item === void 0 ? void 0 : item.items.length) > 0) {
89
+ buildTree(item === null || item === void 0 ? void 0 : item.items, currentLevel[item === null || item === void 0 ? void 0 : item.value]);
90
+ }
91
+ }
92
+ }
93
+ } catch (err) {
94
+ _didIteratorError = true;
95
+ _iteratorError = err;
96
+ } finally{
97
+ try {
98
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
99
+ _iterator.return();
100
+ }
101
+ } finally{
102
+ if (_didIteratorError) {
103
+ throw _iteratorError;
104
+ }
105
+ }
106
+ }
107
+ };
108
+ buildTree(items, result);
109
+ return result;
110
+ }
111
+ function treePathReducer(state, action) {
112
+ switch(action.type){
113
+ case 'reset':
114
+ {
115
+ return {};
116
+ }
117
+ case 'toggled_level':
118
+ {
119
+ var stateCopy = (0, _utils.deepCopy)(state);
120
+ var isTargetLevelOpened = keyExists(stateCopy, action.value);
121
+ if (isTargetLevelOpened) {
122
+ // нужно закрыть текущий уровень
123
+ removeObjectAtPath(stateCopy, action.value);
124
+ } else {
125
+ // нужно открыть требуемый уровень
126
+ createObjectAtPath(stateCopy, action.value);
127
+ }
128
+ return stateCopy;
129
+ }
130
+ case 'expand_all':
131
+ {
132
+ var filteredItem = action.value;
133
+ return generateNestedTreePathFromFilteredItems(filteredItem);
134
+ }
135
+ default:
136
+ {
137
+ return state;
138
+ }
139
+ }
140
+ }
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "TreeList", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return TreeList;
9
+ }
10
+ });
11
+ var _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
12
+ var _reactvirtual = require("@tanstack/react-virtual");
13
+ var _utils = require("../../../../../utils");
14
+ var _Item = require("./ui/Item/Item");
15
+ var _TreeListstyles = require("./TreeList.styles");
16
+ function _getRequireWildcardCache(nodeInterop) {
17
+ if (typeof WeakMap !== "function") return null;
18
+ var cacheBabelInterop = new WeakMap();
19
+ var cacheNodeInterop = new WeakMap();
20
+ return (_getRequireWildcardCache = function(nodeInterop) {
21
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
22
+ })(nodeInterop);
23
+ }
24
+ function _interop_require_wildcard(obj, nodeInterop) {
25
+ if (!nodeInterop && obj && obj.__esModule) {
26
+ return obj;
27
+ }
28
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
29
+ return {
30
+ default: obj
31
+ };
32
+ }
33
+ var cache = _getRequireWildcardCache(nodeInterop);
34
+ if (cache && cache.has(obj)) {
35
+ return cache.get(obj);
36
+ }
37
+ var newObj = {
38
+ __proto__: null
39
+ };
40
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
41
+ for(var key in obj){
42
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
43
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
44
+ if (desc && (desc.get || desc.set)) {
45
+ Object.defineProperty(newObj, key, desc);
46
+ } else {
47
+ newObj[key] = obj[key];
48
+ }
49
+ }
50
+ }
51
+ newObj.default = obj;
52
+ if (cache) {
53
+ cache.set(obj, newObj);
54
+ }
55
+ return newObj;
56
+ }
57
+ var TreeList = function(param) {
58
+ var items = param.items, listMaxHeight = param.listMaxHeight, onScroll = param.onScroll, virtual = param.virtual, beforeList = param.beforeList, afterList = param.afterList;
59
+ if (virtual) {
60
+ return /*#__PURE__*/ _react.default.createElement(VirtualTreeList, {
61
+ items: items,
62
+ listMaxHeight: listMaxHeight,
63
+ onScroll: onScroll,
64
+ beforeList: beforeList,
65
+ afterList: afterList
66
+ });
67
+ }
68
+ return /*#__PURE__*/ _react.default.createElement(_TreeListstyles.ListWrapper, null, /*#__PURE__*/ _react.default.createElement(_TreeListstyles.ScrollContainer, {
69
+ listMaxHeight: listMaxHeight,
70
+ onScroll: onScroll
71
+ }, beforeList, items === null || items === void 0 ? void 0 : items.map(function(item, index) {
72
+ return /*#__PURE__*/ _react.default.createElement(_Item.Item, {
73
+ key: index,
74
+ index: index,
75
+ item: item
76
+ });
77
+ }), afterList));
78
+ };
79
+ var VirtualTreeList = function(param) {
80
+ var _param_items = param.items, items = _param_items === void 0 ? [] : _param_items, listMaxHeight = param.listMaxHeight, onScroll = param.onScroll, beforeList = param.beforeList, afterList = param.afterList;
81
+ var _virtualItems_;
82
+ var parentRef = (0, _react.useRef)(null);
83
+ var virtualizer = (0, _reactvirtual.useVirtualizer)({
84
+ count: items.length,
85
+ getScrollElement: function() {
86
+ return parentRef.current;
87
+ },
88
+ estimateSize: function() {
89
+ return 48;
90
+ }
91
+ });
92
+ var virtualItems = virtualizer.getVirtualItems();
93
+ var _virtualItems__start;
94
+ return /*#__PURE__*/ _react.default.createElement(_TreeListstyles.ListWrapper, null, beforeList, /*#__PURE__*/ _react.default.createElement("div", {
95
+ ref: parentRef,
96
+ style: {
97
+ height: 'auto',
98
+ maxHeight: (0, _utils.getHeightAsNumber)(listMaxHeight),
99
+ overflowY: 'auto'
100
+ },
101
+ onScroll: onScroll
102
+ }, /*#__PURE__*/ _react.default.createElement("div", {
103
+ style: {
104
+ height: virtualizer.getTotalSize(),
105
+ width: '100%',
106
+ position: 'relative'
107
+ }
108
+ }, /*#__PURE__*/ _react.default.createElement("div", {
109
+ style: {
110
+ position: 'absolute',
111
+ top: 0,
112
+ left: 0,
113
+ width: '100%',
114
+ transform: "translateY(".concat((_virtualItems__start = (_virtualItems_ = virtualItems[0]) === null || _virtualItems_ === void 0 ? void 0 : _virtualItems_.start) !== null && _virtualItems__start !== void 0 ? _virtualItems__start : 0, "px)")
115
+ }
116
+ }, virtualItems.map(function(virtualRow) {
117
+ return /*#__PURE__*/ _react.default.createElement("div", {
118
+ key: virtualRow.key,
119
+ "data-index": virtualRow.index,
120
+ ref: virtualizer.measureElement
121
+ }, /*#__PURE__*/ _react.default.createElement(_Item.Item, {
122
+ item: items[virtualRow.index],
123
+ index: virtualRow.index
124
+ }));
125
+ })))), afterList);
126
+ };
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get ListWrapper () {
13
+ return ListWrapper;
14
+ },
15
+ get ScrollContainer () {
16
+ return ScrollContainer;
17
+ }
18
+ });
19
+ var _styledcomponents = /*#__PURE__*/ _interop_require_default(require("styled-components"));
20
+ var _Comboboxtokens = require("../../Combobox.tokens");
21
+ function _interop_require_default(obj) {
22
+ return obj && obj.__esModule ? obj : {
23
+ default: obj
24
+ };
25
+ }
26
+ var ListWrapper = _styledcomponents.default.div.withConfig({
27
+ displayName: "TreeList.styles__ListWrapper",
28
+ componentId: "sc-1116f9b8-0"
29
+ })([
30
+ "width:100%;padding:calc(var(",
31
+ ") + var(",
32
+ ",0rem));border-radius:var(",
33
+ ");box-sizing:border-box;background:var(",
34
+ ");box-shadow:",
35
+ ",inset 0 0 0 var(",
36
+ ",0rem) var(",
37
+ ",transparent);"
38
+ ], _Comboboxtokens.tokens.padding, _Comboboxtokens.tokens.dropdownBorderWidth, _Comboboxtokens.tokens.borderRadius, _Comboboxtokens.constants.background, _Comboboxtokens.constants.boxShadow, _Comboboxtokens.tokens.dropdownBorderWidth, _Comboboxtokens.tokens.dropdownBorderColor);
39
+ var ScrollContainer = _styledcomponents.default.div.withConfig({
40
+ displayName: "TreeList.styles__ScrollContainer",
41
+ componentId: "sc-1116f9b8-1"
42
+ })([
43
+ "max-height:",
44
+ ";overflow-x:hidden;overflow-y:auto;border-radius:calc(var(",
45
+ ") - 0.125rem - var(",
46
+ ",0rem));"
47
+ ], function(param) {
48
+ var listMaxHeight = param.listMaxHeight;
49
+ return listMaxHeight || 'auto';
50
+ }, _Comboboxtokens.tokens.borderRadius, _Comboboxtokens.tokens.dropdownBorderWidth);
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });