@salutejs/plasma-new-hope 0.335.0-canary.2197.17377664818.0 → 0.335.0-canary.2198.17378237458.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 (210) hide show
  1. package/cjs/components/Autocomplete/Autocomplete.js +1 -6
  2. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  3. package/cjs/components/Autocomplete/ui/VirtualList/VirtualList.js +43 -13
  4. package/cjs/components/Autocomplete/ui/VirtualList/VirtualList.js.map +1 -1
  5. package/cjs/components/Carousel/CarouselNew/Carousel.js +4 -3
  6. package/cjs/components/Carousel/CarouselNew/Carousel.js.map +1 -1
  7. package/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +6 -1
  8. package/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js.map +1 -1
  9. package/cjs/components/Combobox/ComboboxNew/Combobox.js +18 -34
  10. package/cjs/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
  11. package/cjs/components/Combobox/ComboboxNew/Combobox.styles.js +3 -2
  12. package/cjs/components/Combobox/ComboboxNew/Combobox.styles.js.map +1 -1
  13. package/cjs/components/Combobox/ComboboxNew/ui/Inner/Inner.js +5 -11
  14. package/cjs/components/Combobox/ComboboxNew/ui/Inner/Inner.js.map +1 -1
  15. package/cjs/components/Combobox/ComboboxNew/ui/VirtualList/VirtualList.js +43 -13
  16. package/cjs/components/Combobox/ComboboxNew/ui/VirtualList/VirtualList.js.map +1 -1
  17. package/cjs/components/Combobox/ComboboxNew/utils/getTextValue.js +24 -0
  18. package/cjs/components/Combobox/ComboboxNew/utils/getTextValue.js.map +1 -0
  19. package/cjs/components/DatePicker/RangeDate/RangeDate.js +3 -1
  20. package/cjs/components/DatePicker/RangeDate/RangeDate.js.map +1 -1
  21. package/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js +5 -2
  22. package/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js.map +1 -1
  23. package/cjs/components/DatePicker/SingleDate/SingleDate.js +4 -2
  24. package/cjs/components/DatePicker/SingleDate/SingleDate.js.map +1 -1
  25. package/cjs/components/Popup/ClientOnlyPortal.js +15 -2
  26. package/cjs/components/Popup/ClientOnlyPortal.js.map +1 -1
  27. package/cjs/components/Popup/PopupContext.js +26 -5
  28. package/cjs/components/Popup/PopupContext.js.map +1 -1
  29. package/cjs/components/Select/Select.js +3 -4
  30. package/cjs/components/Select/Select.js.map +1 -1
  31. package/cjs/components/Select/Select.styles.js +3 -2
  32. package/cjs/components/Select/Select.styles.js.map +1 -1
  33. package/cjs/components/Select/ui/Inner/Inner.js +5 -11
  34. package/cjs/components/Select/ui/Inner/Inner.js.map +1 -1
  35. package/cjs/components/Select/ui/VirtualList/VirtualList.js +43 -13
  36. package/cjs/components/Select/ui/VirtualList/VirtualList.js.map +1 -1
  37. package/emotion/cjs/components/Autocomplete/Autocomplete.js +1 -8
  38. package/emotion/cjs/components/Autocomplete/ui/VirtualList/VirtualList.js +84 -16
  39. package/emotion/cjs/components/Carousel/CarouselNew/Carousel.js +2 -2
  40. package/emotion/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +6 -1
  41. package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.js +28 -48
  42. package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.styles.js +15 -15
  43. package/emotion/cjs/components/Combobox/ComboboxNew/ui/Inner/Inner.js +9 -50
  44. package/emotion/cjs/components/Combobox/ComboboxNew/ui/VirtualList/VirtualList.js +84 -16
  45. package/emotion/cjs/components/Combobox/ComboboxNew/utils/getTextValue.js +25 -0
  46. package/emotion/cjs/components/Combobox/ComboboxNew/utils/index.js +4 -0
  47. package/emotion/cjs/components/DatePicker/RangeDate/RangeDate.js +3 -1
  48. package/emotion/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js +5 -3
  49. package/emotion/cjs/components/DatePicker/SingleDate/SingleDate.js +4 -2
  50. package/emotion/cjs/components/Popup/ClientOnlyPortal.js +14 -2
  51. package/emotion/cjs/components/Popup/PopupContext.js +25 -6
  52. package/emotion/cjs/components/Select/Select.js +2 -4
  53. package/emotion/cjs/components/Select/Select.styles.js +7 -7
  54. package/emotion/cjs/components/Select/ui/Inner/Inner.js +9 -50
  55. package/emotion/cjs/components/Select/ui/VirtualList/VirtualList.js +84 -16
  56. package/emotion/cjs/examples/components/Combobox/Combobox.js +0 -15
  57. package/emotion/es/components/Autocomplete/Autocomplete.js +2 -9
  58. package/emotion/es/components/Autocomplete/ui/VirtualList/VirtualList.js +45 -13
  59. package/emotion/es/components/Carousel/CarouselNew/Carousel.js +2 -2
  60. package/emotion/es/components/Carousel/CarouselNew/hooks/useCarousel.js +6 -1
  61. package/emotion/es/components/Combobox/ComboboxNew/Combobox.js +14 -34
  62. package/emotion/es/components/Combobox/ComboboxNew/Combobox.styles.js +15 -15
  63. package/emotion/es/components/Combobox/ComboboxNew/ui/Inner/Inner.js +6 -11
  64. package/emotion/es/components/Combobox/ComboboxNew/ui/VirtualList/VirtualList.js +45 -13
  65. package/emotion/es/components/Combobox/ComboboxNew/utils/getTextValue.js +16 -0
  66. package/emotion/es/components/Combobox/ComboboxNew/utils/index.js +1 -0
  67. package/emotion/es/components/DatePicker/RangeDate/RangeDate.js +3 -1
  68. package/emotion/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js +5 -3
  69. package/emotion/es/components/DatePicker/SingleDate/SingleDate.js +4 -2
  70. package/emotion/es/components/Popup/ClientOnlyPortal.js +14 -2
  71. package/emotion/es/components/Popup/PopupContext.js +25 -6
  72. package/emotion/es/components/Select/Select.js +2 -4
  73. package/emotion/es/components/Select/Select.styles.js +7 -7
  74. package/emotion/es/components/Select/ui/Inner/Inner.js +6 -11
  75. package/emotion/es/components/Select/ui/VirtualList/VirtualList.js +45 -13
  76. package/emotion/es/examples/components/Combobox/Combobox.js +7 -0
  77. package/es/components/Autocomplete/Autocomplete.js +2 -7
  78. package/es/components/Autocomplete/Autocomplete.js.map +1 -1
  79. package/es/components/Autocomplete/ui/VirtualList/VirtualList.js +44 -13
  80. package/es/components/Autocomplete/ui/VirtualList/VirtualList.js.map +1 -1
  81. package/es/components/Carousel/CarouselNew/Carousel.js +5 -4
  82. package/es/components/Carousel/CarouselNew/Carousel.js.map +1 -1
  83. package/es/components/Carousel/CarouselNew/hooks/useCarousel.js +6 -1
  84. package/es/components/Carousel/CarouselNew/hooks/useCarousel.js.map +1 -1
  85. package/es/components/Combobox/ComboboxNew/Combobox.js +18 -34
  86. package/es/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
  87. package/es/components/Combobox/ComboboxNew/Combobox.styles.js +3 -2
  88. package/es/components/Combobox/ComboboxNew/Combobox.styles.js.map +1 -1
  89. package/es/components/Combobox/ComboboxNew/ui/Inner/Inner.js +6 -12
  90. package/es/components/Combobox/ComboboxNew/ui/Inner/Inner.js.map +1 -1
  91. package/es/components/Combobox/ComboboxNew/ui/VirtualList/VirtualList.js +44 -13
  92. package/es/components/Combobox/ComboboxNew/ui/VirtualList/VirtualList.js.map +1 -1
  93. package/es/components/Combobox/ComboboxNew/utils/getTextValue.js +20 -0
  94. package/es/components/Combobox/ComboboxNew/utils/getTextValue.js.map +1 -0
  95. package/es/components/DatePicker/RangeDate/RangeDate.js +3 -1
  96. package/es/components/DatePicker/RangeDate/RangeDate.js.map +1 -1
  97. package/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js +5 -2
  98. package/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js.map +1 -1
  99. package/es/components/DatePicker/SingleDate/SingleDate.js +4 -2
  100. package/es/components/DatePicker/SingleDate/SingleDate.js.map +1 -1
  101. package/es/components/Popup/ClientOnlyPortal.js +15 -2
  102. package/es/components/Popup/ClientOnlyPortal.js.map +1 -1
  103. package/es/components/Popup/PopupContext.js +26 -5
  104. package/es/components/Popup/PopupContext.js.map +1 -1
  105. package/es/components/Select/Select.js +3 -4
  106. package/es/components/Select/Select.js.map +1 -1
  107. package/es/components/Select/Select.styles.js +3 -2
  108. package/es/components/Select/Select.styles.js.map +1 -1
  109. package/es/components/Select/ui/Inner/Inner.js +6 -12
  110. package/es/components/Select/ui/Inner/Inner.js.map +1 -1
  111. package/es/components/Select/ui/VirtualList/VirtualList.js +44 -13
  112. package/es/components/Select/ui/VirtualList/VirtualList.js.map +1 -1
  113. package/package.json +4 -5
  114. package/styled-components/cjs/components/Autocomplete/Autocomplete.js +1 -8
  115. package/styled-components/cjs/components/Autocomplete/ui/VirtualList/VirtualList.js +84 -16
  116. package/styled-components/cjs/components/Carousel/CarouselNew/Carousel.js +2 -2
  117. package/styled-components/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +6 -1
  118. package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.js +28 -48
  119. package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.styles.js +8 -8
  120. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/Inner/Inner.js +9 -50
  121. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/VirtualList/VirtualList.js +84 -16
  122. package/styled-components/cjs/components/Combobox/ComboboxNew/utils/getTextValue.js +25 -0
  123. package/styled-components/cjs/components/Combobox/ComboboxNew/utils/index.js +4 -0
  124. package/styled-components/cjs/components/DatePicker/RangeDate/RangeDate.js +3 -1
  125. package/styled-components/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js +5 -3
  126. package/styled-components/cjs/components/DatePicker/SingleDate/SingleDate.js +4 -2
  127. package/styled-components/cjs/components/Popup/ClientOnlyPortal.js +14 -2
  128. package/styled-components/cjs/components/Popup/PopupContext.js +25 -6
  129. package/styled-components/cjs/components/Select/Select.js +2 -4
  130. package/styled-components/cjs/components/Select/Select.styles.js +4 -4
  131. package/styled-components/cjs/components/Select/ui/Inner/Inner.js +9 -50
  132. package/styled-components/cjs/components/Select/ui/VirtualList/VirtualList.js +84 -16
  133. package/styled-components/cjs/examples/components/Combobox/Combobox.js +15 -0
  134. package/styled-components/es/components/Autocomplete/Autocomplete.js +2 -9
  135. package/styled-components/es/components/Autocomplete/ui/VirtualList/VirtualList.js +45 -13
  136. package/styled-components/es/components/Carousel/CarouselNew/Carousel.js +2 -2
  137. package/styled-components/es/components/Carousel/CarouselNew/hooks/useCarousel.js +6 -1
  138. package/styled-components/es/components/Combobox/ComboboxNew/Combobox.js +14 -34
  139. package/styled-components/es/components/Combobox/ComboboxNew/Combobox.styles.js +8 -8
  140. package/styled-components/es/components/Combobox/ComboboxNew/ui/Inner/Inner.js +6 -11
  141. package/styled-components/es/components/Combobox/ComboboxNew/ui/VirtualList/VirtualList.js +45 -13
  142. package/styled-components/es/components/Combobox/ComboboxNew/utils/getTextValue.js +16 -0
  143. package/styled-components/es/components/Combobox/ComboboxNew/utils/index.js +1 -0
  144. package/styled-components/es/components/DatePicker/RangeDate/RangeDate.js +3 -1
  145. package/styled-components/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js +5 -3
  146. package/styled-components/es/components/DatePicker/SingleDate/SingleDate.js +4 -2
  147. package/styled-components/es/components/Popup/ClientOnlyPortal.js +14 -2
  148. package/styled-components/es/components/Popup/PopupContext.js +25 -6
  149. package/styled-components/es/components/Select/Select.js +2 -4
  150. package/styled-components/es/components/Select/Select.styles.js +4 -4
  151. package/styled-components/es/components/Select/ui/Inner/Inner.js +6 -11
  152. package/styled-components/es/components/Select/ui/VirtualList/VirtualList.js +45 -13
  153. package/styled-components/es/examples/components/Combobox/Combobox.js +7 -0
  154. package/types/components/Autocomplete/Autocomplete.d.ts.map +1 -1
  155. package/types/components/Autocomplete/Autocomplete.types.d.ts +17 -17
  156. package/types/components/Autocomplete/Autocomplete.types.d.ts.map +1 -1
  157. package/types/components/Autocomplete/ui/VirtualList/VirtualList.d.ts +1 -1
  158. package/types/components/Autocomplete/ui/VirtualList/VirtualList.d.ts.map +1 -1
  159. package/types/components/Carousel/CarouselNew/Carousel.d.ts.map +1 -1
  160. package/types/components/Carousel/CarouselNew/Carousel.types.d.ts +5 -0
  161. package/types/components/Carousel/CarouselNew/Carousel.types.d.ts.map +1 -1
  162. package/types/components/Carousel/CarouselNew/hooks/useCarousel.d.ts.map +1 -1
  163. package/types/components/Combobox/ComboboxNew/Combobox.d.ts.map +1 -1
  164. package/types/components/Combobox/ComboboxNew/Combobox.styles.d.ts +1 -0
  165. package/types/components/Combobox/ComboboxNew/Combobox.styles.d.ts.map +1 -1
  166. package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts +7 -7
  167. package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts.map +1 -1
  168. package/types/components/Combobox/ComboboxNew/ui/Inner/Inner.d.ts.map +1 -1
  169. package/types/components/Combobox/ComboboxNew/ui/Inner/Inner.type.d.ts +1 -2
  170. package/types/components/Combobox/ComboboxNew/ui/Inner/Inner.type.d.ts.map +1 -1
  171. package/types/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.types.d.ts +2 -6
  172. package/types/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.types.d.ts.map +1 -1
  173. package/types/components/Combobox/ComboboxNew/ui/VirtualList/VirtualList.d.ts +1 -1
  174. package/types/components/Combobox/ComboboxNew/ui/VirtualList/VirtualList.d.ts.map +1 -1
  175. package/types/components/Combobox/ComboboxNew/utils/getTextValue.d.ts +4 -0
  176. package/types/components/Combobox/ComboboxNew/utils/getTextValue.d.ts.map +1 -0
  177. package/types/components/Combobox/ComboboxNew/utils/index.d.ts +1 -0
  178. package/types/components/Combobox/ComboboxNew/utils/index.d.ts.map +1 -1
  179. package/types/components/DatePicker/RangeDate/RangeDate.d.ts.map +1 -1
  180. package/types/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.d.ts +1 -1
  181. package/types/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.d.ts.map +1 -1
  182. package/types/components/DatePicker/SingleDate/SingleDate.d.ts.map +1 -1
  183. package/types/components/DatePicker/SingleDate/SingleDate.types.d.ts +4 -0
  184. package/types/components/DatePicker/SingleDate/SingleDate.types.d.ts.map +1 -1
  185. package/types/components/Pagination/ui/PaginationSelectPerPage/PaginationSelectPerPage.styles.d.ts +18 -18
  186. package/types/components/Pagination/ui/PaginationSelectPerPage/PaginationSelectPerPage.styles.d.ts.map +1 -1
  187. package/types/components/Popup/ClientOnlyPortal.d.ts +1 -0
  188. package/types/components/Popup/ClientOnlyPortal.d.ts.map +1 -1
  189. package/types/components/Popup/PopupContext.d.ts +5 -1
  190. package/types/components/Popup/PopupContext.d.ts.map +1 -1
  191. package/types/components/Select/Select.d.ts.map +1 -1
  192. package/types/components/Select/Select.styles.d.ts +1 -0
  193. package/types/components/Select/Select.styles.d.ts.map +1 -1
  194. package/types/components/Select/Select.types.d.ts +14 -14
  195. package/types/components/Select/Select.types.d.ts.map +1 -1
  196. package/types/components/Select/ui/Inner/Inner.d.ts.map +1 -1
  197. package/types/components/Select/ui/Inner/Inner.type.d.ts +1 -2
  198. package/types/components/Select/ui/Inner/Inner.type.d.ts.map +1 -1
  199. package/types/components/Select/ui/Inner/ui/Item/Item.types.d.ts +3 -11
  200. package/types/components/Select/ui/Inner/ui/Item/Item.types.d.ts.map +1 -1
  201. package/types/components/Select/ui/VirtualList/VirtualList.d.ts +1 -1
  202. package/types/components/Select/ui/VirtualList/VirtualList.d.ts.map +1 -1
  203. package/types/components/Table/ui/HeadCell/ui/Filter/Filter.styles.d.ts +18 -18
  204. package/types/components/Table/ui/HeadCell/ui/Filter/Filter.styles.d.ts.map +1 -1
  205. package/types/examples/components/Autocomplete/Autocomplete.d.ts +40 -40
  206. package/types/examples/components/Autocomplete/Autocomplete.d.ts.map +1 -1
  207. package/types/examples/components/Combobox/Combobox.d.ts +48 -48
  208. package/types/examples/components/Combobox/Combobox.d.ts.map +1 -1
  209. package/types/examples/components/Select/Select.d.ts +18 -18
  210. package/types/examples/components/Select/Select.d.ts.map +1 -1
@@ -72,7 +72,7 @@ var autocompleteRoot = function autocompleteRoot(Root) {
72
72
  _useReducer2 = _rollupPluginBabelHelpers.slicedToArray(_useReducer, 2),
73
73
  focused = _useReducer2[0],
74
74
  dispatchFocused = _useReducer2[1];
75
- var _useState = React.useState(''),
75
+ var _useState = React.useState(defaultValue || ''),
76
76
  _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
77
77
  innerValue = _useState2[0],
78
78
  setInnerValue = _useState2[1];
@@ -133,11 +133,6 @@ var autocompleteRoot = function autocompleteRoot(Root) {
133
133
  type: 'reset'
134
134
  });
135
135
  }, [value]);
136
- React.useLayoutEffect(function () {
137
- if (defaultValue) {
138
- setInnerValue(defaultValue);
139
- }
140
- }, [defaultValue]);
141
136
  return /*#__PURE__*/React__default.default.createElement(Root, {
142
137
  view: view,
143
138
  size: size,
@@ -1 +1 @@
1
- {"version":3,"file":"Autocomplete.js","sources":["../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import React, { forwardRef, useState, useReducer, useLayoutEffect, useRef } from 'react';\nimport { safeUseId } from 'src/utils';\nimport { useDidMountEffect, useOutsideClick } from 'src/hooks';\nimport { RootProps } from 'src/engines';\n\nimport { FloatingPopover } from './FloatingPopover';\nimport { focusedReducer } from './reducers/focusedReducer';\nimport { SuggestionItem, StyledTextField, VirtualList } from './ui';\nimport { Ul, InfiniteLoaderWrapper, base, StyledLeftHelper, ListWrapper } from './Autocomplete.styles';\nimport type { AutocompleteProps, SuggestionItemType } from './Autocomplete.types';\nimport { useKeyNavigation } from './hooks/useKeyboardNavigation';\n\n/**\n * Компонент Autocomplete. Поле ввода с подсказками в выпадающем списке.\n */\nexport const autocompleteRoot = (Root: RootProps<HTMLInputElement, Omit<AutocompleteProps, 'hintText'>>) =>\n forwardRef<HTMLInputElement, AutocompleteProps>(\n (\n {\n value: outerValue,\n defaultValue,\n onChange,\n suggestions,\n view,\n size,\n labelPlacement,\n keepPlaceholder,\n disabled,\n readOnly,\n label,\n leftHelper,\n contentLeft,\n contentRight,\n textBefore,\n textAfter,\n onScroll,\n listMaxHeight = '25rem',\n listWidth,\n portal,\n zIndex,\n filter,\n onSuggestionSelect,\n threshold = 2,\n renderList,\n renderListEnd,\n renderItem,\n onSearch,\n hintText,\n hintView = 'default',\n hintSize = 'm',\n beforeList,\n afterList,\n virtual = false,\n // @ts-ignore\n _offset,\n ...rest\n },\n ref,\n ) => {\n const [focused, dispatchFocused] = useReducer(focusedReducer, null);\n const [innerValue, setInnerValue] = useState<string | number>('');\n const [isOpen, setIsOpen] = useState(false);\n\n const listId = safeUseId();\n const value = outerValue ?? innerValue;\n\n const helperTextId = safeUseId();\n const floatingPopoverRef = useRef<HTMLDivElement>(null);\n\n const targetRef = useOutsideClick<HTMLUListElement>(() => {\n setIsOpen(false);\n }, floatingPopoverRef);\n\n const handleFocus = () => {\n if (value.toString().length >= threshold) {\n setIsOpen(true);\n }\n };\n\n const handleItemClick = (e: SuggestionItemType) => {\n setInnerValue(e.label);\n\n if (onSuggestionSelect) {\n onSuggestionSelect(e);\n }\n\n setIsOpen(false);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const currentValue = e.target.value;\n\n setInnerValue(currentValue);\n\n if (onChange) {\n onChange(e);\n }\n\n if (currentValue.toString().length >= threshold) {\n setIsOpen(true);\n } else {\n setIsOpen(false);\n }\n };\n\n const defaultFilterCallback = ({ label }: { label: string }) => {\n return label.toLowerCase().includes(value.toString().toLowerCase());\n };\n\n const helperTextStopPropagation = (event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n };\n\n const finalResults = suggestions?.filter(filter || defaultFilterCallback) || [];\n\n const { onKeyDown } = useKeyNavigation({\n isOpen,\n setIsOpen,\n focused,\n dispatchFocused,\n finalResults,\n handleItemClick,\n });\n\n useDidMountEffect(() => {\n dispatchFocused({ type: 'reset' });\n }, [value]);\n\n useLayoutEffect(() => {\n if (defaultValue) {\n setInnerValue(defaultValue);\n }\n }, [defaultValue]);\n\n return (\n <Root\n view={view}\n size={size}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n hintView={hintView}\n hintSize={hintSize}\n >\n <FloatingPopover\n ref={floatingPopoverRef}\n opened={isOpen}\n portal={portal}\n zIndex={zIndex}\n listWidth={listWidth}\n offset={_offset}\n target={(referenceRef) => (\n <StyledTextField\n ref={ref}\n inputWrapperRef={referenceRef}\n value={value}\n onChange={handleChange}\n onSearch={focused === null ? onSearch : undefined}\n size={size}\n view={view}\n disabled={disabled}\n readOnly={readOnly}\n label={label}\n contentLeft={contentLeft}\n contentRight={contentRight}\n textBefore={textBefore}\n textAfter={textAfter}\n onFocus={handleFocus}\n onKeyDown={onKeyDown}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls={listId}\n aria-expanded={isOpen}\n aria-activedescendant={`${listId}/${focused}`}\n aria-describedby={helperTextId}\n hintText={String(hintText || '')}\n labelPlacement={labelPlacement}\n keepPlaceholder={keepPlaceholder}\n leftHelper={\n leftHelper && (\n <StyledLeftHelper onClick={helperTextStopPropagation}>\n {leftHelper}\n </StyledLeftHelper>\n )\n }\n {...rest}\n />\n )}\n >\n {(renderList && renderList(finalResults)) ||\n (Boolean(finalResults.length) && (\n <Root\n view={view}\n size={size}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n >\n <ListWrapper>\n <Ul\n ref={targetRef}\n id={listId}\n role=\"listbox\"\n aria-label={label}\n onScroll={virtual ? undefined : onScroll}\n listMaxHeight={listMaxHeight}\n virtual={virtual}\n >\n {virtual ? (\n <VirtualList\n items={finalResults}\n onClick={handleItemClick}\n listId={listId}\n listMaxHeight={listMaxHeight}\n onScroll={onScroll}\n renderItem={renderItem}\n />\n ) : (\n <>\n {beforeList}\n\n {finalResults.map((suggestion, index) => (\n <SuggestionItem\n key={index}\n item={suggestion}\n onClick={handleItemClick}\n id={`${listId}/${index}`}\n focused={focused === index}\n renderItem={renderItem}\n />\n ))}\n\n {afterList}\n </>\n )}\n\n {renderListEnd && (\n <InfiniteLoaderWrapper>{renderListEnd()}</InfiniteLoaderWrapper>\n )}\n </Ul>\n </ListWrapper>\n </Root>\n ))}\n </FloatingPopover>\n </Root>\n );\n },\n );\n\nexport const autocompleteConfig = {\n name: 'Autocomplete',\n tag: 'div',\n layout: autocompleteRoot,\n base,\n defaults: {\n view: 'default',\n size: 'l',\n labelPlacement: 'outer',\n },\n variations: {\n view: {\n css: '',\n },\n },\n};\n"],"names":["autocompleteRoot","Root","forwardRef","_ref","ref","_StyledLeftHelper","outerValue","value","defaultValue","onChange","suggestions","view","size","labelPlacement","keepPlaceholder","disabled","readOnly","label","leftHelper","contentLeft","contentRight","textBefore","textAfter","onScroll","_ref$listMaxHeight","listMaxHeight","listWidth","portal","zIndex","filter","onSuggestionSelect","_ref$threshold","threshold","renderList","renderListEnd","renderItem","onSearch","hintText","_ref$hintView","hintView","_ref$hintSize","hintSize","beforeList","afterList","_ref$virtual","virtual","_offset","rest","_objectWithoutProperties","_excluded","_useReducer","useReducer","focusedReducer","_useReducer2","_slicedToArray","focused","dispatchFocused","_useState","useState","_useState2","innerValue","setInnerValue","_useState3","_useState4","isOpen","setIsOpen","listId","safeUseId","helperTextId","floatingPopoverRef","useRef","targetRef","useOutsideClick","handleFocus","toString","length","handleItemClick","e","handleChange","currentValue","target","defaultFilterCallback","_ref2","toLowerCase","includes","helperTextStopPropagation","event","stopPropagation","finalResults","_useKeyNavigation","useKeyNavigation","onKeyDown","useDidMountEffect","type","useLayoutEffect","React","createElement","FloatingPopover","opened","offset","referenceRef","StyledTextField","_extends","inputWrapperRef","undefined","onFocus","role","concat","String","StyledLeftHelper","onClick","Boolean","ListWrapper","Ul","id","VirtualList","items","Fragment","map","suggestion","index","SuggestionItem","key","item","InfiniteLoaderWrapper","autocompleteConfig","name","tag","layout","base","defaults","variations","css"],"mappings":"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"}
1
+ {"version":3,"file":"Autocomplete.js","sources":["../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import React, { forwardRef, useState, useReducer, useRef } from 'react';\nimport { safeUseId } from 'src/utils';\nimport { useDidMountEffect, useOutsideClick } from 'src/hooks';\nimport { RootProps } from 'src/engines';\n\nimport { FloatingPopover } from './FloatingPopover';\nimport { focusedReducer } from './reducers/focusedReducer';\nimport { SuggestionItem, StyledTextField, VirtualList } from './ui';\nimport { Ul, InfiniteLoaderWrapper, base, StyledLeftHelper, ListWrapper } from './Autocomplete.styles';\nimport type { AutocompleteProps, SuggestionItemType } from './Autocomplete.types';\nimport { useKeyNavigation } from './hooks/useKeyboardNavigation';\n\n/**\n * Компонент Autocomplete. Поле ввода с подсказками в выпадающем списке.\n */\nexport const autocompleteRoot = (Root: RootProps<HTMLInputElement, Omit<AutocompleteProps, 'hintText'>>) =>\n forwardRef<HTMLInputElement, AutocompleteProps>(\n (\n {\n value: outerValue,\n defaultValue,\n onChange,\n suggestions,\n view,\n size,\n labelPlacement,\n keepPlaceholder,\n disabled,\n readOnly,\n label,\n leftHelper,\n contentLeft,\n contentRight,\n textBefore,\n textAfter,\n onScroll,\n listMaxHeight = '25rem',\n listWidth,\n portal,\n zIndex,\n filter,\n onSuggestionSelect,\n threshold = 2,\n renderList,\n renderListEnd,\n renderItem,\n onSearch,\n hintText,\n hintView = 'default',\n hintSize = 'm',\n beforeList,\n afterList,\n virtual = false,\n // @ts-ignore\n _offset,\n ...rest\n },\n ref,\n ) => {\n const [focused, dispatchFocused] = useReducer(focusedReducer, null);\n const [innerValue, setInnerValue] = useState<string>(defaultValue || '');\n const [isOpen, setIsOpen] = useState(false);\n\n const listId = safeUseId();\n const value = outerValue ?? innerValue;\n\n const helperTextId = safeUseId();\n const floatingPopoverRef = useRef<HTMLDivElement>(null);\n\n const targetRef = useOutsideClick<HTMLUListElement>(() => {\n setIsOpen(false);\n }, floatingPopoverRef);\n\n const handleFocus = () => {\n if (value.toString().length >= threshold) {\n setIsOpen(true);\n }\n };\n\n const handleItemClick = (e: SuggestionItemType) => {\n setInnerValue(e.label);\n\n if (onSuggestionSelect) {\n onSuggestionSelect(e);\n }\n\n setIsOpen(false);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const currentValue = e.target.value;\n\n setInnerValue(currentValue);\n\n if (onChange) {\n onChange(e);\n }\n\n if (currentValue.toString().length >= threshold) {\n setIsOpen(true);\n } else {\n setIsOpen(false);\n }\n };\n\n const defaultFilterCallback = ({ label }: { label: string }) => {\n return label.toLowerCase().includes(value.toString().toLowerCase());\n };\n\n const helperTextStopPropagation = (event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n };\n\n const finalResults = suggestions?.filter(filter || defaultFilterCallback) || [];\n\n const { onKeyDown } = useKeyNavigation({\n isOpen,\n setIsOpen,\n focused,\n dispatchFocused,\n finalResults,\n handleItemClick,\n });\n\n useDidMountEffect(() => {\n dispatchFocused({ type: 'reset' });\n }, [value]);\n\n return (\n <Root\n view={view}\n size={size}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n hintView={hintView}\n hintSize={hintSize}\n >\n <FloatingPopover\n ref={floatingPopoverRef}\n opened={isOpen}\n portal={portal}\n zIndex={zIndex}\n listWidth={listWidth}\n offset={_offset}\n target={(referenceRef) => (\n <StyledTextField\n ref={ref}\n inputWrapperRef={referenceRef}\n value={value}\n onChange={handleChange}\n onSearch={focused === null ? onSearch : undefined}\n size={size}\n view={view}\n disabled={disabled}\n readOnly={readOnly}\n label={label}\n contentLeft={contentLeft}\n contentRight={contentRight}\n textBefore={textBefore}\n textAfter={textAfter}\n onFocus={handleFocus}\n onKeyDown={onKeyDown}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls={listId}\n aria-expanded={isOpen}\n aria-activedescendant={`${listId}/${focused}`}\n aria-describedby={helperTextId}\n hintText={String(hintText || '')}\n labelPlacement={labelPlacement}\n keepPlaceholder={keepPlaceholder}\n leftHelper={\n leftHelper && (\n <StyledLeftHelper onClick={helperTextStopPropagation}>\n {leftHelper}\n </StyledLeftHelper>\n )\n }\n {...rest}\n />\n )}\n >\n {(renderList && renderList(finalResults)) ||\n (Boolean(finalResults.length) && (\n <Root\n view={view}\n size={size}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n >\n <ListWrapper>\n <Ul\n ref={targetRef}\n id={listId}\n role=\"listbox\"\n aria-label={label}\n onScroll={virtual ? undefined : onScroll}\n listMaxHeight={listMaxHeight}\n virtual={virtual}\n >\n {virtual ? (\n <VirtualList\n items={finalResults}\n onClick={handleItemClick}\n listId={listId}\n listMaxHeight={listMaxHeight}\n onScroll={onScroll}\n renderItem={renderItem}\n />\n ) : (\n <>\n {beforeList}\n\n {finalResults.map((suggestion, index) => (\n <SuggestionItem\n key={index}\n item={suggestion}\n onClick={handleItemClick}\n id={`${listId}/${index}`}\n focused={focused === index}\n renderItem={renderItem}\n />\n ))}\n\n {afterList}\n </>\n )}\n\n {renderListEnd && (\n <InfiniteLoaderWrapper>{renderListEnd()}</InfiniteLoaderWrapper>\n )}\n </Ul>\n </ListWrapper>\n </Root>\n ))}\n </FloatingPopover>\n </Root>\n );\n },\n );\n\nexport const autocompleteConfig = {\n name: 'Autocomplete',\n tag: 'div',\n layout: autocompleteRoot,\n base,\n defaults: {\n view: 'default',\n size: 'l',\n labelPlacement: 'outer',\n },\n variations: {\n view: {\n css: '',\n },\n },\n};\n"],"names":["autocompleteRoot","Root","forwardRef","_ref","ref","_StyledLeftHelper","outerValue","value","defaultValue","onChange","suggestions","view","size","labelPlacement","keepPlaceholder","disabled","readOnly","label","leftHelper","contentLeft","contentRight","textBefore","textAfter","onScroll","_ref$listMaxHeight","listMaxHeight","listWidth","portal","zIndex","filter","onSuggestionSelect","_ref$threshold","threshold","renderList","renderListEnd","renderItem","onSearch","hintText","_ref$hintView","hintView","_ref$hintSize","hintSize","beforeList","afterList","_ref$virtual","virtual","_offset","rest","_objectWithoutProperties","_excluded","_useReducer","useReducer","focusedReducer","_useReducer2","_slicedToArray","focused","dispatchFocused","_useState","useState","_useState2","innerValue","setInnerValue","_useState3","_useState4","isOpen","setIsOpen","listId","safeUseId","helperTextId","floatingPopoverRef","useRef","targetRef","useOutsideClick","handleFocus","toString","length","handleItemClick","e","handleChange","currentValue","target","defaultFilterCallback","_ref2","toLowerCase","includes","helperTextStopPropagation","event","stopPropagation","finalResults","_useKeyNavigation","useKeyNavigation","onKeyDown","useDidMountEffect","type","React","createElement","FloatingPopover","opened","offset","referenceRef","StyledTextField","_extends","inputWrapperRef","undefined","onFocus","role","concat","String","StyledLeftHelper","onClick","Boolean","ListWrapper","Ul","id","VirtualList","items","Fragment","map","suggestion","index","SuggestionItem","key","item","InfiniteLoaderWrapper","autocompleteConfig","name","tag","layout","base","defaults","variations","css"],"mappings":"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"}
@@ -3,38 +3,68 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var List = require('rc-virtual-list');
6
+ var reactVirtual = require('@tanstack/react-virtual');
7
7
  var SuggestionItem = require('../SuggestionItem/SuggestionItem.js');
8
8
  var getHeightAsNumber = require('../../../../utils/getHeightAsNumber.js');
9
9
 
10
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
11
 
12
12
  var React__default = /*#__PURE__*/_interopDefault(React);
13
- var List__default = /*#__PURE__*/_interopDefault(List);
14
13
 
15
14
  var VirtualList = function VirtualList(_ref) {
15
+ var _virtualItems$0$start, _virtualItems$;
16
16
  var items = _ref.items,
17
17
  onClick = _ref.onClick,
18
18
  listId = _ref.listId,
19
19
  listMaxHeight = _ref.listMaxHeight,
20
20
  onScroll = _ref.onScroll,
21
21
  renderItem = _ref.renderItem;
22
- return /*#__PURE__*/React__default.default.createElement(List__default.default, {
23
- data: items,
24
- height: getHeightAsNumber.getHeightAsNumber(listMaxHeight),
25
- fullHeight: false,
26
- itemHeight: 100,
27
- itemKey: "id",
22
+ var parentRef = React.useRef(null);
23
+ var virtualizer = reactVirtual.useVirtualizer({
24
+ count: items.length,
25
+ getScrollElement: function getScrollElement() {
26
+ return parentRef.current;
27
+ },
28
+ estimateSize: function estimateSize() {
29
+ return 48;
30
+ }
31
+ });
32
+ var virtualItems = virtualizer.getVirtualItems();
33
+ return /*#__PURE__*/React__default.default.createElement("div", {
34
+ ref: parentRef,
35
+ style: {
36
+ height: 'auto',
37
+ maxHeight: getHeightAsNumber.getHeightAsNumber(listMaxHeight),
38
+ overflowY: 'auto'
39
+ },
28
40
  onScroll: onScroll
29
- }, function (item, index, props) {
30
- return /*#__PURE__*/React__default.default.createElement("div", props, /*#__PURE__*/React__default.default.createElement(SuggestionItem.SuggestionItem, {
31
- item: item,
41
+ }, /*#__PURE__*/React__default.default.createElement("div", {
42
+ style: {
43
+ height: virtualizer.getTotalSize(),
44
+ width: '100%',
45
+ position: 'relative'
46
+ }
47
+ }, /*#__PURE__*/React__default.default.createElement("div", {
48
+ style: {
49
+ position: 'absolute',
50
+ top: 0,
51
+ left: 0,
52
+ width: '100%',
53
+ transform: "translateY(".concat((_virtualItems$0$start = (_virtualItems$ = virtualItems[0]) === null || _virtualItems$ === void 0 ? void 0 : _virtualItems$.start) !== null && _virtualItems$0$start !== void 0 ? _virtualItems$0$start : 0, "px)")
54
+ }
55
+ }, virtualItems.map(function (virtualRow) {
56
+ return /*#__PURE__*/React__default.default.createElement("div", {
57
+ key: virtualRow.key,
58
+ "data-index": virtualRow.index,
59
+ ref: virtualizer.measureElement
60
+ }, /*#__PURE__*/React__default.default.createElement(SuggestionItem.SuggestionItem, {
61
+ item: items[virtualRow.index],
32
62
  onClick: onClick,
33
- id: "".concat(listId, "/").concat(index),
63
+ id: "".concat(listId, "/").concat(virtualRow.index),
34
64
  focused: false,
35
65
  renderItem: renderItem
36
66
  }));
37
- });
67
+ }))));
38
68
  };
39
69
 
40
70
  exports.VirtualList = VirtualList;
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualList.js","sources":["../../../../../src/components/Autocomplete/ui/VirtualList/VirtualList.tsx"],"sourcesContent":["import React from 'react';\nimport List from 'rc-virtual-list';\nimport { getHeightAsNumber } from 'src/utils';\n\nimport { SuggestionItem } from '../SuggestionItem/SuggestionItem';\nimport type { SuggestionItemType } from '../../Autocomplete.types';\n\ninterface Props {\n items: SuggestionItemType[];\n onClick: (e: SuggestionItemType) => void;\n listId: string;\n listMaxHeight?: string;\n onScroll?: (e: React.UIEvent<HTMLUListElement>) => void;\n renderItem?: (item: SuggestionItemType) => React.ReactNode;\n}\n\nexport const VirtualList: React.FC<Props> = ({ items, onClick, listId, listMaxHeight, onScroll, renderItem }) => (\n <List\n data={items}\n height={getHeightAsNumber(listMaxHeight)}\n fullHeight={false}\n itemHeight={100}\n itemKey=\"id\"\n onScroll={onScroll}\n >\n {(item, index, props) => (\n <div {...props}>\n <SuggestionItem\n item={item}\n onClick={onClick}\n id={`${listId}/${index}`}\n focused={false}\n renderItem={renderItem}\n />\n </div>\n )}\n </List>\n);\n"],"names":["VirtualList","_ref","items","onClick","listId","listMaxHeight","onScroll","renderItem","React","createElement","List","data","height","getHeightAsNumber","fullHeight","itemHeight","itemKey","item","index","props","SuggestionItem","id","concat","focused"],"mappings":";;;;;;;;;;;;;;IAgBaA,WAA4B,GAAG,SAA/BA,WAA4BA,CAAAC,IAAA,EAAA;AAAA,EAAA,IAAMC,KAAK,GAAAD,IAAA,CAALC,KAAK;IAAEC,OAAO,GAAAF,IAAA,CAAPE,OAAO;IAAEC,MAAM,GAAAH,IAAA,CAANG,MAAM;IAAEC,aAAa,GAAAJ,IAAA,CAAbI,aAAa;IAAEC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;IAAEC,UAAU,GAAAN,IAAA,CAAVM,UAAU,CAAA;AAAA,EAAA,oBACtGC,sBAAA,CAAAC,aAAA,CAACC,qBAAI,EAAA;AACDC,IAAAA,IAAI,EAAET,KAAM;AACZU,IAAAA,MAAM,EAAEC,mCAAiB,CAACR,aAAa,CAAE;AACzCS,IAAAA,UAAU,EAAE,KAAM;AAClBC,IAAAA,UAAU,EAAE,GAAI;AAChBC,IAAAA,OAAO,EAAC,IAAI;AACZV,IAAAA,QAAQ,EAAEA,QAAAA;AAAS,GAAA,EAElB,UAACW,IAAI,EAAEC,KAAK,EAAEC,KAAK,EAAA;IAAA,oBAChBX,sBAAA,CAAAC,aAAA,CAASU,KAAAA,EAAAA,KAAK,eACVX,sBAAA,CAAAC,aAAA,CAACW,6BAAc,EAAA;AACXH,MAAAA,IAAI,EAAEA,IAAK;AACXd,MAAAA,OAAO,EAAEA,OAAQ;MACjBkB,EAAE,EAAA,EAAA,CAAAC,MAAA,CAAKlB,MAAM,OAAAkB,MAAA,CAAIJ,KAAK,CAAG;AACzBK,MAAAA,OAAO,EAAE,KAAM;AACfhB,MAAAA,UAAU,EAAEA,UAAAA;AAAW,KAC1B,CACA,CAAC,CAAA;AAAA,GAER,CAAC,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"VirtualList.js","sources":["../../../../../src/components/Autocomplete/ui/VirtualList/VirtualList.tsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport { getHeightAsNumber } from 'src/utils';\n\nimport { SuggestionItem } from '../SuggestionItem/SuggestionItem';\nimport type { SuggestionItemType } from '../../Autocomplete.types';\n\ninterface Props {\n items: SuggestionItemType[];\n onClick: (e: SuggestionItemType) => void;\n listId: string;\n listMaxHeight?: string;\n onScroll?: (e: React.UIEvent<HTMLElement>) => void;\n renderItem?: (item: SuggestionItemType) => React.ReactNode;\n}\n\nexport const VirtualList: React.FC<Props> = ({ items, onClick, listId, listMaxHeight, onScroll, renderItem }) => {\n const parentRef = useRef<HTMLDivElement>(null);\n\n const virtualizer = useVirtualizer({\n count: items.length,\n getScrollElement: () => parentRef.current,\n estimateSize: () => 48,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n\n return (\n <div\n ref={parentRef}\n style={{\n height: 'auto',\n maxHeight: getHeightAsNumber(listMaxHeight),\n overflowY: 'auto',\n }}\n onScroll={onScroll}\n >\n <div\n style={{\n height: virtualizer.getTotalSize(),\n width: '100%',\n position: 'relative',\n }}\n >\n <div\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n transform: `translateY(${virtualItems[0]?.start ?? 0}px)`,\n }}\n >\n {virtualItems.map((virtualRow) => (\n <div\n key={virtualRow.key as React.Key}\n data-index={virtualRow.index}\n ref={virtualizer.measureElement}\n >\n <SuggestionItem\n item={items[virtualRow.index]}\n onClick={onClick}\n id={`${listId}/${virtualRow.index}`}\n focused={false}\n renderItem={renderItem}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n"],"names":["VirtualList","_ref","_virtualItems$0$start","_virtualItems$","items","onClick","listId","listMaxHeight","onScroll","renderItem","parentRef","useRef","virtualizer","useVirtualizer","count","length","getScrollElement","current","estimateSize","virtualItems","getVirtualItems","React","createElement","ref","style","height","maxHeight","getHeightAsNumber","overflowY","getTotalSize","width","position","top","left","transform","concat","start","map","virtualRow","key","index","measureElement","SuggestionItem","item","id","focused"],"mappings":"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"}
@@ -38,12 +38,13 @@ var carouselNewRoot = function carouselNewRoot(Root) {
38
38
  _ref$gap = _ref.gap,
39
39
  gap = _ref$gap === void 0 ? '20px' : _ref$gap,
40
40
  className = _ref.className,
41
- style = _ref.style;
42
- var _useState = React.useState(0),
41
+ style = _ref.style,
42
+ defaultIndex = _ref.defaultIndex;
43
+ var slidesAmount = React.Children.count(children);
44
+ var _useState = React.useState(defaultIndex && defaultIndex >= 0 ? Math.min(slidesAmount - 1, defaultIndex) : 0),
43
45
  _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
44
46
  index = _useState2[0],
45
47
  setIndex = _useState2[1];
46
- var slidesAmount = React.Children.count(children);
47
48
  var handleClickLeft = function handleClickLeft() {
48
49
  setIndex(Math.max(0, index - 1));
49
50
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.js","sources":["../../../../src/components/Carousel/CarouselNew/Carousel.tsx"],"sourcesContent":["import { RootProps } from 'src/engines';\nimport React, { forwardRef, useState, Children } from 'react';\nimport { IconDisclosureLeft, IconDisclosureRight } from 'src/components/_Icon';\nimport { useDisableScroll } from 'src/hooks';\n\nimport { classes } from './Carousel.tokens';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base, CarouselWrapper, CarouselTrack, ControlsWrapper, IconButton } from './Carousel.styles';\nimport { CarouselNewProps } from './Carousel.types';\nimport { useCarousel } from './hooks/useCarousel';\nimport { Dots } from './ui';\n\nconst VISIBLE_DOTS_DEFAULT = 10;\nconst DOTS_CENTERED_DEFAULT = false;\n\n/**\n * Компонент для создания списков с прокруткой.\n */\nexport const carouselNewRoot = (Root: RootProps<HTMLDivElement, CarouselNewProps>) =>\n forwardRef<HTMLDivElement, CarouselNewProps>(\n (\n {\n view,\n size,\n scrollAlign = 'start',\n children,\n controlArrowsDisabled = false,\n paginationOptions,\n gap = '20px',\n className,\n style,\n },\n ref,\n ) => {\n const [index, setIndex] = useState(0);\n\n const slidesAmount = Children.count(children);\n\n const handleClickLeft = () => {\n setIndex(Math.max(0, index - 1));\n };\n\n const handleClickRight = () => {\n setIndex(Math.min(slidesAmount - 1, index + 1));\n };\n\n const { scrollRef, trackRef } = useCarousel({\n index,\n scrollAlign,\n });\n\n useDisableScroll(scrollRef);\n\n return (\n <Root className={className} style={style} size={size} view={view} ref={ref}>\n <ControlsWrapper>\n {index !== 0 && !controlArrowsDisabled && (\n <IconButton className={classes.leftControlButton} onClick={handleClickLeft}>\n <IconDisclosureLeft size=\"m\" color=\"inherit\" />\n </IconButton>\n )}\n\n <CarouselWrapper ref={scrollRef}>\n <CarouselTrack ref={trackRef} gap={gap}>\n {children}\n </CarouselTrack>\n </CarouselWrapper>\n\n {index !== slidesAmount - 1 && !controlArrowsDisabled && (\n <IconButton className={classes.rightControlButton} onClick={handleClickRight}>\n <IconDisclosureRight size=\"m\" color=\"inherit\" />\n </IconButton>\n )}\n </ControlsWrapper>\n\n {!paginationOptions?.disabled && (\n <Dots\n index={index}\n onChange={setIndex}\n visibleCount={paginationOptions?.visibleDots || VISIBLE_DOTS_DEFAULT}\n count={slidesAmount}\n centered={paginationOptions?.centered || DOTS_CENTERED_DEFAULT}\n />\n )}\n </Root>\n );\n },\n );\n\nexport const carouselNewConfig = {\n name: 'Carousel',\n tag: 'div',\n layout: carouselNewRoot,\n base,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n },\n defaults: {\n view: 'default',\n size: 's',\n },\n};\n"],"names":["VISIBLE_DOTS_DEFAULT","DOTS_CENTERED_DEFAULT","carouselNewRoot","Root","forwardRef","_ref","ref","view","size","_ref$scrollAlign","scrollAlign","children","_ref$controlArrowsDis","controlArrowsDisabled","paginationOptions","_ref$gap","gap","className","style","_useState","useState","_useState2","_slicedToArray","index","setIndex","slidesAmount","Children","count","handleClickLeft","Math","max","handleClickRight","min","_useCarousel","useCarousel","scrollRef","trackRef","useDisableScroll","React","createElement","ControlsWrapper","IconButton","classes","leftControlButton","onClick","_IconDisclosureLeft","IconDisclosureLeft","color","CarouselWrapper","CarouselTrack","rightControlButton","_IconDisclosureRight","IconDisclosureRight","disabled","Dots","onChange","visibleCount","visibleDots","centered","carouselNewConfig","name","tag","layout","base","variations","css","viewCSS","sizeCSS","defaults"],"mappings":"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"}
1
+ {"version":3,"file":"Carousel.js","sources":["../../../../src/components/Carousel/CarouselNew/Carousel.tsx"],"sourcesContent":["import { RootProps } from 'src/engines';\nimport React, { forwardRef, useState, Children } from 'react';\nimport { IconDisclosureLeft, IconDisclosureRight } from 'src/components/_Icon';\nimport { useDisableScroll } from 'src/hooks';\n\nimport { classes } from './Carousel.tokens';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base, CarouselWrapper, CarouselTrack, ControlsWrapper, IconButton } from './Carousel.styles';\nimport { CarouselNewProps } from './Carousel.types';\nimport { useCarousel } from './hooks/useCarousel';\nimport { Dots } from './ui';\n\nconst VISIBLE_DOTS_DEFAULT = 10;\nconst DOTS_CENTERED_DEFAULT = false;\n\n/**\n * Компонент для создания списков с прокруткой.\n */\nexport const carouselNewRoot = (Root: RootProps<HTMLDivElement, CarouselNewProps>) =>\n forwardRef<HTMLDivElement, CarouselNewProps>(\n (\n {\n view,\n size,\n scrollAlign = 'start',\n children,\n controlArrowsDisabled = false,\n paginationOptions,\n gap = '20px',\n className,\n style,\n defaultIndex,\n },\n ref,\n ) => {\n const slidesAmount = Children.count(children);\n\n const [index, setIndex] = useState(\n defaultIndex && defaultIndex >= 0 ? Math.min(slidesAmount - 1, defaultIndex) : 0,\n );\n\n const handleClickLeft = () => {\n setIndex(Math.max(0, index - 1));\n };\n\n const handleClickRight = () => {\n setIndex(Math.min(slidesAmount - 1, index + 1));\n };\n\n const { scrollRef, trackRef } = useCarousel({\n index,\n scrollAlign,\n });\n\n useDisableScroll(scrollRef);\n\n return (\n <Root className={className} style={style} size={size} view={view} ref={ref}>\n <ControlsWrapper>\n {index !== 0 && !controlArrowsDisabled && (\n <IconButton className={classes.leftControlButton} onClick={handleClickLeft}>\n <IconDisclosureLeft size=\"m\" color=\"inherit\" />\n </IconButton>\n )}\n\n <CarouselWrapper ref={scrollRef}>\n <CarouselTrack ref={trackRef} gap={gap}>\n {children}\n </CarouselTrack>\n </CarouselWrapper>\n\n {index !== slidesAmount - 1 && !controlArrowsDisabled && (\n <IconButton className={classes.rightControlButton} onClick={handleClickRight}>\n <IconDisclosureRight size=\"m\" color=\"inherit\" />\n </IconButton>\n )}\n </ControlsWrapper>\n\n {!paginationOptions?.disabled && (\n <Dots\n index={index}\n onChange={setIndex}\n visibleCount={paginationOptions?.visibleDots || VISIBLE_DOTS_DEFAULT}\n count={slidesAmount}\n centered={paginationOptions?.centered || DOTS_CENTERED_DEFAULT}\n />\n )}\n </Root>\n );\n },\n );\n\nexport const carouselNewConfig = {\n name: 'Carousel',\n tag: 'div',\n layout: carouselNewRoot,\n base,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n },\n defaults: {\n view: 'default',\n size: 's',\n },\n};\n"],"names":["VISIBLE_DOTS_DEFAULT","DOTS_CENTERED_DEFAULT","carouselNewRoot","Root","forwardRef","_ref","ref","view","size","_ref$scrollAlign","scrollAlign","children","_ref$controlArrowsDis","controlArrowsDisabled","paginationOptions","_ref$gap","gap","className","style","defaultIndex","slidesAmount","Children","count","_useState","useState","Math","min","_useState2","_slicedToArray","index","setIndex","handleClickLeft","max","handleClickRight","_useCarousel","useCarousel","scrollRef","trackRef","useDisableScroll","React","createElement","ControlsWrapper","IconButton","classes","leftControlButton","onClick","_IconDisclosureLeft","IconDisclosureLeft","color","CarouselWrapper","CarouselTrack","rightControlButton","_IconDisclosureRight","IconDisclosureRight","disabled","Dots","onChange","visibleCount","visibleDots","centered","carouselNewConfig","name","tag","layout","base","variations","css","viewCSS","sizeCSS","defaults"],"mappings":"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"}
@@ -45,6 +45,7 @@ var useCarousel = function useCarousel(_ref2) {
45
45
  scrollAlign = _ref2.scrollAlign;
46
46
  var scrollRef = React.useRef(null);
47
47
  var trackRef = React.useRef(null);
48
+ var isFirstRender = React.useRef(true);
48
49
 
49
50
  // Прокрутка до нужной позиции индекса, если индекс изменился.
50
51
  React.useEffect(function () {
@@ -61,9 +62,13 @@ var useCarousel = function useCarousel(_ref2) {
61
62
  scrollAlign: scrollAlign
62
63
  });
63
64
  scrollRef.current.scrollTo({
64
- left: pos
65
+ left: pos,
66
+ behavior: isFirstRender.current ? 'instant' : 'smooth'
65
67
  });
66
68
  }
69
+ if (isFirstRender.current) {
70
+ isFirstRender.current = false;
71
+ }
67
72
  }, [index]);
68
73
  return {
69
74
  scrollRef: scrollRef,
@@ -1 +1 @@
1
- {"version":3,"file":"useCarousel.js","sources":["../../../../../src/components/Carousel/CarouselNew/hooks/useCarousel.tsx"],"sourcesContent":["import { useEffect, useRef, RefObject } from 'react';\n\nimport { CarouselNewProps as CarouselProps } from '../Carousel.types';\n\n/**\n * Подсчет отступа для скролла до переданного индекса.\n */\nexport const getCalculatedPos = ({\n scrollRef,\n trackRef,\n itemsCollection,\n index,\n scrollAlign,\n}: {\n scrollRef: RefObject<HTMLDivElement>;\n trackRef: RefObject<HTMLDivElement>;\n itemsCollection: HTMLCollection;\n index: number;\n scrollAlign: CarouselProps['scrollAlign'];\n}): number => {\n const item = itemsCollection.item(index);\n\n if (!item || !trackRef.current || !scrollRef.current) {\n return 0;\n }\n\n const itemRect = item.getBoundingClientRect();\n const trackRect = trackRef.current.getBoundingClientRect();\n const scrollRect = scrollRef.current.getBoundingClientRect();\n\n const left = itemRect.left - trackRect.left + trackRef.current.scrollLeft;\n\n switch (scrollAlign) {\n case 'start': {\n return left;\n }\n case 'center': {\n return left - scrollRect.width / 2 + itemRect.width / 2;\n }\n case 'end': {\n return left - scrollRect.width + itemRect.width;\n }\n default: {\n return 0;\n }\n }\n};\n\ntype UseCarouselOptions = Pick<CarouselProps, 'scrollAlign'> & {\n index: number;\n};\n\ntype UseCarouselHookResult = {\n scrollRef: RefObject<HTMLDivElement>;\n trackRef: RefObject<HTMLDivElement>;\n};\n\nexport const useCarousel = ({ index, scrollAlign }: UseCarouselOptions): UseCarouselHookResult => {\n const scrollRef = useRef<HTMLDivElement>(null);\n const trackRef = useRef<HTMLDivElement>(null);\n\n // Прокрутка до нужной позиции индекса, если индекс изменился.\n useEffect(() => {\n if (!scrollRef.current || !trackRef.current) {\n return;\n }\n\n const itemsCollection = trackRef.current.children;\n\n if (itemsCollection && itemsCollection.length > 0) {\n const pos = getCalculatedPos({\n scrollRef,\n trackRef,\n itemsCollection,\n index,\n scrollAlign,\n });\n\n scrollRef.current.scrollTo({ left: pos });\n }\n }, [index]);\n\n return {\n scrollRef,\n trackRef,\n };\n};\n"],"names":["getCalculatedPos","_ref","scrollRef","trackRef","itemsCollection","index","scrollAlign","item","current","itemRect","getBoundingClientRect","trackRect","scrollRect","left","scrollLeft","width","useCarousel","_ref2","useRef","useEffect","children","length","pos","scrollTo"],"mappings":"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"}
1
+ {"version":3,"file":"useCarousel.js","sources":["../../../../../src/components/Carousel/CarouselNew/hooks/useCarousel.tsx"],"sourcesContent":["import { useEffect, useRef, RefObject } from 'react';\n\nimport { CarouselNewProps as CarouselProps } from '../Carousel.types';\n\n/**\n * Подсчет отступа для скролла до переданного индекса.\n */\nexport const getCalculatedPos = ({\n scrollRef,\n trackRef,\n itemsCollection,\n index,\n scrollAlign,\n}: {\n scrollRef: RefObject<HTMLDivElement>;\n trackRef: RefObject<HTMLDivElement>;\n itemsCollection: HTMLCollection;\n index: number;\n scrollAlign: CarouselProps['scrollAlign'];\n}): number => {\n const item = itemsCollection.item(index);\n\n if (!item || !trackRef.current || !scrollRef.current) {\n return 0;\n }\n\n const itemRect = item.getBoundingClientRect();\n const trackRect = trackRef.current.getBoundingClientRect();\n const scrollRect = scrollRef.current.getBoundingClientRect();\n\n const left = itemRect.left - trackRect.left + trackRef.current.scrollLeft;\n\n switch (scrollAlign) {\n case 'start': {\n return left;\n }\n case 'center': {\n return left - scrollRect.width / 2 + itemRect.width / 2;\n }\n case 'end': {\n return left - scrollRect.width + itemRect.width;\n }\n default: {\n return 0;\n }\n }\n};\n\ntype UseCarouselOptions = Pick<CarouselProps, 'scrollAlign'> & {\n index: number;\n};\n\ntype UseCarouselHookResult = {\n scrollRef: RefObject<HTMLDivElement>;\n trackRef: RefObject<HTMLDivElement>;\n};\n\nexport const useCarousel = ({ index, scrollAlign }: UseCarouselOptions): UseCarouselHookResult => {\n const scrollRef = useRef<HTMLDivElement>(null);\n const trackRef = useRef<HTMLDivElement>(null);\n const isFirstRender = useRef(true);\n\n // Прокрутка до нужной позиции индекса, если индекс изменился.\n useEffect(() => {\n if (!scrollRef.current || !trackRef.current) {\n return;\n }\n\n const itemsCollection = trackRef.current.children;\n\n if (itemsCollection && itemsCollection.length > 0) {\n const pos = getCalculatedPos({\n scrollRef,\n trackRef,\n itemsCollection,\n index,\n scrollAlign,\n });\n\n scrollRef.current.scrollTo({ left: pos, behavior: isFirstRender.current ? 'instant' : 'smooth' });\n }\n\n if (isFirstRender.current) {\n isFirstRender.current = false;\n }\n }, [index]);\n\n return {\n scrollRef,\n trackRef,\n };\n};\n"],"names":["getCalculatedPos","_ref","scrollRef","trackRef","itemsCollection","index","scrollAlign","item","current","itemRect","getBoundingClientRect","trackRect","scrollRect","left","scrollLeft","width","useCarousel","_ref2","useRef","isFirstRender","useEffect","children","length","pos","scrollTo","behavior"],"mappings":"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"}
@@ -15,6 +15,7 @@ var base$1 = require('./variations/_size/base.js');
15
15
  var SelectNative = require('./ui/SelectNative/SelectNative.js');
16
16
  var Combobox_context = require('./Combobox.context.js');
17
17
  var initialItemsTransform = require('./utils/initialItemsTransform.js');
18
+ var getTextValue = require('./utils/getTextValue.js');
18
19
  var react = require('../../../utils/react.js');
19
20
  var filterItems = require('./utils/filterItems.js');
20
21
  var pathReducer = require('./reducers/pathReducer.js');
@@ -24,6 +25,7 @@ var isEmpty = require('../../../utils/isEmpty.js');
24
25
  var updateDescendants = require('./utils/updateDescendants.js');
25
26
  var updateAncestors = require('./utils/updateAncestors.js');
26
27
  var updateSingleAncestors = require('./utils/updateSingleAncestors.js');
28
+ var useDidMountLayoutEffect = require('../../../hooks/useDidMountLayoutEffect.js');
27
29
  var Target_styles = require('./ui/Target/Target.styles.js');
28
30
  var sizeToIconSize = require('../../Select/utils/sizeToIconSize.js');
29
31
  var getItemId = require('./utils/getItemId.js');
@@ -44,7 +46,7 @@ var _excluded = ["name", "multiple", "value", "onChange", "defaultValue", "isTar
44
46
 
45
47
  var comboboxRoot = function comboboxRoot(Root) {
46
48
  return /*#__PURE__*/React.forwardRef(function (props, ref) {
47
- var _valueToItemMap$get, _getItemByFocused, _StyledLeftHelper;
49
+ var _getItemByFocused, _StyledLeftHelper;
48
50
  var name = props.name,
49
51
  multiple = props.multiple,
50
52
  outerValue = props.value,
@@ -62,6 +64,7 @@ var comboboxRoot = function comboboxRoot(Root) {
62
64
  textAfter = props.textAfter,
63
65
  _props$variant = props.variant,
64
66
  variant = _props$variant === void 0 ? 'normal' : _props$variant,
67
+ listOverflow = props.listOverflow,
65
68
  listHeight = props.listHeight,
66
69
  listMaxHeight = props.listMaxHeight,
67
70
  listWidth = props.listWidth,
@@ -105,7 +108,7 @@ var comboboxRoot = function comboboxRoot(Root) {
105
108
  valueToCheckedMap = _useMemo2[0],
106
109
  valueToItemMap = _useMemo2[1],
107
110
  labelToItemMap = _useMemo2[2];
108
- var _useState = React.useState(multiple || Array.isArray(outerValue) ? '' : ((_valueToItemMap$get = valueToItemMap.get(outerValue)) === null || _valueToItemMap$get === void 0 ? void 0 : _valueToItemMap$get.label) || (outerValue === null || outerValue === void 0 ? void 0 : outerValue.toString()) || ''),
111
+ var _useState = React.useState(getTextValue.getTextValue(multiple, outerValue, valueToItemMap, renderValue)),
109
112
  _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
110
113
  textValue = _useState2[0],
111
114
  setTextValue = _useState2[1];
@@ -118,10 +121,8 @@ var comboboxRoot = function comboboxRoot(Root) {
118
121
  var floatingPopoverRef = React.useRef(null);
119
122
  var inputForkRef = plasmaCore.useForkRef(inputRef, ref);
120
123
  var treeId = react.safeUseId();
121
- var listWrapperRef = React.useRef(null);
122
124
  var filteredItems = React.useMemo(function () {
123
- var _valueToItemMap$get2;
124
- return filterItems.filterItems(transformedItems, textValue, ((_valueToItemMap$get2 = valueToItemMap.get(value)) === null || _valueToItemMap$get2 === void 0 ? void 0 : _valueToItemMap$get2.label) || value, filter);
125
+ return filterItems.filterItems(transformedItems, textValue, getTextValue.getTextValue(multiple, value, valueToItemMap, renderValue), filter);
125
126
  }, [transformedItems, textValue, filter]);
126
127
  var _useMemo3 = React.useMemo(function () {
127
128
  return getPathMaps.getPathMap(filteredItems);
@@ -164,19 +165,8 @@ var comboboxRoot = function comboboxRoot(Root) {
164
165
  onToggle(false);
165
166
  }
166
167
 
167
- // Проверяем, отличается ли значение в инпуте от выбранного value после закрытия дропдауна.
168
- // Если изменилось, то возвращаем label выбранного айтема.
169
- // Если нет выбранного элемента, то стираем значение инпута.
170
- if (textValue !== value) {
171
- if (isEmpty.isEmpty(value)) {
172
- setTextValue('');
173
- } else if (multiple) {
174
- setTextValue('');
175
- } else {
176
- var _valueToItemMap$get3;
177
- setTextValue(((_valueToItemMap$get3 = valueToItemMap.get(value)) === null || _valueToItemMap$get3 === void 0 ? void 0 : _valueToItemMap$get3.label) || value || '');
178
- }
179
- }
168
+ // Возвращаем актуальное значение поля ввода после закрытия выпадающего списка.
169
+ setTextValue(getTextValue.getTextValue(multiple, value, valueToItemMap, renderValue));
180
170
  }, floatingPopoverRef);
181
171
 
182
172
  // Эта функция срабатывает при изменении Combobox и
@@ -184,12 +174,12 @@ var comboboxRoot = function comboboxRoot(Root) {
184
174
  var onChange = function onChange(newValue, item) {
185
175
  // Условие для отправки изменений наружу
186
176
  if (props.onChange) {
187
- // Условие для отправки если комбобокс используется без формы.
177
+ // Условие для отправки, если комбобокс используется без формы.
188
178
  if (!props.name && (typeof newValue === 'string' || Array.isArray(newValue))) {
189
179
  props.onChange(newValue, item || null);
190
180
  }
191
181
 
192
- // Условие для отправки если комбобокс используется с формой.
182
+ // Условие для отправки, если комбобокс используется с формой.
193
183
  if (props.name && _rollupPluginBabelHelpers.typeof(newValue) === 'object' && !Array.isArray(newValue)) {
194
184
  props.onChange(newValue);
195
185
  }
@@ -241,9 +231,9 @@ var comboboxRoot = function comboboxRoot(Root) {
241
231
  if (renderValue && !isTargetAmount) {
242
232
  var resultValues = _rollupPluginBabelHelpers.toConsumableArray(value);
243
233
  value.forEach(function (_, index) {
244
- var _valueToItemMap$get4;
234
+ var _valueToItemMap$get;
245
235
  var stringValue = value[index];
246
- var label = (_valueToItemMap$get4 = valueToItemMap.get(stringValue)) === null || _valueToItemMap$get4 === void 0 ? void 0 : _valueToItemMap$get4.label;
236
+ var label = (_valueToItemMap$get = valueToItemMap.get(stringValue)) === null || _valueToItemMap$get === void 0 ? void 0 : _valueToItemMap$get.label;
247
237
  var labelAfterRenderValue = renderValue(label ? labelToItemMap.get(label) : {
248
238
  value: stringValue,
249
239
  label: stringValue.toString()
@@ -372,8 +362,8 @@ var comboboxRoot = function comboboxRoot(Root) {
372
362
  });
373
363
  };
374
364
  var valueToItemMapper = function valueToItemMapper(stringValue) {
375
- var _valueToItemMap$get5;
376
- return ((_valueToItemMap$get5 = valueToItemMap.get(stringValue)) === null || _valueToItemMap$get5 === void 0 ? void 0 : _valueToItemMap$get5.label) || stringValue.toString();
365
+ var _valueToItemMap$get2;
366
+ return ((_valueToItemMap$get2 = valueToItemMap.get(stringValue)) === null || _valueToItemMap$get2 === void 0 ? void 0 : _valueToItemMap$get2.label) || stringValue.toString();
377
367
  };
378
368
  return value.map(renderValueMapper || valueToItemMapper);
379
369
  }
@@ -433,10 +423,6 @@ var comboboxRoot = function comboboxRoot(Root) {
433
423
  }
434
424
  }
435
425
  setChecked(checkedCopy);
436
- if (!multiple && textValue === value && valueToItemMap.has(value)) {
437
- var _valueToItemMap$get6;
438
- setTextValue(((_valueToItemMap$get6 = valueToItemMap.get(value)) === null || _valueToItemMap$get6 === void 0 ? void 0 : _valueToItemMap$get6.label) || '');
439
- }
440
426
 
441
427
  // В deps мы кладем именно outerValue и internalValue, а не просто value.
442
428
  // Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.
@@ -444,9 +430,8 @@ var comboboxRoot = function comboboxRoot(Root) {
444
430
  }, [outerValue, internalValue, items]);
445
431
 
446
432
  // При изменении value нужно возвращать значение в инпуте к исходному.
447
- React.useLayoutEffect(function () {
448
- var _valueToItemMap$get7;
449
- setTextValue(multiple ? '' : ((_valueToItemMap$get7 = valueToItemMap.get(value)) === null || _valueToItemMap$get7 === void 0 ? void 0 : _valueToItemMap$get7.label) || (value === null || value === void 0 ? void 0 : value.toString()) || '');
433
+ useDidMountLayoutEffect.useDidMountLayoutEffect(function () {
434
+ setTextValue(getTextValue.getTextValue(multiple, value, valueToItemMap, renderValue));
450
435
  }, [outerValue, internalValue]);
451
436
  React.useLayoutEffect(function () {
452
437
  if (defaultValue) {
@@ -548,7 +533,6 @@ var comboboxRoot = function comboboxRoot(Root) {
548
533
  readOnly: readOnly,
549
534
  name: name
550
535
  }, /*#__PURE__*/React__default.default.createElement(Combobox_styles.ListWrapper, {
551
- ref: listWrapperRef,
552
536
  listWidth: listWidth
553
537
  }, /*#__PURE__*/React__default.default.createElement(Combobox_styles.Ul, {
554
538
  role: "tree",
@@ -557,6 +541,7 @@ var comboboxRoot = function comboboxRoot(Root) {
557
541
  listMaxHeight: listMaxHeight || listHeight,
558
542
  ref: targetRef,
559
543
  virtual: virtual,
544
+ listOverflow: listOverflow,
560
545
  onScroll: virtual ? undefined : onScroll
561
546
  }, beforeList, isEmpty.isEmpty(filteredItems) ? /*#__PURE__*/React__default.default.createElement(Combobox_styles.StyledEmptyState, {
562
547
  className: Combobox_tokens.classes.emptyStateWrapper,
@@ -580,8 +565,7 @@ var comboboxRoot = function comboboxRoot(Root) {
580
565
  path: path,
581
566
  dispatchPath: dispatchPath,
582
567
  index: index,
583
- listWidth: listWidth,
584
- portal: listWrapperRef
568
+ listWidth: listWidth
585
569
  });
586
570
  })), afterList)))))));
587
571
  });