@consta/uikit 4.31.2 → 4.33.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 (233) hide show
  1. package/AttachmentCanary/index.d.ts +1 -0
  2. package/AttachmentCanary/index.js +1 -0
  3. package/PaginationCanary/index.d.ts +1 -0
  4. package/PaginationCanary/index.js +1 -0
  5. package/TooltipCanary/index.d.ts +1 -0
  6. package/TooltipCanary/index.js +1 -0
  7. package/__internal__/src/components/AttachmentCanary/Attachment.css +1 -0
  8. package/__internal__/src/components/AttachmentCanary/AttachmentCanary.d.ts +5 -0
  9. package/__internal__/src/components/AttachmentCanary/AttachmentCanary.js +2 -0
  10. package/__internal__/src/components/AttachmentCanary/AttachmentCanary.js.map +1 -0
  11. package/__internal__/src/components/AttachmentCanary/index.d.ts +1 -0
  12. package/__internal__/src/components/AttachmentCanary/index.js +2 -0
  13. package/__internal__/src/components/AttachmentCanary/index.js.map +1 -0
  14. package/__internal__/src/components/AttachmentCanary/types.d.ts +22 -0
  15. package/__internal__/src/components/AttachmentCanary/types.js +2 -0
  16. package/__internal__/src/components/AttachmentCanary/types.js.map +1 -0
  17. package/__internal__/src/components/BadgeGroup/BadgeGroup.css +1 -1
  18. package/__internal__/src/components/BadgeGroup/BadgeGroup.js +1 -1
  19. package/__internal__/src/components/BadgeGroup/BadgeGroup.js.map +1 -1
  20. package/__internal__/src/components/BookmarkTabsCanary/BookmarkTabsCanary.js +1 -1
  21. package/__internal__/src/components/BookmarkTabsCanary/BookmarkTabsCanary.js.map +1 -1
  22. package/__internal__/src/components/BookmarkTabsCanary/BookmarkTabsTab/BookmarkTabsTab.css +1 -1
  23. package/__internal__/src/components/BookmarkTabsCanary/BookmarkTabsTab/BookmarkTabsTab.js +1 -1
  24. package/__internal__/src/components/BookmarkTabsCanary/BookmarkTabsTab/BookmarkTabsTab.js.map +1 -1
  25. package/__internal__/src/components/BookmarkTabsCanary/types.d.ts +2 -2
  26. package/__internal__/src/components/BookmarkTabsCanary/types.js.map +1 -1
  27. package/__internal__/src/components/BookmarkTabsCanary/useBookmarkTabs.d.ts +1 -1
  28. package/__internal__/src/components/BookmarkTabsCanary/useBookmarkTabs.js.map +1 -1
  29. package/__internal__/src/components/CheckboxGroup/CheckboxGroup.js +1 -1
  30. package/__internal__/src/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
  31. package/__internal__/src/components/CheckboxGroup/helper.d.ts +1 -0
  32. package/__internal__/src/components/CheckboxGroup/types.d.ts +13 -9
  33. package/__internal__/src/components/CheckboxGroup/types.js +1 -1
  34. package/__internal__/src/components/CheckboxGroup/types.js.map +1 -1
  35. package/__internal__/src/components/ChoiceGroup/types.d.ts +3 -3
  36. package/__internal__/src/components/ChoiceGroup/types.js.map +1 -1
  37. package/__internal__/src/components/ChoiceGroupDeprecated/ChoiceGroupDeprecated.d.ts +3 -3
  38. package/__internal__/src/components/ChoiceGroupDeprecated/ChoiceGroupDeprecated.js.map +1 -1
  39. package/__internal__/src/components/Combobox/Combobox.js +1 -1
  40. package/__internal__/src/components/Combobox/Combobox.js.map +1 -1
  41. package/__internal__/src/components/Combobox/helpers.d.ts +3 -1
  42. package/__internal__/src/components/Combobox/helpers.js +1 -1
  43. package/__internal__/src/components/Combobox/helpers.js.map +1 -1
  44. package/__internal__/src/components/ComboboxCanary/ComboboxCanary.js +1 -1
  45. package/__internal__/src/components/ComboboxCanary/ComboboxCanary.js.map +1 -1
  46. package/__internal__/src/components/ComboboxCanary/helpers.d.ts +3 -1
  47. package/__internal__/src/components/ComboboxCanary/helpers.js +1 -1
  48. package/__internal__/src/components/ComboboxCanary/helpers.js.map +1 -1
  49. package/__internal__/src/components/DateTime/helpers/getHandleSelectDate.d.ts +3 -3
  50. package/__internal__/src/components/DateTime/helpers/getHandleSelectDate.js.map +1 -1
  51. package/__internal__/src/components/DateTime/helpers/types.d.ts +4 -4
  52. package/__internal__/src/components/DateTime/helpers/types.js.map +1 -1
  53. package/__internal__/src/components/DragNDropField/DragNDropFieldTooltip/DragNDropFieldTooltip.js +1 -1
  54. package/__internal__/src/components/DragNDropField/DragNDropFieldTooltip/DragNDropFieldTooltip.js.map +1 -1
  55. package/__internal__/src/components/Loader/Loader.css +1 -1
  56. package/__internal__/src/components/Loader/Loader.d.ts +1 -1
  57. package/__internal__/src/components/Loader/Loader.js +1 -1
  58. package/__internal__/src/components/Loader/Loader.js.map +1 -1
  59. package/__internal__/src/components/LoaderCanary/Loader.css +1 -1
  60. package/__internal__/src/components/LoaderCanary/LoaderCanary.d.ts +2 -2
  61. package/__internal__/src/components/LoaderCanary/types.d.ts +1 -1
  62. package/__internal__/src/components/LoaderCanary/types.js +1 -1
  63. package/__internal__/src/components/LoaderCanary/types.js.map +1 -1
  64. package/__internal__/src/components/PaginationCanary/Pagination.css +1 -0
  65. package/__internal__/src/components/PaginationCanary/PaginationArrow/PaginationArrow.css +1 -0
  66. package/__internal__/src/components/PaginationCanary/PaginationArrow/PaginationArrow.d.ts +11 -0
  67. package/__internal__/src/components/PaginationCanary/PaginationArrow/PaginationArrow.js +2 -0
  68. package/__internal__/src/components/PaginationCanary/PaginationArrow/PaginationArrow.js.map +1 -0
  69. package/__internal__/src/components/PaginationCanary/PaginationArrow/index.d.ts +1 -0
  70. package/__internal__/src/components/PaginationCanary/PaginationArrow/index.js +2 -0
  71. package/__internal__/src/components/PaginationCanary/PaginationArrow/index.js.map +1 -0
  72. package/__internal__/src/components/PaginationCanary/PaginationBase/PaginationBase.css +1 -0
  73. package/__internal__/src/components/PaginationCanary/PaginationBase/PaginationBase.d.ts +3 -0
  74. package/__internal__/src/components/PaginationCanary/PaginationBase/PaginationBase.js +2 -0
  75. package/__internal__/src/components/PaginationCanary/PaginationBase/PaginationBase.js.map +1 -0
  76. package/__internal__/src/components/PaginationCanary/PaginationBase/index.d.ts +1 -0
  77. package/__internal__/src/components/PaginationCanary/PaginationBase/index.js +2 -0
  78. package/__internal__/src/components/PaginationCanary/PaginationBase/index.js.map +1 -0
  79. package/__internal__/src/components/PaginationCanary/PaginationCanary.d.ts +3 -0
  80. package/__internal__/src/components/PaginationCanary/PaginationCanary.js +2 -0
  81. package/__internal__/src/components/PaginationCanary/PaginationCanary.js.map +1 -0
  82. package/__internal__/src/components/PaginationCanary/PaginationItem/PaginationItem.css +1 -0
  83. package/__internal__/src/components/PaginationCanary/PaginationItem/PaginationItem.d.ts +3 -0
  84. package/__internal__/src/components/PaginationCanary/PaginationItem/PaginationItem.js +2 -0
  85. package/__internal__/src/components/PaginationCanary/PaginationItem/PaginationItem.js.map +1 -0
  86. package/__internal__/src/components/PaginationCanary/PaginationItem/index.d.ts +1 -0
  87. package/__internal__/src/components/PaginationCanary/PaginationItem/index.js +2 -0
  88. package/__internal__/src/components/PaginationCanary/PaginationItem/index.js.map +1 -0
  89. package/__internal__/src/components/PaginationCanary/PaginationList/PaginationList.css +1 -0
  90. package/__internal__/src/components/PaginationCanary/PaginationList/PaginationList.d.ts +3 -0
  91. package/__internal__/src/components/PaginationCanary/PaginationList/PaginationList.js +2 -0
  92. package/__internal__/src/components/PaginationCanary/PaginationList/PaginationList.js.map +1 -0
  93. package/__internal__/src/components/PaginationCanary/PaginationList/index.d.ts +1 -0
  94. package/__internal__/src/components/PaginationCanary/PaginationList/index.js +2 -0
  95. package/__internal__/src/components/PaginationCanary/PaginationList/index.js.map +1 -0
  96. package/__internal__/src/components/PaginationCanary/PaginationNumberInput/PaginationNumberInput.css +1 -0
  97. package/__internal__/src/components/PaginationCanary/PaginationNumberInput/PaginationNumberInput.d.ts +10 -0
  98. package/__internal__/src/components/PaginationCanary/PaginationNumberInput/PaginationNumberInput.js +2 -0
  99. package/__internal__/src/components/PaginationCanary/PaginationNumberInput/PaginationNumberInput.js.map +1 -0
  100. package/__internal__/src/components/PaginationCanary/PaginationNumberInput/index.d.ts +1 -0
  101. package/__internal__/src/components/PaginationCanary/PaginationNumberInput/index.js +2 -0
  102. package/__internal__/src/components/PaginationCanary/PaginationNumberInput/index.js.map +1 -0
  103. package/__internal__/src/components/PaginationCanary/helpers.d.ts +560 -0
  104. package/__internal__/src/components/PaginationCanary/helpers.js +2 -0
  105. package/__internal__/src/components/PaginationCanary/helpers.js.map +1 -0
  106. package/__internal__/src/components/PaginationCanary/index.d.ts +2 -0
  107. package/__internal__/src/components/PaginationCanary/index.js +2 -0
  108. package/__internal__/src/components/PaginationCanary/index.js.map +1 -0
  109. package/__internal__/src/components/PaginationCanary/types.d.ts +148 -0
  110. package/__internal__/src/components/PaginationCanary/types.js +2 -0
  111. package/__internal__/src/components/PaginationCanary/types.js.map +1 -0
  112. package/__internal__/src/components/PaginationCanary/usePaginationItems.d.ts +19 -0
  113. package/__internal__/src/components/PaginationCanary/usePaginationItems.js +2 -0
  114. package/__internal__/src/components/PaginationCanary/usePaginationItems.js.map +1 -0
  115. package/__internal__/src/components/PaginationCanary/usePaginationKeys.d.ts +10 -0
  116. package/__internal__/src/components/PaginationCanary/usePaginationKeys.js +2 -0
  117. package/__internal__/src/components/PaginationCanary/usePaginationKeys.js.map +1 -0
  118. package/__internal__/src/components/ProgressStepBar/ProgressStepBarItem/ProgressStepBarItem.js +1 -1
  119. package/__internal__/src/components/ProgressStepBar/ProgressStepBarItem/ProgressStepBarItem.js.map +1 -1
  120. package/__internal__/src/components/Responses/Responses.css +1 -1
  121. package/__internal__/src/components/Responses/Responses.d.ts +1 -1
  122. package/__internal__/src/components/Responses/Responses.js +1 -1
  123. package/__internal__/src/components/Responses/Responses.js.map +1 -1
  124. package/__internal__/src/components/Responses403/Responses403.js +1 -1
  125. package/__internal__/src/components/Responses403/Responses403.js.map +1 -1
  126. package/__internal__/src/components/Responses500/Responses500.d.ts +2 -2
  127. package/__internal__/src/components/Responses500/Responses500.js +1 -1
  128. package/__internal__/src/components/Responses500/Responses500.js.map +1 -1
  129. package/__internal__/src/components/Responses503/Responses503.d.ts +2 -2
  130. package/__internal__/src/components/Responses503/Responses503.js +1 -1
  131. package/__internal__/src/components/Responses503/Responses503.js.map +1 -1
  132. package/__internal__/src/components/ResponsesConnectionError/ResponsesConnectionError.js +1 -1
  133. package/__internal__/src/components/ResponsesConnectionError/ResponsesConnectionError.js.map +1 -1
  134. package/__internal__/src/components/ResponsesDeleted/ResponsesDeleted.js +1 -1
  135. package/__internal__/src/components/ResponsesDeleted/ResponsesDeleted.js.map +1 -1
  136. package/__internal__/src/components/Select/Select.js +1 -1
  137. package/__internal__/src/components/Select/Select.js.map +1 -1
  138. package/__internal__/src/components/Select/helpers.d.ts +2 -1
  139. package/__internal__/src/components/Select/helpers.js +1 -1
  140. package/__internal__/src/components/Select/helpers.js.map +1 -1
  141. package/__internal__/src/components/SelectCanary/SelectCanary.js +1 -1
  142. package/__internal__/src/components/SelectCanary/SelectCanary.js.map +1 -1
  143. package/__internal__/src/components/SelectCanary/helpers.d.ts +2 -1
  144. package/__internal__/src/components/SelectCanary/helpers.js +1 -1
  145. package/__internal__/src/components/SelectCanary/helpers.js.map +1 -1
  146. package/__internal__/src/components/SelectComponents/Select.css +1 -1
  147. package/__internal__/src/components/SelectComponentsCanary/Select.css +1 -1
  148. package/__internal__/src/components/Slider/SliderPoint/SliderPoint.js +1 -1
  149. package/__internal__/src/components/Slider/SliderPoint/SliderPoint.js.map +1 -1
  150. package/__internal__/src/components/Table/filtering.js +1 -1
  151. package/__internal__/src/components/Table/filtering.js.map +1 -1
  152. package/__internal__/src/components/Table/helpers.js +1 -1
  153. package/__internal__/src/components/Table/helpers.js.map +1 -1
  154. package/__internal__/src/components/Tabs/Tabs.js +1 -1
  155. package/__internal__/src/components/Tabs/Tabs.js.map +1 -1
  156. package/__internal__/src/components/Tabs/{FitModeDropdownWrapper → TabsFitModeDropdownWrapper}/TabsFitModeDropdownWrapper.d.ts +1 -1
  157. package/__internal__/src/components/Tabs/TabsFitModeDropdownWrapper/TabsFitModeDropdownWrapper.js +2 -0
  158. package/__internal__/src/components/Tabs/TabsFitModeDropdownWrapper/TabsFitModeDropdownWrapper.js.map +1 -0
  159. package/__internal__/src/components/Tabs/TabsFitModeDropdownWrapper/useFittingItems.js.map +1 -0
  160. package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.js +2 -0
  161. package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.js.map +1 -0
  162. package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/__test__/helpers.test.js.map +1 -0
  163. package/__internal__/src/components/Tabs/TabsLine/TabsLine.js.map +1 -0
  164. package/__internal__/src/components/Tabs/TabsListWrapper/TabsListWrapper.d.ts +2 -0
  165. package/__internal__/src/components/Tabs/TabsListWrapper/TabsListWrapper.js +2 -0
  166. package/__internal__/src/components/Tabs/TabsListWrapper/TabsListWrapper.js.map +1 -0
  167. package/__internal__/src/components/Tabs/TabsListWrapper/index.d.ts +1 -0
  168. package/__internal__/src/components/Tabs/TabsListWrapper/index.js +2 -0
  169. package/__internal__/src/components/Tabs/TabsListWrapper/index.js.map +1 -0
  170. package/__internal__/src/components/Tabs/TabsMoreItems/TabsMoreItems.css +1 -0
  171. package/__internal__/src/components/Tabs/TabsMoreItems/TabsMoreItems.js +2 -0
  172. package/__internal__/src/components/Tabs/TabsMoreItems/TabsMoreItems.js.map +1 -0
  173. package/__internal__/src/components/Tabs/TabsTab/TabsTab.js.map +1 -0
  174. package/__internal__/src/components/Tabs/helpers.d.ts +329 -329
  175. package/__internal__/src/components/Tabs/helpers.js +1 -1
  176. package/__internal__/src/components/Tabs/helpers.js.map +1 -1
  177. package/__internal__/src/components/Tabs/index.d.ts +1 -1
  178. package/__internal__/src/components/Tabs/index.js +1 -1
  179. package/__internal__/src/components/Tabs/index.js.map +1 -1
  180. package/__internal__/src/components/Tabs/types.d.ts +3 -2
  181. package/__internal__/src/components/Tabs/types.js.map +1 -1
  182. package/__internal__/src/components/TabsDeprecated/FitModeScrollWrapper/helpers.js +1 -1
  183. package/__internal__/src/components/TabsDeprecated/FitModeScrollWrapper/helpers.js.map +1 -1
  184. package/__internal__/src/components/Theme/_color/Theme_color_gpnDark.css +1 -1
  185. package/__internal__/src/components/TooltipCanary/Tooltip.css +1 -0
  186. package/__internal__/src/components/TooltipCanary/TooltipCanary.d.ts +4 -0
  187. package/__internal__/src/components/TooltipCanary/TooltipCanary.js +2 -0
  188. package/__internal__/src/components/TooltipCanary/TooltipCanary.js.map +1 -0
  189. package/__internal__/src/components/TooltipCanary/index.d.ts +2 -0
  190. package/__internal__/src/components/TooltipCanary/index.js +2 -0
  191. package/__internal__/src/components/TooltipCanary/index.js.map +1 -0
  192. package/__internal__/src/components/TooltipCanary/types.d.ts +23 -0
  193. package/__internal__/src/components/TooltipCanary/types.js +2 -0
  194. package/__internal__/src/components/TooltipCanary/types.js.map +1 -0
  195. package/__internal__/src/components/UserSelect/UserSelect.js +1 -1
  196. package/__internal__/src/components/UserSelect/UserSelect.js.map +1 -1
  197. package/__internal__/src/components/UserSelect/helpers.d.ts +3 -1
  198. package/__internal__/src/components/UserSelect/helpers.js +1 -1
  199. package/__internal__/src/components/UserSelect/helpers.js.map +1 -1
  200. package/__internal__/src/components/UserSelectCanary/UserSelectCanary.js +1 -1
  201. package/__internal__/src/components/UserSelectCanary/UserSelectCanary.js.map +1 -1
  202. package/__internal__/src/components/UserSelectCanary/helpers.d.ts +3 -1
  203. package/__internal__/src/components/UserSelectCanary/helpers.js +1 -1
  204. package/__internal__/src/components/UserSelectCanary/helpers.js.map +1 -1
  205. package/__internal__/src/hocs/withTooltip/withTooltip.d.ts +1 -1
  206. package/__internal__/src/hocs/withTooltip/withTooltip.js +1 -1
  207. package/__internal__/src/hocs/withTooltip/withTooltip.js.map +1 -1
  208. package/package.json +1 -1
  209. package/__internal__/src/components/Tabs/FitModeDropdownWrapper/TabsFitModeDropdownWrapper.js +0 -2
  210. package/__internal__/src/components/Tabs/FitModeDropdownWrapper/TabsFitModeDropdownWrapper.js.map +0 -1
  211. package/__internal__/src/components/Tabs/FitModeDropdownWrapper/useFittingItems.js.map +0 -1
  212. package/__internal__/src/components/Tabs/FitModeScrollWrapper/TabsFitModeScrollWrapper.js +0 -2
  213. package/__internal__/src/components/Tabs/FitModeScrollWrapper/TabsFitModeScrollWrapper.js.map +0 -1
  214. package/__internal__/src/components/Tabs/FitModeScrollWrapper/__test__/helpers.test.js.map +0 -1
  215. package/__internal__/src/components/Tabs/Line/TabsLine.js.map +0 -1
  216. package/__internal__/src/components/Tabs/MoreItems/TabsMoreItems.css +0 -1
  217. package/__internal__/src/components/Tabs/MoreItems/TabsMoreItems.js +0 -2
  218. package/__internal__/src/components/Tabs/MoreItems/TabsMoreItems.js.map +0 -1
  219. package/__internal__/src/components/Tabs/Tab/TabsTab.js.map +0 -1
  220. /package/__internal__/src/components/Tabs/{FitModeDropdownWrapper → TabsFitModeDropdownWrapper}/TabsFitModeDropdownWrapper.css +0 -0
  221. /package/__internal__/src/components/Tabs/{FitModeDropdownWrapper → TabsFitModeDropdownWrapper}/useFittingItems.d.ts +0 -0
  222. /package/__internal__/src/components/Tabs/{FitModeDropdownWrapper → TabsFitModeDropdownWrapper}/useFittingItems.js +0 -0
  223. /package/__internal__/src/components/Tabs/{FitModeScrollWrapper → TabsFitModeScrollWrapper}/TabsFitModeScrollWrapper.css +0 -0
  224. /package/__internal__/src/components/Tabs/{FitModeScrollWrapper → TabsFitModeScrollWrapper}/TabsFitModeScrollWrapper.d.ts +0 -0
  225. /package/__internal__/src/components/Tabs/{FitModeScrollWrapper → TabsFitModeScrollWrapper}/__test__/helpers.test.d.ts +0 -0
  226. /package/__internal__/src/components/Tabs/{FitModeScrollWrapper → TabsFitModeScrollWrapper}/__test__/helpers.test.js +0 -0
  227. /package/__internal__/src/components/Tabs/{Line → TabsLine}/TabsLine.css +0 -0
  228. /package/__internal__/src/components/Tabs/{Line → TabsLine}/TabsLine.d.ts +0 -0
  229. /package/__internal__/src/components/Tabs/{Line → TabsLine}/TabsLine.js +0 -0
  230. /package/__internal__/src/components/Tabs/{MoreItems → TabsMoreItems}/TabsMoreItems.d.ts +0 -0
  231. /package/__internal__/src/components/Tabs/{Tab → TabsTab}/TabsTab.css +0 -0
  232. /package/__internal__/src/components/Tabs/{Tab → TabsTab}/TabsTab.d.ts +0 -0
  233. /package/__internal__/src/components/Tabs/{Tab → TabsTab}/TabsTab.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"UserSelectCanary.js","names":["IconClose","IconSelect","React","forwardRef","useRef","usePropsHandler","cnSelect","defaultlabelForCreate","defaultLabelForEmptyItems","defaultlabelForNotFound","getInputWidth","SelectContainer","SelectDropdown","defaultPropForm","defaultPropSize","defaultPropView","useSelect","useForkRef","cnMixFocus","isNotNil","isMultipleParams","isNotMultipleParams","searchCompare","withDefaultGetters","UserSelectItem","UserSelectValue","COMPONENT_NAME","UserSelectRender","props","ref","defaultDropdownRef","controlInnerRef","helperInputFakeElement","controlRef","placeholder","onBlur","onFocus","items","onChange","value","disabled","ariaLabel","id","isLoading","required","dropdownRef","form","view","size","dropdownClassName","searchValueProp","searchValue","name","groups","getItemKey","getItemLabel","getItemSubLabel","getItemAvatarUrl","getItemGroupKey","getItemDisabled","getGroupKey","getGroupLabel","renderItem","renderValueProp","renderValue","onCreate","inputRefProp","inputRef","labelForNotFound","labelForCreate","labelForEmptyItems","multiple","searchFunction","style","dropdownForm","onScrollToBottom","onSearchValueChange","onDropdownOpen","virtualScroll","dropdownOpen","ignoreOutsideClicksRefs","restProps","searchFunctionDefault","item","searchOfLabel","getKeyProps","getOptionProps","isOpen","visibleItems","isFocused","handleInputFocus","handleInputBlur","handleToggleDropdown","handleInputClick","handleInputChange","clearValue","getHandleRemoveValue","notFound","hasItems","optionsRefs","inputId","renderValueDefault","handleRemove","inputRefForRender","renderControlValue","width","Array","isArray","map","length","hide","isUserSelect","hasInput","renderItemDefault","active","hovered","onClick","onMouseEnter","zIndex","UserSelect"],"sources":["../../../../../src/components/UserSelectCanary/UserSelectCanary.tsx"],"sourcesContent":["import '##/components/SelectComponentsCanary/Select.css';\n\nimport { IconClose } from '@consta/icons/IconClose';\nimport { IconSelect } from '@consta/icons/IconSelect';\nimport React, { forwardRef, useRef } from 'react';\n\nimport { usePropsHandler } from '##/components/EventInterceptor/usePropsHandler';\nimport { cnSelect } from '##/components/SelectComponentsCanary/cnSelect';\nimport {\n defaultlabelForCreate,\n defaultLabelForEmptyItems,\n defaultlabelForNotFound,\n getInputWidth,\n} from '##/components/SelectComponentsCanary/helpers';\nimport { SelectContainer } from '##/components/SelectComponentsCanary/SelectContainer';\nimport { SelectDropdown } from '##/components/SelectComponentsCanary/SelectDropdown';\nimport {\n defaultPropForm,\n defaultPropSize,\n defaultPropView,\n} from '##/components/SelectComponentsCanary/types';\nimport { useSelect } from '##/components/SelectComponentsCanary/useSelect';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { cnMixFocus } from '##/mixs/MixFocus';\nimport { isNotNil } from '##/utils/type-guards';\n\nimport {\n DefaultGroup,\n DefaultItem,\n isMultipleParams,\n isNotMultipleParams,\n PropRenderItem,\n PropRenderValue,\n searchCompare,\n UserSelectComponent,\n UserSelectProps,\n withDefaultGetters,\n} from './helpers';\nimport { UserSelectItem } from './UserSelectItem/UserSelectItem';\nimport { UserSelectValue } from './UserSelectValue/UserSelectValue';\n\nexport const COMPONENT_NAME = 'UserSelect' as const;\n\nconst UserSelectRender = <\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n>(\n props: UserSelectProps<ITEM, GROUP, MULTIPLE>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const defaultDropdownRef = useRef<HTMLDivElement | null>(null);\n const controlInnerRef = useRef<HTMLDivElement>(null);\n const helperInputFakeElement = useRef<HTMLDivElement>(null);\n const controlRef = useRef<HTMLDivElement | null>(null);\n\n const {\n placeholder,\n onBlur,\n onFocus,\n items,\n onChange,\n value,\n disabled,\n ariaLabel,\n id,\n isLoading,\n required,\n dropdownRef = defaultDropdownRef,\n form = defaultPropForm,\n view = defaultPropView,\n size = defaultPropSize,\n dropdownClassName,\n searchValue: searchValueProp,\n name,\n groups = [],\n getItemKey,\n getItemLabel,\n getItemSubLabel,\n getItemAvatarUrl,\n getItemGroupKey,\n getItemDisabled,\n getGroupKey,\n getGroupLabel,\n renderItem,\n renderValue: renderValueProp,\n onCreate,\n inputRef: inputRefProp,\n labelForNotFound = defaultlabelForNotFound,\n labelForCreate = defaultlabelForCreate,\n labelForEmptyItems = defaultLabelForEmptyItems,\n multiple = false,\n searchFunction,\n style,\n dropdownForm = 'default',\n onScrollToBottom,\n onSearchValueChange,\n onDropdownOpen,\n virtualScroll,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n ...restProps\n } = usePropsHandler(COMPONENT_NAME, withDefaultGetters(props), controlRef);\n\n const searchFunctionDefault = (item: ITEM, searchValue: string): boolean => {\n const searchOfLabel = searchCompare(searchValue, getItemLabel(item));\n\n if (searchOfLabel) {\n return searchOfLabel;\n }\n\n return searchCompare(searchValue, getItemSubLabel(item));\n };\n\n const {\n getKeyProps,\n getOptionProps,\n isOpen,\n visibleItems,\n isFocused,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n inputRef,\n handleInputClick,\n handleInputChange,\n searchValue,\n clearValue,\n getHandleRemoveValue,\n notFound,\n hasItems,\n optionsRefs,\n } = useSelect({\n items,\n groups,\n value,\n onChange,\n dropdownRef,\n controlRef,\n disabled,\n getItemLabel,\n getItemKey,\n getGroupKey,\n getItemGroupKey,\n searchValue: searchValueProp,\n getItemDisabled,\n multiple,\n onBlur,\n onFocus,\n onCreate,\n searchFunction: searchFunction || searchFunctionDefault,\n onSearchValueChange,\n onDropdownOpen,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n });\n\n const inputId = id ? `${id}-input` : id;\n\n const renderItemDefault: PropRenderItem<ITEM> = (props) => {\n const { item, active, hovered, onClick, onMouseEnter, ref } = props;\n\n return (\n <UserSelectItem\n label={getItemLabel(item)}\n subLabel={getItemSubLabel(item)}\n avatarUrl={getItemAvatarUrl(item)}\n active={active}\n hovered={hovered}\n size={size}\n indent={dropdownForm === 'round' ? 'increased' : 'normal'}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n disable={getItemDisabled(item)}\n multiple={multiple}\n ref={ref}\n />\n );\n };\n\n const renderValueDefault: PropRenderValue<ITEM> = ({\n item,\n handleRemove,\n }) => {\n return (\n <UserSelectValue\n label={getItemLabel(item)}\n subLabel={getItemSubLabel(item)}\n avatarUrl={getItemAvatarUrl(item)}\n key={getItemKey(item)}\n size={size}\n handleRemove={handleRemove}\n multiple={multiple}\n disabled={disabled || getItemDisabled(item)}\n />\n );\n };\n\n const renderValue = renderValueProp || renderValueDefault;\n\n const inputRefForRender = useForkRef([inputRef, inputRefProp]);\n\n const renderControlValue = () => {\n const width = multiple\n ? getInputWidth(controlInnerRef, helperInputFakeElement)\n : undefined;\n return (\n <>\n {isMultipleParams(props) &&\n Array.isArray(props.value) &&\n props.value.map((item) =>\n renderValue({ item, handleRemove: getHandleRemoveValue(item) }),\n )}\n {isNotMultipleParams(props) &&\n isNotNil(props.value) &&\n renderValue({ item: props.value })}\n {(!isNotNil(value) || (Array.isArray(value) && value.length === 0)) &&\n !searchValue &&\n placeholder && (\n <span className={cnSelect('Placeholder')} title=\"placeholder\">\n {placeholder}\n </span>\n )}\n <input\n {...getKeyProps()}\n type=\"text\"\n name={name}\n id={inputId}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n aria-label={ariaLabel}\n onChange={handleInputChange}\n ref={inputRefForRender}\n className={cnSelect('Input', {\n size,\n hide: !multiple && isNotNil(value),\n multiple,\n isUserSelect: true,\n })}\n value={searchValue}\n style={{ width }}\n />\n </>\n );\n };\n\n return (\n <>\n <SelectContainer\n focused={isFocused}\n disabled={disabled}\n size={size}\n required={required}\n id={inputId}\n view={view}\n type=\"userselect\"\n form={form}\n multiple\n ref={ref}\n style={style}\n {...restProps}\n >\n <div\n className={cnSelect('Control', { hasInput: true })}\n ref={controlRef}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n id={id}\n >\n <div\n className={cnSelect('ControlInner')}\n onClick={handleInputClick}\n role=\"button\"\n ref={controlInnerRef}\n aria-hidden=\"true\"\n >\n <div className={cnSelect('ControlValueContainer')}>\n {multiple ? (\n <div\n className={cnSelect('ControlValue', { isUserSelect: true })}\n >\n {renderControlValue()}\n </div>\n ) : (\n renderControlValue()\n )}\n </div>\n </div>\n <span className={cnSelect('Indicators')}>\n {isNotNil(value) && (\n <button\n type=\"button\"\n onClick={clearValue}\n tabIndex={-1}\n className={cnSelect('ClearIndicator', [cnMixFocus()])}\n >\n <IconClose\n size=\"xs\"\n className={cnSelect('ClearIndicatorIcon')}\n />\n </button>\n )}\n <span className={cnSelect('Delimiter')} />\n <button\n type=\"button\"\n className={cnSelect('IndicatorsDropdown')}\n tabIndex={-1}\n onClick={handleToggleDropdown}\n >\n <IconSelect\n size=\"xs\"\n className={cnSelect('DropdownIndicatorIcon')}\n />\n </button>\n </span>\n </div>\n <div\n className={cnSelect('HelperInputFakeElement')}\n ref={helperInputFakeElement}\n >\n {searchValue}\n </div>\n </SelectContainer>\n <SelectDropdown\n isOpen={isOpen}\n size={size}\n controlRef={controlRef}\n getOptionProps={getOptionProps}\n dropdownRef={dropdownRef}\n form={dropdownForm}\n isLoading={isLoading}\n className={dropdownClassName}\n renderItem={renderItem || renderItemDefault}\n getGroupLabel={getGroupLabel}\n visibleItems={visibleItems}\n labelForNotFound={labelForNotFound}\n labelForCreate={labelForCreate}\n notFound={notFound}\n hasItems={hasItems}\n labelForEmptyItems={labelForEmptyItems}\n itemsRefs={optionsRefs}\n onScrollToBottom={onScrollToBottom}\n virtualScroll={virtualScroll}\n style={\n typeof style?.zIndex === 'number'\n ? { zIndex: style.zIndex + 1 }\n : undefined\n }\n />\n </>\n );\n};\n\nexport const UserSelect = forwardRef(UserSelectRender) as UserSelectComponent;\n\nexport * from './helpers';\n"],"mappings":"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"}
1
+ {"version":3,"file":"UserSelectCanary.js","names":["IconClear","IconSelect","React","forwardRef","useRef","usePropsHandler","cnSelect","defaultlabelForCreate","defaultLabelForEmptyItems","defaultlabelForNotFound","getInputWidth","SelectContainer","SelectDropdown","defaultPropForm","defaultPropSize","defaultPropView","useSelect","useForkRef","cnMixFocus","isNotNil","clearSizeMap","iconSizeMap","isMultipleParams","isNotMultipleParams","searchCompare","withDefaultGetters","UserSelectItem","UserSelectValue","COMPONENT_NAME","UserSelectRender","props","ref","defaultDropdownRef","controlInnerRef","helperInputFakeElement","controlRef","placeholder","onBlur","onFocus","items","onChange","value","disabled","ariaLabel","id","isLoading","required","dropdownRef","form","view","size","dropdownClassName","searchValueProp","searchValue","name","groups","getItemKey","getItemLabel","getItemSubLabel","getItemAvatarUrl","getItemGroupKey","getItemDisabled","getGroupKey","getGroupLabel","renderItem","renderValueProp","renderValue","onCreate","inputRefProp","inputRef","labelForNotFound","labelForCreate","labelForEmptyItems","multiple","searchFunction","style","dropdownForm","onScrollToBottom","onSearchValueChange","onDropdownOpen","virtualScroll","dropdownOpen","ignoreOutsideClicksRefs","restProps","searchFunctionDefault","item","searchOfLabel","getKeyProps","getOptionProps","isOpen","visibleItems","isFocused","handleInputFocus","handleInputBlur","handleToggleDropdown","handleInputClick","handleInputChange","clearValue","getHandleRemoveValue","notFound","hasItems","optionsRefs","inputId","renderValueDefault","handleRemove","inputRefForRender","renderControlValue","width","Array","isArray","map","length","hide","isUserSelect","hasInput","renderItemDefault","active","hovered","onClick","onMouseEnter","zIndex","UserSelect"],"sources":["../../../../../src/components/UserSelectCanary/UserSelectCanary.tsx"],"sourcesContent":["import '##/components/SelectComponentsCanary/Select.css';\n\nimport { IconClear } from '@consta/icons/IconClear';\nimport { IconSelect } from '@consta/icons/IconSelect';\nimport React, { forwardRef, useRef } from 'react';\n\nimport { usePropsHandler } from '##/components/EventInterceptor/usePropsHandler';\nimport { cnSelect } from '##/components/SelectComponentsCanary/cnSelect';\nimport {\n defaultlabelForCreate,\n defaultLabelForEmptyItems,\n defaultlabelForNotFound,\n getInputWidth,\n} from '##/components/SelectComponentsCanary/helpers';\nimport { SelectContainer } from '##/components/SelectComponentsCanary/SelectContainer';\nimport { SelectDropdown } from '##/components/SelectComponentsCanary/SelectDropdown';\nimport {\n defaultPropForm,\n defaultPropSize,\n defaultPropView,\n} from '##/components/SelectComponentsCanary/types';\nimport { useSelect } from '##/components/SelectComponentsCanary/useSelect';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { cnMixFocus } from '##/mixs/MixFocus';\nimport { isNotNil } from '##/utils/type-guards';\n\nimport {\n clearSizeMap,\n DefaultGroup,\n DefaultItem,\n iconSizeMap,\n isMultipleParams,\n isNotMultipleParams,\n PropRenderItem,\n PropRenderValue,\n searchCompare,\n UserSelectComponent,\n UserSelectProps,\n withDefaultGetters,\n} from './helpers';\nimport { UserSelectItem } from './UserSelectItem/UserSelectItem';\nimport { UserSelectValue } from './UserSelectValue/UserSelectValue';\n\nexport const COMPONENT_NAME = 'UserSelect' as const;\n\nconst UserSelectRender = <\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n>(\n props: UserSelectProps<ITEM, GROUP, MULTIPLE>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const defaultDropdownRef = useRef<HTMLDivElement | null>(null);\n const controlInnerRef = useRef<HTMLDivElement>(null);\n const helperInputFakeElement = useRef<HTMLDivElement>(null);\n const controlRef = useRef<HTMLDivElement | null>(null);\n\n const {\n placeholder,\n onBlur,\n onFocus,\n items,\n onChange,\n value,\n disabled,\n ariaLabel,\n id,\n isLoading,\n required,\n dropdownRef = defaultDropdownRef,\n form = defaultPropForm,\n view = defaultPropView,\n size = defaultPropSize,\n dropdownClassName,\n searchValue: searchValueProp,\n name,\n groups = [],\n getItemKey,\n getItemLabel,\n getItemSubLabel,\n getItemAvatarUrl,\n getItemGroupKey,\n getItemDisabled,\n getGroupKey,\n getGroupLabel,\n renderItem,\n renderValue: renderValueProp,\n onCreate,\n inputRef: inputRefProp,\n labelForNotFound = defaultlabelForNotFound,\n labelForCreate = defaultlabelForCreate,\n labelForEmptyItems = defaultLabelForEmptyItems,\n multiple = false,\n searchFunction,\n style,\n dropdownForm = 'default',\n onScrollToBottom,\n onSearchValueChange,\n onDropdownOpen,\n virtualScroll,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n ...restProps\n } = usePropsHandler(COMPONENT_NAME, withDefaultGetters(props), controlRef);\n\n const searchFunctionDefault = (item: ITEM, searchValue: string): boolean => {\n const searchOfLabel = searchCompare(searchValue, getItemLabel(item));\n\n if (searchOfLabel) {\n return searchOfLabel;\n }\n\n return searchCompare(searchValue, getItemSubLabel(item));\n };\n\n const {\n getKeyProps,\n getOptionProps,\n isOpen,\n visibleItems,\n isFocused,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n inputRef,\n handleInputClick,\n handleInputChange,\n searchValue,\n clearValue,\n getHandleRemoveValue,\n notFound,\n hasItems,\n optionsRefs,\n } = useSelect({\n items,\n groups,\n value,\n onChange,\n dropdownRef,\n controlRef,\n disabled,\n getItemLabel,\n getItemKey,\n getGroupKey,\n getItemGroupKey,\n searchValue: searchValueProp,\n getItemDisabled,\n multiple,\n onBlur,\n onFocus,\n onCreate,\n searchFunction: searchFunction || searchFunctionDefault,\n onSearchValueChange,\n onDropdownOpen,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n });\n\n const inputId = id ? `${id}-input` : id;\n\n const renderItemDefault: PropRenderItem<ITEM> = (props) => {\n const { item, active, hovered, onClick, onMouseEnter, ref } = props;\n\n return (\n <UserSelectItem\n label={getItemLabel(item)}\n subLabel={getItemSubLabel(item)}\n avatarUrl={getItemAvatarUrl(item)}\n active={active}\n hovered={hovered}\n size={size}\n indent={dropdownForm === 'round' ? 'increased' : 'normal'}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n disable={getItemDisabled(item)}\n multiple={multiple}\n ref={ref}\n />\n );\n };\n\n const renderValueDefault: PropRenderValue<ITEM> = ({\n item,\n handleRemove,\n }) => {\n return (\n <UserSelectValue\n label={getItemLabel(item)}\n subLabel={getItemSubLabel(item)}\n avatarUrl={getItemAvatarUrl(item)}\n key={getItemKey(item)}\n size={size}\n handleRemove={handleRemove}\n multiple={multiple}\n disabled={disabled || getItemDisabled(item)}\n />\n );\n };\n\n const renderValue = renderValueProp || renderValueDefault;\n\n const inputRefForRender = useForkRef([inputRef, inputRefProp]);\n\n const renderControlValue = () => {\n const width = multiple\n ? getInputWidth(controlInnerRef, helperInputFakeElement)\n : undefined;\n return (\n <>\n {isMultipleParams(props) &&\n Array.isArray(props.value) &&\n props.value.map((item) =>\n renderValue({ item, handleRemove: getHandleRemoveValue(item) }),\n )}\n {isNotMultipleParams(props) &&\n isNotNil(props.value) &&\n renderValue({ item: props.value })}\n {(!isNotNil(value) || (Array.isArray(value) && value.length === 0)) &&\n !searchValue &&\n placeholder && (\n <span className={cnSelect('Placeholder')} title=\"placeholder\">\n {placeholder}\n </span>\n )}\n <input\n {...getKeyProps()}\n type=\"text\"\n name={name}\n id={inputId}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n aria-label={ariaLabel}\n onChange={handleInputChange}\n ref={inputRefForRender}\n className={cnSelect('Input', {\n size,\n hide: !multiple && isNotNil(value),\n multiple,\n isUserSelect: true,\n })}\n value={searchValue}\n style={{ width }}\n />\n </>\n );\n };\n\n return (\n <>\n <SelectContainer\n focused={isFocused}\n disabled={disabled}\n size={size}\n required={required}\n id={inputId}\n view={view}\n type=\"userselect\"\n form={form}\n multiple\n ref={ref}\n style={style}\n {...restProps}\n >\n <div\n className={cnSelect('Control', { hasInput: true })}\n ref={controlRef}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n id={id}\n >\n <div\n className={cnSelect('ControlInner')}\n onClick={handleInputClick}\n role=\"button\"\n ref={controlInnerRef}\n aria-hidden=\"true\"\n >\n <div className={cnSelect('ControlValueContainer')}>\n {multiple ? (\n <div\n className={cnSelect('ControlValue', { isUserSelect: true })}\n >\n {renderControlValue()}\n </div>\n ) : (\n renderControlValue()\n )}\n </div>\n </div>\n <span className={cnSelect('Indicators')}>\n {isNotNil(value) && (\n <button\n type=\"button\"\n onClick={clearValue}\n tabIndex={-1}\n className={cnSelect('ClearIndicator', [cnMixFocus()])}\n >\n <IconClear\n size={clearSizeMap[size]}\n className={cnSelect('ClearIndicatorIcon')}\n />\n </button>\n )}\n <span className={cnSelect('Delimiter')} />\n <button\n type=\"button\"\n className={cnSelect('IndicatorsDropdown')}\n tabIndex={-1}\n onClick={handleToggleDropdown}\n >\n <IconSelect\n size={iconSizeMap[size]}\n className={cnSelect('DropdownIndicatorIcon')}\n />\n </button>\n </span>\n </div>\n <div\n className={cnSelect('HelperInputFakeElement')}\n ref={helperInputFakeElement}\n >\n {searchValue}\n </div>\n </SelectContainer>\n <SelectDropdown\n isOpen={isOpen}\n size={size}\n controlRef={controlRef}\n getOptionProps={getOptionProps}\n dropdownRef={dropdownRef}\n form={dropdownForm}\n isLoading={isLoading}\n className={dropdownClassName}\n renderItem={renderItem || renderItemDefault}\n getGroupLabel={getGroupLabel}\n visibleItems={visibleItems}\n labelForNotFound={labelForNotFound}\n labelForCreate={labelForCreate}\n notFound={notFound}\n hasItems={hasItems}\n labelForEmptyItems={labelForEmptyItems}\n itemsRefs={optionsRefs}\n onScrollToBottom={onScrollToBottom}\n virtualScroll={virtualScroll}\n style={\n typeof style?.zIndex === 'number'\n ? { zIndex: style.zIndex + 1 }\n : undefined\n }\n />\n </>\n );\n};\n\nexport const UserSelect = forwardRef(UserSelectRender) as UserSelectComponent;\n\nexport * from './helpers';\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { IconComponent } from '@consta/icons/Icon';
1
+ import { IconComponent, IconPropSize } from '@consta/icons/Icon';
2
2
  import React from 'react';
3
3
  import { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';
4
4
  import { PropForm, PropSize, PropStatus, PropView, RenderItemProps } from '../SelectComponentsCanary/types';
@@ -188,4 +188,6 @@ export declare function withDefaultGetters<ITEM = DefaultItem, GROUP = DefaultGr
188
188
  getItemAvatarUrl: PropGetItemAvatarUrl<DefaultItem> | PropGetItemAvatarUrl<ITEM>;
189
189
  };
190
190
  export declare const searchCompare: (searchValue: string, compare?: string) => boolean;
191
+ export declare const clearSizeMap: Record<PropSize, IconPropSize>;
192
+ export declare const iconSizeMap: Record<PropSize, IconPropSize>;
191
193
  export {};
@@ -1,2 +1,2 @@
1
- import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}export var defaultGetItemKey=function(a){return a.id};export var defaultGetItemLabel=function(a){return a.label};export var defaultGetItemSubLabel=function(a){return a.subLabel};export var defaultGetItemAvatarUrl=function(a){return a.avatarUrl};export var defaultGetItemGroupKey=function(a){return a.groupId};export var defaultGetItemDisabled=function(a){return a.disabled};export var defaultGetGroupKey=function(a){return a.id};export var defaultGetGroupLabel=function(a){return a.label};export var isMultipleParams=function(a){return!!a.multiple};export var isNotMultipleParams=function(a){return!a.multiple};export function withDefaultGetters(a){return _objectSpread(_objectSpread({},a),{},{getItemLabel:a.getItemLabel||defaultGetItemLabel,getItemKey:a.getItemKey||defaultGetItemKey,getItemGroupKey:a.getItemGroupKey||defaultGetItemGroupKey,getItemDisabled:a.getItemDisabled||defaultGetItemDisabled,getGroupLabel:a.getGroupLabel||defaultGetGroupLabel,getGroupKey:a.getGroupKey||defaultGetGroupKey,getItemSubLabel:a.getItemSubLabel||defaultGetItemSubLabel,getItemAvatarUrl:a.getItemAvatarUrl||defaultGetItemAvatarUrl})}export var searchCompare=function(a,b){return!!b&&-1!==b.toLocaleLowerCase().indexOf(a.toLocaleLowerCase())};
1
+ import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}export var defaultGetItemKey=function(a){return a.id};export var defaultGetItemLabel=function(a){return a.label};export var defaultGetItemSubLabel=function(a){return a.subLabel};export var defaultGetItemAvatarUrl=function(a){return a.avatarUrl};export var defaultGetItemGroupKey=function(a){return a.groupId};export var defaultGetItemDisabled=function(a){return a.disabled};export var defaultGetGroupKey=function(a){return a.id};export var defaultGetGroupLabel=function(a){return a.label};export var isMultipleParams=function(a){return!!a.multiple};export var isNotMultipleParams=function(a){return!a.multiple};export function withDefaultGetters(a){return _objectSpread(_objectSpread({},a),{},{getItemLabel:a.getItemLabel||defaultGetItemLabel,getItemKey:a.getItemKey||defaultGetItemKey,getItemGroupKey:a.getItemGroupKey||defaultGetItemGroupKey,getItemDisabled:a.getItemDisabled||defaultGetItemDisabled,getGroupLabel:a.getGroupLabel||defaultGetGroupLabel,getGroupKey:a.getGroupKey||defaultGetGroupKey,getItemSubLabel:a.getItemSubLabel||defaultGetItemSubLabel,getItemAvatarUrl:a.getItemAvatarUrl||defaultGetItemAvatarUrl})}export var searchCompare=function(a,b){return!!b&&-1!==b.toLocaleLowerCase().indexOf(a.toLocaleLowerCase())};export var clearSizeMap={xs:"xs",s:"s",m:"s",l:"m"};export var iconSizeMap={xs:"xs",s:"s",m:"m",l:"m"};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["defaultGetItemKey","item","id","defaultGetItemLabel","label","defaultGetItemSubLabel","subLabel","defaultGetItemAvatarUrl","avatarUrl","defaultGetItemGroupKey","groupId","defaultGetItemDisabled","disabled","defaultGetGroupKey","group","defaultGetGroupLabel","isMultipleParams","params","multiple","isNotMultipleParams","withDefaultGetters","props","getItemLabel","getItemKey","getItemGroupKey","getItemDisabled","getGroupLabel","getGroupKey","getItemSubLabel","getItemAvatarUrl","searchCompare","searchValue","compare","toLocaleLowerCase","indexOf"],"sources":["../../../../../src/components/UserSelectCanary/helpers.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\nimport {\n PropForm,\n PropSize,\n PropStatus,\n PropView,\n RenderItemProps,\n} from '../SelectComponentsCanary/types';\n\nexport type DefaultItem = {\n label: string;\n id: string | number;\n subLabel?: string;\n avatarUrl?: string;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type DefaultGroup = {\n label: string;\n id: string | number;\n};\n\ntype RenderValueProps<ITEM> = {\n item: ITEM;\n handleRemove?: (e: React.SyntheticEvent) => void;\n};\n\nexport type PropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type PropGetItemSubLabel<ITEM> = (item: ITEM) => string | undefined;\nexport type PropGetItemAvatarUrl<ITEM> = (item: ITEM) => string | undefined;\nexport type PropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type PropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type PropGetItemDisabled<ITEM> = (item: ITEM) => boolean | undefined;\nexport type PropGetGroupKey<GROUP> = (group: GROUP) => string | number;\nexport type PropGetGroupLabel<GROUP> = (group: GROUP) => string;\n\ntype PropSearchFunction<ITEM> = (item: ITEM, searchValue: string) => boolean;\ntype PropOnChange<ITEM, MULTIPLE extends boolean> = (\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null,\n props: {\n e: React.SyntheticEvent;\n },\n) => void;\ntype PropValue<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type PropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactElement | null;\nexport type PropRenderValue<ITEM> = (\n props: RenderValueProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type UserSelectProps<\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n> = PropsWithHTMLAttributesAndRef<\n {\n disabled?: boolean;\n form?: PropForm;\n size?: Exclude<PropSize, 'xs'>;\n view?: PropView;\n dropdownForm?: 'default' | 'brick' | 'round';\n placeholder?: string;\n ariaLabel?: string;\n dropdownClassName?: string;\n status?: PropStatus;\n dropdownRef?: React.RefObject<HTMLDivElement>;\n name?: string;\n items: ITEM[];\n required?: boolean;\n isLoading?: boolean;\n renderItem?: PropRenderItem<ITEM>;\n renderValue?: PropRenderValue<ITEM>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n onCreate?: (label: string, props: { e: React.SyntheticEvent }) => void;\n inputRef?: React.RefObject<HTMLInputElement>;\n labelForNotFound?: string;\n labelForCreate?: string;\n labelForEmptyItems?: string;\n searchFunction?: PropSearchFunction<ITEM>;\n searchValue?: string;\n multiple?: MULTIPLE;\n value?: PropValue<ITEM, MULTIPLE>;\n onChange: PropOnChange<ITEM, MULTIPLE>;\n groups?: GROUP[];\n getItemLabel?: PropGetItemLabel<ITEM>;\n getItemSubLabel?: PropGetItemSubLabel<ITEM>;\n getItemAvatarUrl?: PropGetItemAvatarUrl<ITEM>;\n getItemKey?: PropGetItemKey<ITEM>;\n getItemGroupKey?: PropGetItemGroupKey<ITEM>;\n getItemDisabled?: PropGetItemDisabled<ITEM>;\n getGroupLabel?: PropGetGroupLabel<GROUP>;\n getGroupKey?: PropGetGroupKey<GROUP>;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n virtualScroll?: boolean;\n onScrollToBottom?: () => void;\n onSearchValueChange?: (value: string) => void;\n onDropdownOpen?: (isOpen: boolean) => void;\n dropdownOpen?: boolean;\n ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n },\n HTMLDivElement\n> &\n (ITEM extends { label: DefaultItem['label'] }\n ? {}\n : { getItemLabel: PropGetItemLabel<ITEM> }) &\n (ITEM extends { id: DefaultItem['id'] }\n ? {}\n : { getItemKey: PropGetItemKey<ITEM> }) &\n (GROUP extends { label: DefaultGroup['label'] }\n ? {}\n : { getGroupLabel: PropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: DefaultGroup['id'] }\n ? {}\n : { getGroupKey: PropGetGroupKey<GROUP> });\n\nexport type UserSelectComponent = <\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n>(\n props: UserSelectProps<ITEM, GROUP, MULTIPLE>,\n) => React.ReactElement | null;\n\nexport const defaultGetItemKey: PropGetItemKey<DefaultItem> = (item) => item.id;\nexport const defaultGetItemLabel: PropGetItemLabel<DefaultItem> = (item) =>\n item.label;\nexport const defaultGetItemSubLabel: PropGetItemSubLabel<DefaultItem> = (\n item,\n) => item.subLabel;\nexport const defaultGetItemAvatarUrl: PropGetItemAvatarUrl<DefaultItem> = (\n item,\n) => item.avatarUrl;\nexport const defaultGetItemGroupKey: PropGetItemGroupKey<DefaultItem> = (\n item,\n) => item.groupId;\nexport const defaultGetItemDisabled: PropGetItemDisabled<DefaultItem> = (\n item,\n) => item.disabled;\n\nexport const defaultGetGroupKey: PropGetGroupKey<DefaultGroup> = (group) =>\n group.id;\nexport const defaultGetGroupLabel: PropGetGroupLabel<DefaultGroup> = (group) =>\n group.label;\n\nexport const isMultipleParams = <ITEM, GROUP>(\n params: UserSelectProps<ITEM, GROUP, boolean>,\n): params is UserSelectProps<ITEM, GROUP, true> => {\n return !!params.multiple;\n};\n\nexport const isNotMultipleParams = <ITEM, GROUP>(\n params: UserSelectProps<ITEM, GROUP, boolean>,\n): params is UserSelectProps<ITEM, GROUP, false> => {\n return !params.multiple;\n};\n\nexport function withDefaultGetters<\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n>(props: UserSelectProps<ITEM, GROUP, MULTIPLE>) {\n return {\n ...props,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n getItemKey: props.getItemKey || defaultGetItemKey,\n getItemGroupKey: props.getItemGroupKey || defaultGetItemGroupKey,\n getItemDisabled: props.getItemDisabled || defaultGetItemDisabled,\n getGroupLabel: props.getGroupLabel || defaultGetGroupLabel,\n getGroupKey: props.getGroupKey || defaultGetGroupKey,\n getItemSubLabel: props.getItemSubLabel || defaultGetItemSubLabel,\n getItemAvatarUrl: props.getItemAvatarUrl || defaultGetItemAvatarUrl,\n };\n}\n\nexport const searchCompare = (\n searchValue: string,\n compare?: string,\n): boolean => {\n if (!compare) {\n return false;\n }\n\n return (\n compare.toLocaleLowerCase().indexOf(searchValue.toLocaleLowerCase()) !== -1\n );\n};\n"],"mappings":"qqBA0IA,MAAO,IAAMA,kBAA8C,CAAG,SAACC,CAAD,QAAUA,EAAI,CAACC,EAAf,CAAvD,CACP,MAAO,IAAMC,oBAAkD,CAAG,SAACF,CAAD,QAChEA,EAAI,CAACG,KAD2D,CAA3D,CAEP,MAAO,IAAMC,uBAAwD,CAAG,SACtEJ,CADsE,QAEnEA,EAAI,CAACK,QAF8D,CAAjE,CAGP,MAAO,IAAMC,wBAA0D,CAAG,SACxEN,CADwE,QAErEA,EAAI,CAACO,SAFgE,CAAnE,CAGP,MAAO,IAAMC,uBAAwD,CAAG,SACtER,CADsE,QAEnEA,EAAI,CAACS,OAF8D,CAAjE,CAGP,MAAO,IAAMC,uBAAwD,CAAG,SACtEV,CADsE,QAEnEA,EAAI,CAACW,QAF8D,CAAjE,CAIP,MAAO,IAAMC,mBAAiD,CAAG,SAACC,CAAD,QAC/DA,EAAK,CAACZ,EADyD,CAA1D,CAEP,MAAO,IAAMa,qBAAqD,CAAG,SAACD,CAAD,QACnEA,EAAK,CAACV,KAD6D,CAA9D,CAGP,MAAO,IAAMY,iBAAgB,CAAG,SAC9BC,CAD8B,CAEmB,CACjD,MAAO,CAAC,CAACA,CAAM,CAACC,QACjB,CAJM,CAMP,MAAO,IAAMC,oBAAmB,CAAG,SACjCF,CADiC,CAEiB,CAClD,MAAO,CAACA,CAAM,CAACC,QAChB,CAJM,CAMP,MAAO,SAASE,mBAAT,CAILC,CAJK,CAI0C,CAC/C,sCACKA,CADL,MAEEC,YAAY,CAAED,CAAK,CAACC,YAAN,EAAsBnB,mBAFtC,CAGEoB,UAAU,CAAEF,CAAK,CAACE,UAAN,EAAoBvB,iBAHlC,CAIEwB,eAAe,CAAEH,CAAK,CAACG,eAAN,EAAyBf,sBAJ5C,CAKEgB,eAAe,CAAEJ,CAAK,CAACI,eAAN,EAAyBd,sBAL5C,CAMEe,aAAa,CAAEL,CAAK,CAACK,aAAN,EAAuBX,oBANxC,CAOEY,WAAW,CAAEN,CAAK,CAACM,WAAN,EAAqBd,kBAPpC,CAQEe,eAAe,CAAEP,CAAK,CAACO,eAAN,EAAyBvB,sBAR5C,CASEwB,gBAAgB,CAAER,CAAK,CAACQ,gBAAN,EAA0BtB,uBAT9C,EAWD,CAED,MAAO,IAAMuB,cAAa,CAAG,SAC3BC,CAD2B,CAE3BC,CAF2B,CAGf,SACPA,CADO,EAM+D,CAAC,CAA1E,GAAAA,CAAO,CAACC,iBAAR,GAA4BC,OAA5B,CAAoCH,CAAW,CAACE,iBAAZ,EAApC,CAEH,CAXM"}
1
+ {"version":3,"file":"helpers.js","names":["defaultGetItemKey","item","id","defaultGetItemLabel","label","defaultGetItemSubLabel","subLabel","defaultGetItemAvatarUrl","avatarUrl","defaultGetItemGroupKey","groupId","defaultGetItemDisabled","disabled","defaultGetGroupKey","group","defaultGetGroupLabel","isMultipleParams","params","multiple","isNotMultipleParams","withDefaultGetters","props","getItemLabel","getItemKey","getItemGroupKey","getItemDisabled","getGroupLabel","getGroupKey","getItemSubLabel","getItemAvatarUrl","searchCompare","searchValue","compare","toLocaleLowerCase","indexOf","clearSizeMap","xs","s","m","l","iconSizeMap"],"sources":["../../../../../src/components/UserSelectCanary/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\nimport {\n PropForm,\n PropSize,\n PropStatus,\n PropView,\n RenderItemProps,\n} from '../SelectComponentsCanary/types';\n\nexport type DefaultItem = {\n label: string;\n id: string | number;\n subLabel?: string;\n avatarUrl?: string;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type DefaultGroup = {\n label: string;\n id: string | number;\n};\n\ntype RenderValueProps<ITEM> = {\n item: ITEM;\n handleRemove?: (e: React.SyntheticEvent) => void;\n};\n\nexport type PropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type PropGetItemSubLabel<ITEM> = (item: ITEM) => string | undefined;\nexport type PropGetItemAvatarUrl<ITEM> = (item: ITEM) => string | undefined;\nexport type PropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type PropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type PropGetItemDisabled<ITEM> = (item: ITEM) => boolean | undefined;\nexport type PropGetGroupKey<GROUP> = (group: GROUP) => string | number;\nexport type PropGetGroupLabel<GROUP> = (group: GROUP) => string;\n\ntype PropSearchFunction<ITEM> = (item: ITEM, searchValue: string) => boolean;\ntype PropOnChange<ITEM, MULTIPLE extends boolean> = (\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null,\n props: {\n e: React.SyntheticEvent;\n },\n) => void;\ntype PropValue<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type PropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactElement | null;\nexport type PropRenderValue<ITEM> = (\n props: RenderValueProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type UserSelectProps<\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n> = PropsWithHTMLAttributesAndRef<\n {\n disabled?: boolean;\n form?: PropForm;\n size?: Exclude<PropSize, 'xs'>;\n view?: PropView;\n dropdownForm?: 'default' | 'brick' | 'round';\n placeholder?: string;\n ariaLabel?: string;\n dropdownClassName?: string;\n status?: PropStatus;\n dropdownRef?: React.RefObject<HTMLDivElement>;\n name?: string;\n items: ITEM[];\n required?: boolean;\n isLoading?: boolean;\n renderItem?: PropRenderItem<ITEM>;\n renderValue?: PropRenderValue<ITEM>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n onCreate?: (label: string, props: { e: React.SyntheticEvent }) => void;\n inputRef?: React.RefObject<HTMLInputElement>;\n labelForNotFound?: string;\n labelForCreate?: string;\n labelForEmptyItems?: string;\n searchFunction?: PropSearchFunction<ITEM>;\n searchValue?: string;\n multiple?: MULTIPLE;\n value?: PropValue<ITEM, MULTIPLE>;\n onChange: PropOnChange<ITEM, MULTIPLE>;\n groups?: GROUP[];\n getItemLabel?: PropGetItemLabel<ITEM>;\n getItemSubLabel?: PropGetItemSubLabel<ITEM>;\n getItemAvatarUrl?: PropGetItemAvatarUrl<ITEM>;\n getItemKey?: PropGetItemKey<ITEM>;\n getItemGroupKey?: PropGetItemGroupKey<ITEM>;\n getItemDisabled?: PropGetItemDisabled<ITEM>;\n getGroupLabel?: PropGetGroupLabel<GROUP>;\n getGroupKey?: PropGetGroupKey<GROUP>;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n virtualScroll?: boolean;\n onScrollToBottom?: () => void;\n onSearchValueChange?: (value: string) => void;\n onDropdownOpen?: (isOpen: boolean) => void;\n dropdownOpen?: boolean;\n ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n },\n HTMLDivElement\n> &\n (ITEM extends { label: DefaultItem['label'] }\n ? {}\n : { getItemLabel: PropGetItemLabel<ITEM> }) &\n (ITEM extends { id: DefaultItem['id'] }\n ? {}\n : { getItemKey: PropGetItemKey<ITEM> }) &\n (GROUP extends { label: DefaultGroup['label'] }\n ? {}\n : { getGroupLabel: PropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: DefaultGroup['id'] }\n ? {}\n : { getGroupKey: PropGetGroupKey<GROUP> });\n\nexport type UserSelectComponent = <\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n>(\n props: UserSelectProps<ITEM, GROUP, MULTIPLE>,\n) => React.ReactElement | null;\n\nexport const defaultGetItemKey: PropGetItemKey<DefaultItem> = (item) => item.id;\nexport const defaultGetItemLabel: PropGetItemLabel<DefaultItem> = (item) =>\n item.label;\nexport const defaultGetItemSubLabel: PropGetItemSubLabel<DefaultItem> = (\n item,\n) => item.subLabel;\nexport const defaultGetItemAvatarUrl: PropGetItemAvatarUrl<DefaultItem> = (\n item,\n) => item.avatarUrl;\nexport const defaultGetItemGroupKey: PropGetItemGroupKey<DefaultItem> = (\n item,\n) => item.groupId;\nexport const defaultGetItemDisabled: PropGetItemDisabled<DefaultItem> = (\n item,\n) => item.disabled;\n\nexport const defaultGetGroupKey: PropGetGroupKey<DefaultGroup> = (group) =>\n group.id;\nexport const defaultGetGroupLabel: PropGetGroupLabel<DefaultGroup> = (group) =>\n group.label;\n\nexport const isMultipleParams = <ITEM, GROUP>(\n params: UserSelectProps<ITEM, GROUP, boolean>,\n): params is UserSelectProps<ITEM, GROUP, true> => {\n return !!params.multiple;\n};\n\nexport const isNotMultipleParams = <ITEM, GROUP>(\n params: UserSelectProps<ITEM, GROUP, boolean>,\n): params is UserSelectProps<ITEM, GROUP, false> => {\n return !params.multiple;\n};\n\nexport function withDefaultGetters<\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n>(props: UserSelectProps<ITEM, GROUP, MULTIPLE>) {\n return {\n ...props,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n getItemKey: props.getItemKey || defaultGetItemKey,\n getItemGroupKey: props.getItemGroupKey || defaultGetItemGroupKey,\n getItemDisabled: props.getItemDisabled || defaultGetItemDisabled,\n getGroupLabel: props.getGroupLabel || defaultGetGroupLabel,\n getGroupKey: props.getGroupKey || defaultGetGroupKey,\n getItemSubLabel: props.getItemSubLabel || defaultGetItemSubLabel,\n getItemAvatarUrl: props.getItemAvatarUrl || defaultGetItemAvatarUrl,\n };\n}\n\nexport const searchCompare = (\n searchValue: string,\n compare?: string,\n): boolean => {\n if (!compare) {\n return false;\n }\n\n return (\n compare.toLocaleLowerCase().indexOf(searchValue.toLocaleLowerCase()) !== -1\n );\n};\n\nexport const clearSizeMap: Record<PropSize, IconPropSize> = {\n xs: 'xs',\n s: 's',\n m: 's',\n l: 'm',\n};\n\nexport const iconSizeMap: Record<PropSize, IconPropSize> = {\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'm',\n};\n"],"mappings":"qqBA0IA,MAAO,IAAMA,kBAA8C,CAAG,SAACC,CAAD,QAAUA,EAAI,CAACC,EAAf,CAAvD,CACP,MAAO,IAAMC,oBAAkD,CAAG,SAACF,CAAD,QAChEA,EAAI,CAACG,KAD2D,CAA3D,CAEP,MAAO,IAAMC,uBAAwD,CAAG,SACtEJ,CADsE,QAEnEA,EAAI,CAACK,QAF8D,CAAjE,CAGP,MAAO,IAAMC,wBAA0D,CAAG,SACxEN,CADwE,QAErEA,EAAI,CAACO,SAFgE,CAAnE,CAGP,MAAO,IAAMC,uBAAwD,CAAG,SACtER,CADsE,QAEnEA,EAAI,CAACS,OAF8D,CAAjE,CAGP,MAAO,IAAMC,uBAAwD,CAAG,SACtEV,CADsE,QAEnEA,EAAI,CAACW,QAF8D,CAAjE,CAIP,MAAO,IAAMC,mBAAiD,CAAG,SAACC,CAAD,QAC/DA,EAAK,CAACZ,EADyD,CAA1D,CAEP,MAAO,IAAMa,qBAAqD,CAAG,SAACD,CAAD,QACnEA,EAAK,CAACV,KAD6D,CAA9D,CAGP,MAAO,IAAMY,iBAAgB,CAAG,SAC9BC,CAD8B,CAEmB,CACjD,MAAO,CAAC,CAACA,CAAM,CAACC,QACjB,CAJM,CAMP,MAAO,IAAMC,oBAAmB,CAAG,SACjCF,CADiC,CAEiB,CAClD,MAAO,CAACA,CAAM,CAACC,QAChB,CAJM,CAMP,MAAO,SAASE,mBAAT,CAILC,CAJK,CAI0C,CAC/C,sCACKA,CADL,MAEEC,YAAY,CAAED,CAAK,CAACC,YAAN,EAAsBnB,mBAFtC,CAGEoB,UAAU,CAAEF,CAAK,CAACE,UAAN,EAAoBvB,iBAHlC,CAIEwB,eAAe,CAAEH,CAAK,CAACG,eAAN,EAAyBf,sBAJ5C,CAKEgB,eAAe,CAAEJ,CAAK,CAACI,eAAN,EAAyBd,sBAL5C,CAMEe,aAAa,CAAEL,CAAK,CAACK,aAAN,EAAuBX,oBANxC,CAOEY,WAAW,CAAEN,CAAK,CAACM,WAAN,EAAqBd,kBAPpC,CAQEe,eAAe,CAAEP,CAAK,CAACO,eAAN,EAAyBvB,sBAR5C,CASEwB,gBAAgB,CAAER,CAAK,CAACQ,gBAAN,EAA0BtB,uBAT9C,EAWD,CAED,MAAO,IAAMuB,cAAa,CAAG,SAC3BC,CAD2B,CAE3BC,CAF2B,CAGf,SACPA,CADO,EAM+D,CAAC,CAA1E,GAAAA,CAAO,CAACC,iBAAR,GAA4BC,OAA5B,CAAoCH,CAAW,CAACE,iBAAZ,EAApC,CAEH,CAXM,CAaP,MAAO,IAAME,aAA4C,CAAG,CAC1DC,EAAE,CAAE,IADsD,CAE1DC,CAAC,CAAE,GAFuD,CAG1DC,CAAC,CAAE,GAHuD,CAI1DC,CAAC,CAAE,GAJuD,CAArD,CAOP,MAAO,IAAMC,YAA2C,CAAG,CACzDJ,EAAE,CAAE,IADqD,CAEzDC,CAAC,CAAE,GAFsD,CAGzDC,CAAC,CAAE,GAHsD,CAIzDC,CAAC,CAAE,GAJsD,CAApD"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { TooltipProps as TooltipComponentProps } from "../../components/Tooltip";
2
+ import { TooltipProps as TooltipComponentProps } from "../../components/TooltipCanary";
3
3
  export declare const withTooltipPropMode: readonly ["mouseover", "click"];
4
4
  export declare const withTooltipPropModeDefault: "mouseover";
5
5
  declare type WithTooltipPropMode = typeof withTooltipPropMode[number];
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _defineProperty from"@babel/runtime/helpers/defineProperty";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["tooltipProps"],_excluded2=["mode","content","closeOnClickOutside","appearTimeout","exitTimeout"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import React,{useCallback,useRef}from"react";import{Transition}from"react-transition-group";import{Tooltip}from"../../components/Tooltip";import{useDebounce}from"../../hooks/useDebounce";import{useFlag}from"../../hooks/useFlag";import{useForkRef}from"../../hooks/useForkRef";import{useMutableRef}from"../../hooks/useMutableRef";import{animateTimeout,cnMixPopoverAnimate}from"../../mixs/MixPopoverAnimate";import{isNotNil}from"../../utils/type-guards";export var withTooltipPropMode=["mouseover","click"];export var withTooltipPropModeDefault=withTooltipPropMode[0];export var appearTimeoutDefault=400;export var exitTimeoutDefault=200;export function withTooltip(a){return function(b){return React.forwardRef(function(c,d){var e=c.tooltipProps,f=void 0===e?{}:e,g=_objectWithoutProperties(c,_excluded),h=_objectSpread(_objectSpread({},a),f),i=h.mode,j=void 0===i?"mouseover":i,k=h.content,l=h.closeOnClickOutside,m=!(void 0!==l)||l,n=h.appearTimeout,o=void 0===n?appearTimeoutDefault:n,p=h.exitTimeout,q=void 0===p?exitTimeoutDefault:p,r=_objectWithoutProperties(h,_excluded2),s=useFlag(),t=_slicedToArray(s,2),u=t[0],v=t[1],w=useRef(null),x=useRef(null),y=useRef({tooltip:!1,acnor:!1}),z=useMutableRef([g.onMouseEnter,g.onMouseLeave,r.onMouseEnter,r.onMouseLeave,g.onClick,j,m]),A=useDebounce(useCallback(function(){"mouseover"===z.current[5]&&(y.current.acnor||y.current.tooltip)&&v.on()},[]),o),B=useDebounce(useCallback(function(){"mouseover"!==z.current[5]||y.current.acnor||y.current.tooltip||v.off()},[]),q),C=useCallback(function(a){var b,c;y.current.acnor=!0,A(),null===(b=(c=z.current)[0])||void 0===b?void 0:b.call(c,a)},[]),D=useCallback(function(a){var b,c;y.current.acnor=!1,B(),null===(b=(c=z.current)[1])||void 0===b?void 0:b.call(c,a)},[]),E=useCallback(function(a){var b,c;y.current.tooltip=!0,A(),null===(b=(c=z.current)[2])||void 0===b?void 0:b.call(c,a)},[]),F=useCallback(function(a){var b,c;y.current.tooltip=!1,B(),null===(b=(c=z.current)[3])||void 0===b?void 0:b.call(c,a)},[]),G=useCallback(function(){"click"===z.current[5]&&z.current[6]&&v.off()},[j,m]),H=useCallback(function(a){var b,c;"click"===z.current[5]&&v.toggle(),null===(b=(c=z.current)[4])||void 0===b?void 0:b.call(c,a)},[]);return React.createElement(React.Fragment,null,React.createElement(b,Object.assign({},g,{onClick:H,onMouseEnter:C,onMouseLeave:D,ref:useForkRef([w,d])})),isNotNil(k)&&React.createElement(Transition,{in:u,unmountOnExit:!0,timeout:animateTimeout,nodeRef:x},function(a){return React.createElement(Tooltip,Object.assign({},r,{className:cnMixPopoverAnimate({animate:a},[r.className]),ref:x,anchorRef:w,onClickOutside:G,onMouseEnter:E,onMouseLeave:F}),k)}))})}}
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _defineProperty from"@babel/runtime/helpers/defineProperty";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["tooltipProps"],_excluded2=["mode","content","closeOnClickOutside","appearTimeout","exitTimeout"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import React,{useCallback,useRef}from"react";import{Tooltip}from"../../components/TooltipCanary";import{useDebounce}from"../../hooks/useDebounce";import{useFlag}from"../../hooks/useFlag";import{useForkRef}from"../../hooks/useForkRef";import{useMutableRef}from"../../hooks/useMutableRef";export var withTooltipPropMode=["mouseover","click"];export var withTooltipPropModeDefault=withTooltipPropMode[0];export var appearTimeoutDefault=400;export var exitTimeoutDefault=200;export function withTooltip(a){return function(b){return React.forwardRef(function(c,d){var e=c.tooltipProps,f=void 0===e?{}:e,g=_objectWithoutProperties(c,_excluded),h=_objectSpread(_objectSpread({},a),f),i=h.mode,j=void 0===i?"mouseover":i,k=h.content,l=h.closeOnClickOutside,m=!(void 0!==l)||l,n=h.appearTimeout,o=void 0===n?appearTimeoutDefault:n,p=h.exitTimeout,q=void 0===p?exitTimeoutDefault:p,r=_objectWithoutProperties(h,_excluded2),s=useFlag(),t=_slicedToArray(s,2),u=t[0],v=t[1],w=useRef(null),x=useRef({tooltip:!1,acnor:!1}),y=useMutableRef([g.onMouseEnter,g.onMouseLeave,r.onMouseEnter,r.onMouseLeave,g.onClick,j,m]),z=useDebounce(useCallback(function(){"mouseover"===y.current[5]&&(x.current.acnor||x.current.tooltip)&&v.on()},[]),o),A=useDebounce(useCallback(function(){"mouseover"!==y.current[5]||x.current.acnor||x.current.tooltip||v.off()},[]),q),B=useCallback(function(a){var b,c;x.current.acnor=!0,z(),null===(b=(c=y.current)[0])||void 0===b?void 0:b.call(c,a)},[]),C=useCallback(function(a){var b,c;x.current.acnor=!1,A(),null===(b=(c=y.current)[1])||void 0===b?void 0:b.call(c,a)},[]),D=useCallback(function(a){var b,c;x.current.tooltip=!0,z(),null===(b=(c=y.current)[2])||void 0===b?void 0:b.call(c,a)},[]),E=useCallback(function(a){var b,c;x.current.tooltip=!1,A(),null===(b=(c=y.current)[3])||void 0===b?void 0:b.call(c,a)},[]),F=useCallback(function(){"click"===y.current[5]&&y.current[6]&&v.off()},[j,m]),G=useCallback(function(a){var b,c;"click"===y.current[5]&&v.toggle(),null===(b=(c=y.current)[4])||void 0===b?void 0:b.call(c,a)},[]);return React.createElement(React.Fragment,null,React.createElement(b,Object.assign({},g,{onClick:G,onMouseEnter:B,onMouseLeave:C,ref:useForkRef([w,d])})),React.createElement(Tooltip,Object.assign({},r,{isOpen:u&&!!k,className:r.className,anchorRef:w,onClickOutside:F,onMouseEnter:D,onMouseLeave:E}),k))})}}
2
2
  //# sourceMappingURL=withTooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"withTooltip.js","names":["React","useCallback","useRef","Transition","Tooltip","useDebounce","useFlag","useForkRef","useMutableRef","animateTimeout","cnMixPopoverAnimate","isNotNil","withTooltipPropMode","withTooltipPropModeDefault","appearTimeoutDefault","exitTimeoutDefault","withTooltip","hocProps","Component","forwardRef","props","ref","tooltipProps","componentProps","mode","content","closeOnClickOutside","appearTimeout","exitTimeout","otherTooltipProps","visible","setVisible","acnortRef","tooltipRef","hoverStateRef","tooltip","acnor","mutablePropsRef","onMouseEnter","onMouseLeave","onClick","mouseEnterController","current","on","mouseLeaveController","off","acnorOnMouseEnter","e","acnorOnMouseLeave","tooltipOnMouseEnter","tooltipOnMouseLeave","tooltipOnClickOutside","acnorOnClick","toggle","animate","className"],"sources":["../../../../../src/hocs/withTooltip/withTooltip.tsx"],"sourcesContent":["import React, { useCallback, useRef } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport {\n Tooltip,\n TooltipProps as TooltipComponentProps,\n} from '##/components/Tooltip';\nimport { useDebounce } from '##/hooks/useDebounce';\nimport { useFlag } from '##/hooks/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { animateTimeout, cnMixPopoverAnimate } from '##/mixs/MixPopoverAnimate';\nimport { isNotNil } from '##/utils/type-guards';\n\nexport const withTooltipPropMode = ['mouseover', 'click'] as const;\nexport const withTooltipPropModeDefault = withTooltipPropMode[0];\ntype WithTooltipPropMode = typeof withTooltipPropMode[number];\n\nexport const appearTimeoutDefault = 400;\nexport const exitTimeoutDefault = 200;\n\ntype ComponentProps = {\n onClick?: React.MouseEventHandler;\n onMouseEnter?: React.MouseEventHandler;\n onMouseLeave?: React.MouseEventHandler;\n};\n\nexport type TooltipProps = Omit<TooltipComponentProps, 'children' | 'ref'> & {\n content?: React.ReactNode;\n mode?: WithTooltipPropMode;\n closeOnClickOutside?: boolean;\n appearTimeout?: number;\n exitTimeout?: number;\n};\n\nexport type WithTooltipProps<Props> = Omit<Props, 'tooltipProps'> & {\n tooltipProps?: TooltipProps;\n};\n\ntype HoverState = {\n tooltip: boolean;\n acnor: boolean;\n};\n\nexport function withTooltip(hocProps?: TooltipProps) {\n return function <COMPONENT_TYPE, COMPONENT_PROPS extends ComponentProps>(\n Component: COMPONENT_TYPE,\n ) {\n return React.forwardRef<HTMLElement, WithTooltipProps<COMPONENT_PROPS>>(\n (props, ref) => {\n const { tooltipProps = {}, ...componentProps } = props;\n\n const {\n mode = 'mouseover',\n content,\n closeOnClickOutside = true,\n appearTimeout = appearTimeoutDefault,\n exitTimeout = exitTimeoutDefault,\n ...otherTooltipProps\n } = {\n ...hocProps,\n ...tooltipProps,\n };\n\n const [visible, setVisible] = useFlag();\n const acnortRef = useRef<HTMLElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n\n const hoverStateRef = useRef<HoverState>({\n tooltip: false,\n acnor: false,\n });\n\n const mutablePropsRef = useMutableRef([\n componentProps.onMouseEnter,\n componentProps.onMouseLeave,\n otherTooltipProps.onMouseEnter,\n otherTooltipProps.onMouseLeave,\n componentProps.onClick,\n mode,\n closeOnClickOutside,\n ] as const);\n\n const mouseEnterController = useDebounce(\n useCallback(() => {\n mutablePropsRef.current[5] === 'mouseover' &&\n (hoverStateRef.current.acnor || hoverStateRef.current.tooltip) &&\n setVisible.on();\n }, []),\n appearTimeout,\n );\n\n const mouseLeaveController = useDebounce(\n useCallback(() => {\n mutablePropsRef.current[5] === 'mouseover' &&\n !hoverStateRef.current.acnor &&\n !hoverStateRef.current.tooltip &&\n setVisible.off();\n }, []),\n exitTimeout,\n );\n\n const acnorOnMouseEnter: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n hoverStateRef.current.acnor = true;\n mouseEnterController();\n mutablePropsRef.current[0]?.(e);\n }, []);\n\n const acnorOnMouseLeave: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n hoverStateRef.current.acnor = false;\n mouseLeaveController();\n mutablePropsRef.current[1]?.(e);\n }, []);\n\n const tooltipOnMouseEnter: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n hoverStateRef.current.tooltip = true;\n mouseEnterController();\n mutablePropsRef.current[2]?.(e);\n }, []);\n\n const tooltipOnMouseLeave: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n hoverStateRef.current.tooltip = false;\n mouseLeaveController();\n mutablePropsRef.current[3]?.(e);\n }, []);\n\n const tooltipOnClickOutside = useCallback(() => {\n mutablePropsRef.current[5] === 'click' &&\n mutablePropsRef.current[6] &&\n setVisible.off();\n }, [mode, closeOnClickOutside]);\n\n const acnorOnClick: React.MouseEventHandler = useCallback((e) => {\n mutablePropsRef.current[5] === 'click' && setVisible.toggle();\n mutablePropsRef.current[4]?.(e);\n }, []);\n\n const Anchor =\n Component as unknown as React.ComponentType<COMPONENT_PROPS>;\n\n return (\n <>\n <Anchor\n {...(componentProps as COMPONENT_PROPS)}\n onClick={acnorOnClick}\n onMouseEnter={acnorOnMouseEnter}\n onMouseLeave={acnorOnMouseLeave}\n ref={useForkRef([acnortRef, ref])}\n />\n {isNotNil(content) && (\n <Transition\n in={visible}\n unmountOnExit\n timeout={animateTimeout}\n nodeRef={tooltipRef}\n >\n {(animate) => {\n return (\n <Tooltip\n {...otherTooltipProps}\n className={cnMixPopoverAnimate({ animate }, [\n otherTooltipProps.className,\n ])}\n ref={tooltipRef}\n anchorRef={acnortRef}\n onClickOutside={tooltipOnClickOutside}\n onMouseEnter={tooltipOnMouseEnter}\n onMouseLeave={tooltipOnMouseLeave}\n >\n {content}\n </Tooltip>\n );\n }}\n </Transition>\n )}\n </>\n );\n // привел к типам, так как прокинутый компонент может иметь джененрики и они потеряются за хоком\n },\n ) as unknown as\n | COMPONENT_TYPE\n | React.ComponentType<{\n tooltipProps?: TooltipProps;\n }>;\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"withTooltip.js","names":["React","useCallback","useRef","Tooltip","useDebounce","useFlag","useForkRef","useMutableRef","withTooltipPropMode","withTooltipPropModeDefault","appearTimeoutDefault","exitTimeoutDefault","withTooltip","hocProps","Component","forwardRef","props","ref","tooltipProps","componentProps","mode","content","closeOnClickOutside","appearTimeout","exitTimeout","otherTooltipProps","visible","setVisible","acnortRef","hoverStateRef","tooltip","acnor","mutablePropsRef","onMouseEnter","onMouseLeave","onClick","mouseEnterController","current","on","mouseLeaveController","off","acnorOnMouseEnter","e","acnorOnMouseLeave","tooltipOnMouseEnter","tooltipOnMouseLeave","tooltipOnClickOutside","acnorOnClick","toggle","className"],"sources":["../../../../../src/hocs/withTooltip/withTooltip.tsx"],"sourcesContent":["import React, { useCallback, useRef } from 'react';\n\nimport {\n Tooltip,\n TooltipProps as TooltipComponentProps,\n} from '##/components/TooltipCanary';\nimport { useDebounce } from '##/hooks/useDebounce';\nimport { useFlag } from '##/hooks/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { useMutableRef } from '##/hooks/useMutableRef';\n\nexport const withTooltipPropMode = ['mouseover', 'click'] as const;\nexport const withTooltipPropModeDefault = withTooltipPropMode[0];\ntype WithTooltipPropMode = typeof withTooltipPropMode[number];\n\nexport const appearTimeoutDefault = 400;\nexport const exitTimeoutDefault = 200;\n\ntype ComponentProps = {\n onClick?: React.MouseEventHandler;\n onMouseEnter?: React.MouseEventHandler;\n onMouseLeave?: React.MouseEventHandler;\n};\n\nexport type TooltipProps = Omit<TooltipComponentProps, 'children' | 'ref'> & {\n content?: React.ReactNode;\n mode?: WithTooltipPropMode;\n closeOnClickOutside?: boolean;\n appearTimeout?: number;\n exitTimeout?: number;\n};\n\nexport type WithTooltipProps<Props> = Omit<Props, 'tooltipProps'> & {\n tooltipProps?: TooltipProps;\n};\n\ntype HoverState = {\n tooltip: boolean;\n acnor: boolean;\n};\n\nexport function withTooltip(hocProps?: TooltipProps) {\n return function <COMPONENT_TYPE, COMPONENT_PROPS extends ComponentProps>(\n Component: COMPONENT_TYPE,\n ) {\n return React.forwardRef<HTMLElement, WithTooltipProps<COMPONENT_PROPS>>(\n (props, ref) => {\n const { tooltipProps = {}, ...componentProps } = props;\n\n const {\n mode = 'mouseover',\n content,\n closeOnClickOutside = true,\n appearTimeout = appearTimeoutDefault,\n exitTimeout = exitTimeoutDefault,\n ...otherTooltipProps\n } = {\n ...hocProps,\n ...tooltipProps,\n };\n\n const [visible, setVisible] = useFlag();\n const acnortRef = useRef<HTMLElement>(null);\n\n const hoverStateRef = useRef<HoverState>({\n tooltip: false,\n acnor: false,\n });\n\n const mutablePropsRef = useMutableRef([\n componentProps.onMouseEnter,\n componentProps.onMouseLeave,\n otherTooltipProps.onMouseEnter,\n otherTooltipProps.onMouseLeave,\n componentProps.onClick,\n mode,\n closeOnClickOutside,\n ] as const);\n\n const mouseEnterController = useDebounce(\n useCallback(() => {\n mutablePropsRef.current[5] === 'mouseover' &&\n (hoverStateRef.current.acnor || hoverStateRef.current.tooltip) &&\n setVisible.on();\n }, []),\n appearTimeout,\n );\n\n const mouseLeaveController = useDebounce(\n useCallback(() => {\n mutablePropsRef.current[5] === 'mouseover' &&\n !hoverStateRef.current.acnor &&\n !hoverStateRef.current.tooltip &&\n setVisible.off();\n }, []),\n exitTimeout,\n );\n\n const acnorOnMouseEnter: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n hoverStateRef.current.acnor = true;\n mouseEnterController();\n mutablePropsRef.current[0]?.(e);\n }, []);\n\n const acnorOnMouseLeave: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n hoverStateRef.current.acnor = false;\n mouseLeaveController();\n mutablePropsRef.current[1]?.(e);\n }, []);\n\n const tooltipOnMouseEnter: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n hoverStateRef.current.tooltip = true;\n mouseEnterController();\n mutablePropsRef.current[2]?.(e);\n }, []);\n\n const tooltipOnMouseLeave: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n hoverStateRef.current.tooltip = false;\n mouseLeaveController();\n mutablePropsRef.current[3]?.(e);\n }, []);\n\n const tooltipOnClickOutside = useCallback(() => {\n mutablePropsRef.current[5] === 'click' &&\n mutablePropsRef.current[6] &&\n setVisible.off();\n }, [mode, closeOnClickOutside]);\n\n const acnorOnClick: React.MouseEventHandler = useCallback((e) => {\n mutablePropsRef.current[5] === 'click' && setVisible.toggle();\n mutablePropsRef.current[4]?.(e);\n }, []);\n\n const Anchor =\n Component as unknown as React.ComponentType<COMPONENT_PROPS>;\n\n return (\n <>\n <Anchor\n {...(componentProps as COMPONENT_PROPS)}\n onClick={acnorOnClick}\n onMouseEnter={acnorOnMouseEnter}\n onMouseLeave={acnorOnMouseLeave}\n ref={useForkRef([acnortRef, ref])}\n />\n <Tooltip\n {...otherTooltipProps}\n isOpen={visible && !!content}\n className={otherTooltipProps.className}\n anchorRef={acnortRef}\n onClickOutside={tooltipOnClickOutside}\n onMouseEnter={tooltipOnMouseEnter}\n onMouseLeave={tooltipOnMouseLeave}\n >\n {content}\n </Tooltip>\n </>\n );\n // привел к типам, так как прокинутый компонент может иметь джененрики и они потеряются за хоком\n },\n ) as unknown as\n | COMPONENT_TYPE\n | React.ComponentType<{\n tooltipProps?: TooltipProps;\n }>;\n };\n}\n"],"mappings":"46BAAA,MAAOA,MAAP,EAAgBC,WAAhB,CAA6BC,MAA7B,KAA2C,OAA3C,CAEA,OACEC,OADF,sCAIA,OAASC,WAAT,+BACA,OAASC,OAAT,2BACA,OAASC,UAAT,8BACA,OAASC,aAAT,iCAEA,MAAO,IAAMC,oBAAmB,CAAG,CAAC,WAAD,CAAc,OAAd,CAA5B,CACP,MAAO,IAAMC,2BAA0B,CAAGD,mBAAmB,CAAC,CAAD,CAAtD,CAGP,MAAO,IAAME,qBAAoB,CAAG,GAA7B,CACP,MAAO,IAAMC,mBAAkB,CAAG,GAA3B,CAyBP,MAAO,SAASC,YAAT,CAAqBC,CAArB,CAA8C,CACnD,MAAO,UACLC,CADK,CAEL,CACA,MAAOd,MAAK,CAACe,UAAN,CACL,SAACC,CAAD,CAAQC,CAAR,CAAgB,OACmCD,CADnC,CACNE,YADM,CACNA,CADM,YACS,EADT,GACgBC,CADhB,0BACmCH,CADnC,6CAWTH,CAXS,EAYTK,CAZS,MAIZE,IAJY,CAIZA,CAJY,YAIL,WAJK,GAKZC,CALY,GAKZA,OALY,KAMZC,mBANY,CAMZA,CANY,sBAOZC,aAPY,CAOZA,CAPY,YAOIb,oBAPJ,OAQZc,WARY,CAQZA,CARY,YAQEb,kBARF,GASTc,CATS,0CAegBpB,OAAO,EAfvB,uBAePqB,CAfO,MAeEC,CAfF,MAgBRC,CAAS,CAAG1B,MAAM,CAAc,IAAd,CAhBV,CAkBR2B,CAAa,CAAG3B,MAAM,CAAa,CACvC4B,OAAO,GADgC,CAEvCC,KAAK,GAFkC,CAAb,CAlBd,CAuBRC,CAAe,CAAGzB,aAAa,CAAC,CACpCY,CAAc,CAACc,YADqB,CAEpCd,CAAc,CAACe,YAFqB,CAGpCT,CAAiB,CAACQ,YAHkB,CAIpCR,CAAiB,CAACS,YAJkB,CAKpCf,CAAc,CAACgB,OALqB,CAMpCf,CANoC,CAOpCE,CAPoC,CAAD,CAvBvB,CAiCRc,CAAoB,CAAGhC,WAAW,CACtCH,WAAW,CAAC,UAAM,CACe,WAA/B,GAAA+B,CAAe,CAACK,OAAhB,CAAwB,CAAxB,IACGR,CAAa,CAACQ,OAAd,CAAsBN,KAAtB,EAA+BF,CAAa,CAACQ,OAAd,CAAsBP,OADxD,GAEEH,CAAU,CAACW,EAAX,EACH,CAJU,CAIR,EAJQ,CAD2B,CAMtCf,CANsC,CAjC1B,CA0CRgB,CAAoB,CAAGnC,WAAW,CACtCH,WAAW,CAAC,UAAM,CACe,WAA/B,GAAA+B,CAAe,CAACK,OAAhB,CAAwB,CAAxB,GACGR,CAAa,CAACQ,OAAd,CAAsBN,KADzB,EAEGF,CAAa,CAACQ,OAAd,CAAsBP,OAFzB,EAGEH,CAAU,CAACa,GAAX,EACH,CALU,CAKR,EALQ,CAD2B,CAOtChB,CAPsC,CA1C1B,CAoDRiB,CAA0D,CAC9DxC,WAAW,CAAC,SAACyC,CAAD,CAAO,SACjBb,CAAa,CAACQ,OAAd,CAAsBN,KAAtB,GADiB,CAEjBK,CAAoB,EAFH,WAGjB,GAAAJ,CAAe,CAACK,OAAhB,EAAwB,CAAxB,CAHiB,qBAGjB,SAA6BK,CAA7B,CACD,CAJU,CAIR,EAJQ,CArDC,CA2DRC,CAA0D,CAC9D1C,WAAW,CAAC,SAACyC,CAAD,CAAO,SACjBb,CAAa,CAACQ,OAAd,CAAsBN,KAAtB,GADiB,CAEjBQ,CAAoB,EAFH,WAGjB,GAAAP,CAAe,CAACK,OAAhB,EAAwB,CAAxB,CAHiB,qBAGjB,SAA6BK,CAA7B,CACD,CAJU,CAIR,EAJQ,CA5DC,CAkERE,CAA4D,CAChE3C,WAAW,CAAC,SAACyC,CAAD,CAAO,SACjBb,CAAa,CAACQ,OAAd,CAAsBP,OAAtB,GADiB,CAEjBM,CAAoB,EAFH,WAGjB,GAAAJ,CAAe,CAACK,OAAhB,EAAwB,CAAxB,CAHiB,qBAGjB,SAA6BK,CAA7B,CACD,CAJU,CAIR,EAJQ,CAnEC,CAyERG,CAA4D,CAChE5C,WAAW,CAAC,SAACyC,CAAD,CAAO,SACjBb,CAAa,CAACQ,OAAd,CAAsBP,OAAtB,GADiB,CAEjBS,CAAoB,EAFH,WAGjB,GAAAP,CAAe,CAACK,OAAhB,EAAwB,CAAxB,CAHiB,qBAGjB,SAA6BK,CAA7B,CACD,CAJU,CAIR,EAJQ,CA1EC,CAgFRI,CAAqB,CAAG7C,WAAW,CAAC,UAAM,CACf,OAA/B,GAAA+B,CAAe,CAACK,OAAhB,CAAwB,CAAxB,GACEL,CAAe,CAACK,OAAhB,CAAwB,CAAxB,CADF,EAEEV,CAAU,CAACa,GAAX,EACH,CAJwC,CAItC,CAACpB,CAAD,CAAOE,CAAP,CAJsC,CAhF3B,CAsFRyB,CAAqC,CAAG9C,WAAW,CAAC,SAACyC,CAAD,CAAO,SAChC,OAA/B,GAAAV,CAAe,CAACK,OAAhB,CAAwB,CAAxB,GAA0CV,CAAU,CAACqB,MAAX,EADqB,WAE/D,GAAAhB,CAAe,CAACK,OAAhB,EAAwB,CAAxB,CAF+D,qBAE/D,SAA6BK,CAA7B,CACD,CAHwD,CAGtD,EAHsD,CAtF3C,CA8Fd,MACE,yCACE,oBAJF5B,CAIE,kBACOK,CADP,EAEE,OAAO,CAAE4B,CAFX,CAGE,YAAY,CAAEN,CAHhB,CAIE,YAAY,CAAEE,CAJhB,CAKE,GAAG,CAAErC,UAAU,CAAC,CAACsB,CAAD,CAAYX,CAAZ,CAAD,CALjB,GADF,CAQE,oBAAC,OAAD,kBACMQ,CADN,EAEE,MAAM,CAAEC,CAAO,EAAI,CAAC,CAACL,CAFvB,CAGE,SAAS,CAAEI,CAAiB,CAACwB,SAH/B,CAIE,SAAS,CAAErB,CAJb,CAKE,cAAc,CAAEkB,CALlB,CAME,YAAY,CAAEF,CANhB,CAOE,YAAY,CAAEC,CAPhB,GASGxB,CATH,CARF,CAsBH,CAtHI,CA4HR,CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@consta/uikit",
3
- "version": "4.31.2",
3
+ "version": "4.33.0",
4
4
  "keywords": [
5
5
  "ui-kit",
6
6
  "design-system",
@@ -1,2 +0,0 @@
1
- import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import"./TabsFitModeDropdownWrapper.css";import React from"react";import{cn}from"../../../utils/bem";import{getTabsWidth}from"../helpers";import{TabsMoreItems}from"../MoreItems/TabsMoreItems";import{useFittingItems}from"./useFittingItems";var cnTabsFitModeDropdownWrapper=cn("TabsFitModeDropdownWrapper");export var TabsFitModeDropdownWrapper=function(a){var b=a.items,c=a.tabsDimensions,d=a.tabRefs,e=a.getItemLabel,f=a.getItemChecked,g=a.renderItem,h=a.renderItemsList,i=a.size,j=React.useRef(null),k=React.useRef(null),l=b.findIndex(f),m=useFittingItems({tabsDimensions:c,containerRef:j,moreItemsRef:k,activeIndex:l}),n=m.visibleIndexes,o=m.isItemHidden,p=b.filter(function(a,b){return o(b)}),q=React.useMemo(function(){return d.length?Math.max.apply(Math,_toConsumableArray(d.map(function(a){var b,c;return null!==(b=null===(c=a.current)||void 0===c?void 0:c.offsetHeight)&&void 0!==b?b:0}))):0},[c]),r=getTabsWidth(c.filter(function(a,b){return!o(b)}));return React.createElement("div",{ref:j,className:cnTabsFitModeDropdownWrapper(),style:{height:q}},React.createElement("div",{className:cnTabsFitModeDropdownWrapper("Tabs")},h({visibleIndexes:n,withRunningLine:!0,getTabClassName:function getTabClassName(a){return cnTabsFitModeDropdownWrapper("Tab",{hidden:o(a)})}})),React.createElement("div",{ref:k,className:cnTabsFitModeDropdownWrapper("MoreItems",{hidden:!p.length}),style:{left:p.length?r:void 0}},React.createElement(TabsMoreItems,{items:p,renderItem:g,getItemLabel:e,getItemChecked:f,height:q,size:i})))};
2
- //# sourceMappingURL=TabsFitModeDropdownWrapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabsFitModeDropdownWrapper.js","names":["React","cn","getTabsWidth","TabsMoreItems","useFittingItems","cnTabsFitModeDropdownWrapper","TabsFitModeDropdownWrapper","items","tabsDimensions","tabRefs","getItemLabel","getItemChecked","renderItem","renderItemsList","size","ref","useRef","moreItemsRef","activeIndex","findIndex","containerRef","visibleIndexes","isItemHidden","hiddenItems","filter","_item","idx","maxTabHeight","useMemo","length","Math","max","map","tabRef","current","offsetHeight","visibleTabsWidth","_td","height","withRunningLine","getTabClassName","hidden","left"],"sources":["../../../../../../src/components/Tabs/FitModeDropdownWrapper/TabsFitModeDropdownWrapper.tsx"],"sourcesContent":["import './TabsFitModeDropdownWrapper.css';\n\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { getTabsWidth } from '../helpers';\nimport { TabsMoreItems } from '../MoreItems/TabsMoreItems';\nimport { TabsFitModeWrapperProps } from '../types';\nimport { useFittingItems } from './useFittingItems';\n\nconst cnTabsFitModeDropdownWrapper = cn('TabsFitModeDropdownWrapper');\n\nexport const TabsFitModeDropdownWrapper = <ITEM,>({\n items,\n tabsDimensions,\n tabRefs,\n getItemLabel,\n getItemChecked,\n renderItem,\n renderItemsList,\n size,\n}: TabsFitModeWrapperProps<ITEM>): React.ReactElement | null => {\n const ref = React.useRef<HTMLDivElement>(null);\n const moreItemsRef = React.useRef<HTMLDivElement>(null);\n\n const activeIndex = items.findIndex(getItemChecked);\n\n const { visibleIndexes, isItemHidden } = useFittingItems({\n tabsDimensions,\n containerRef: ref,\n moreItemsRef,\n activeIndex,\n });\n\n const hiddenItems = items.filter((_item, idx) => isItemHidden(idx));\n const maxTabHeight: number = React.useMemo(() => {\n if (!tabRefs.length) {\n return 0;\n }\n return Math.max(\n ...tabRefs.map((tabRef) => tabRef.current?.offsetHeight ?? 0),\n );\n }, [tabsDimensions]);\n\n const visibleTabsWidth = getTabsWidth(\n tabsDimensions.filter((_td, idx) => !isItemHidden(idx)),\n );\n\n return (\n <div\n ref={ref}\n className={cnTabsFitModeDropdownWrapper()}\n style={{ height: maxTabHeight }}\n >\n <div className={cnTabsFitModeDropdownWrapper('Tabs')}>\n {renderItemsList({\n visibleIndexes,\n withRunningLine: true,\n getTabClassName: (idx) =>\n cnTabsFitModeDropdownWrapper('Tab', { hidden: isItemHidden(idx) }),\n })}\n </div>\n <div\n ref={moreItemsRef}\n className={cnTabsFitModeDropdownWrapper('MoreItems', {\n hidden: !hiddenItems.length,\n })}\n style={{\n /* В Safari скрытые табы с абсолютом продолжают растягивать контейнер,\n поэтому приходится позиционировать кнопку абсолютом */\n left: hiddenItems.length ? visibleTabsWidth : undefined,\n }}\n >\n <TabsMoreItems\n items={hiddenItems}\n renderItem={renderItem}\n getItemLabel={getItemLabel}\n getItemChecked={getItemChecked}\n height={maxTabHeight}\n size={size}\n />\n </div>\n </div>\n );\n};\n"],"mappings":"yEAAA,yCAEA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,EAAT,0BACA,OAASC,YAAT,kBACA,OAASC,aAAT,kCAEA,OAASC,eAAT,yBAEA,GAAMC,6BAA4B,CAAGJ,EAAE,CAAC,4BAAD,CAAvC,CAEA,MAAO,IAAMK,2BAA0B,CAAG,WASsB,IAR9DC,EAQ8D,GAR9DA,KAQ8D,CAP9DC,CAO8D,GAP9DA,cAO8D,CAN9DC,CAM8D,GAN9DA,OAM8D,CAL9DC,CAK8D,GAL9DA,YAK8D,CAJ9DC,CAI8D,GAJ9DA,cAI8D,CAH9DC,CAG8D,GAH9DA,UAG8D,CAF9DC,CAE8D,GAF9DA,eAE8D,CAD9DC,CAC8D,GAD9DA,IAC8D,CACxDC,CAAG,CAAGf,KAAK,CAACgB,MAAN,CAA6B,IAA7B,CADkD,CAExDC,CAAY,CAAGjB,KAAK,CAACgB,MAAN,CAA6B,IAA7B,CAFyC,CAIxDE,CAAW,CAAGX,CAAK,CAACY,SAAN,CAAgBR,CAAhB,CAJ0C,GAMrBP,eAAe,CAAC,CACvDI,cAAc,CAAdA,CADuD,CAEvDY,YAAY,CAAEL,CAFyC,CAGvDE,YAAY,CAAZA,CAHuD,CAIvDC,WAAW,CAAXA,CAJuD,CAAD,CANM,CAMtDG,CANsD,GAMtDA,cANsD,CAMtCC,CANsC,GAMtCA,YANsC,CAaxDC,CAAW,CAAGhB,CAAK,CAACiB,MAAN,CAAa,SAACC,CAAD,CAAQC,CAAR,QAAgBJ,EAAY,CAACI,CAAD,CAA5B,CAAb,CAb0C,CAcxDC,CAAoB,CAAG3B,KAAK,CAAC4B,OAAN,CAAc,UAAM,OAC1CnB,EAAO,CAACoB,MADkC,CAIxCC,IAAI,CAACC,GAAL,OAAAD,IAAI,oBACNrB,CAAO,CAACuB,GAAR,CAAY,SAACC,CAAD,qCAAYA,CAAM,CAACC,OAAnB,qBAAY,EAAgBC,YAA5B,gBAA4C,CAA5C,CAAZ,CADM,EAJoC,CAEtC,CAKV,CAP4B,CAO1B,CAAC3B,CAAD,CAP0B,CAdiC,CAuBxD4B,CAAgB,CAAGlC,YAAY,CACnCM,CAAc,CAACgB,MAAf,CAAsB,SAACa,CAAD,CAAMX,CAAN,QAAc,CAACJ,CAAY,CAACI,CAAD,CAA3B,CAAtB,CADmC,CAvByB,CA2B9D,MACE,4BACE,GAAG,CAAEX,CADP,CAEE,SAAS,CAAEV,4BAA4B,EAFzC,CAGE,KAAK,CAAE,CAAEiC,MAAM,CAAEX,CAAV,CAHT,EAKE,2BAAK,SAAS,CAAEtB,4BAA4B,CAAC,MAAD,CAA5C,EACGQ,CAAe,CAAC,CACfQ,cAAc,CAAdA,CADe,CAEfkB,eAAe,GAFA,CAGfC,eAAe,CAAE,yBAACd,CAAD,QACfrB,6BAA4B,CAAC,KAAD,CAAQ,CAAEoC,MAAM,CAAEnB,CAAY,CAACI,CAAD,CAAtB,CAAR,CADb,CAHF,CAAD,CADlB,CALF,CAaE,2BACE,GAAG,CAAET,CADP,CAEE,SAAS,CAAEZ,4BAA4B,CAAC,WAAD,CAAc,CACnDoC,MAAM,CAAE,CAAClB,CAAW,CAACM,MAD8B,CAAd,CAFzC,CAKE,KAAK,CAAE,CAGLa,IAAI,CAAEnB,CAAW,CAACM,MAAZ,CAAqBO,CAArB,OAHD,CALT,EAWE,oBAAC,aAAD,EACE,KAAK,CAAEb,CADT,CAEE,UAAU,CAAEX,CAFd,CAGE,YAAY,CAAEF,CAHhB,CAIE,cAAc,CAAEC,CAJlB,CAKE,MAAM,CAAEgB,CALV,CAME,IAAI,CAAEb,CANR,EAXF,CAbF,CAmCH,CAxEM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFittingItems.js","names":["React","useMemo","useComponentSize","useFittingItems","tabsDimensions","containerRef","moreItemsRef","activeIndex","containerWidth","width","moreItemsWidth","visibleIndexes","getFittingItems","isItemHidden","useCallback","idx","includes","totalWidth","Array","from","length","map","_el","index","size","gap","arr","entries","tabDimensions","isLastItem","push"],"sources":["../../../../../../src/components/Tabs/FitModeDropdownWrapper/useFittingItems.ts"],"sourcesContent":["import React, { useMemo } from 'react';\n\nimport { useComponentSize } from '../../../hooks/useComponentSize/useComponentSize';\nimport { TabDimensions } from '../types';\n\nexport const useFittingItems = ({\n tabsDimensions,\n containerRef,\n moreItemsRef,\n activeIndex,\n}: {\n tabsDimensions: TabDimensions[];\n containerRef: React.RefObject<HTMLElement>;\n moreItemsRef: React.RefObject<HTMLElement>;\n activeIndex?: number;\n}): {\n visibleIndexes: number[];\n isItemHidden: (idx: number) => boolean;\n} => {\n const { width: containerWidth } = useComponentSize(containerRef);\n const { width: moreItemsWidth } = useComponentSize(moreItemsRef);\n\n const visibleIndexes = useMemo(\n () =>\n getFittingItems(\n tabsDimensions,\n containerWidth,\n moreItemsWidth,\n activeIndex,\n ),\n [tabsDimensions, containerWidth, moreItemsWidth, activeIndex],\n );\n\n return {\n visibleIndexes,\n isItemHidden: React.useCallback(\n (idx) => !visibleIndexes.includes(idx),\n [visibleIndexes],\n ),\n };\n};\n\nexport const getFittingItems = (\n tabsDimensions: TabDimensions[],\n totalWidth: number,\n moreItemsWidth: number,\n activeIndex?: number,\n): number[] => {\n if (!totalWidth) {\n return Array.from<number>({ length: tabsDimensions.length }).map(\n (_el, index) => index,\n );\n }\n let width =\n typeof activeIndex === 'number' && activeIndex > -1\n ? tabsDimensions[activeIndex].size + tabsDimensions[activeIndex].gap\n : 0;\n const arr: number[] = [];\n for (const [idx, tabDimensions] of tabsDimensions.entries()) {\n if (idx !== activeIndex) {\n const isLastItem = idx === tabsDimensions.length - 1;\n width += tabDimensions.size + (isLastItem ? 0 : tabDimensions.gap);\n if (width + moreItemsWidth > totalWidth) {\n if (activeIndex && !arr.includes(activeIndex)) {\n arr.push(activeIndex);\n }\n return arr;\n }\n arr.push(idx);\n } else {\n arr.push(activeIndex);\n }\n }\n\n return Array.from<number>({ length: tabsDimensions.length }).map(\n (_el, index) => index,\n );\n};\n"],"mappings":"stCAAA,MAAOA,MAAP,EAAgBC,OAAhB,KAA+B,OAA/B,CAEA,OAASC,gBAAT,wDAGA,MAAO,IAAMC,gBAAe,CAAG,WAa1B,IAZHC,EAYG,GAZHA,cAYG,CAXHC,CAWG,GAXHA,YAWG,CAVHC,CAUG,GAVHA,YAUG,CATHC,CASG,GATHA,WASG,GAC+BL,gBAAgB,CAACG,CAAD,CAD/C,CACYG,CADZ,GACKC,KADL,GAE+BP,gBAAgB,CAACI,CAAD,CAF/C,CAEYI,CAFZ,GAEKD,KAFL,CAIGE,CAAc,CAAGV,OAAO,CAC5B,iBACEW,gBAAe,CACbR,CADa,CAEbI,CAFa,CAGbE,CAHa,CAIbH,CAJa,CADjB,CAD4B,CAQ5B,CAACH,CAAD,CAAiBI,CAAjB,CAAiCE,CAAjC,CAAiDH,CAAjD,CAR4B,CAJ3B,CAeH,MAAO,CACLI,cAAc,CAAdA,CADK,CAELE,YAAY,CAAEb,KAAK,CAACc,WAAN,CACZ,SAACC,CAAD,QAAS,CAACJ,CAAc,CAACK,QAAf,CAAwBD,CAAxB,CAAV,CADY,CAEZ,CAACJ,CAAD,CAFY,CAFT,CAOR,CAnCM,CAqCP,MAAO,IAAMC,gBAAe,CAAG,SAC7BR,CAD6B,CAE7Ba,CAF6B,CAG7BP,CAH6B,CAI7BH,CAJ6B,CAKhB,CACb,GAAI,CAACU,CAAL,CACE,MAAOC,MAAK,CAACC,IAAN,CAAmB,CAAEC,MAAM,CAAEhB,CAAc,CAACgB,MAAzB,CAAnB,EAAsDC,GAAtD,CACL,SAACC,CAAD,CAAMC,CAAN,QAAgBA,EAAhB,CADK,CAAP,CAFW,MAMTd,CAAK,CACgB,QAAvB,QAAOF,EAAP,EAAiD,CAAC,CAAf,CAAAA,CAAnC,CACIH,CAAc,CAACG,CAAD,CAAd,CAA4BiB,IAA5B,CAAmCpB,CAAc,CAACG,CAAD,CAAd,CAA4BkB,GADnE,CAEI,CATO,CAUPC,CAAa,CAAG,EAVT,8BAWsBtB,CAAc,CAACuB,OAAf,EAXtB,MAWb,2BAA6D,iCAAjDZ,CAAiD,MAA5Ca,CAA4C,MAC3D,GAAIb,CAAG,GAAKR,CAAZ,CAAyB,CACvB,GAAMsB,EAAU,CAAGd,CAAG,GAAKX,CAAc,CAACgB,MAAf,CAAwB,CAAnD,CAEA,GADAX,CAAK,EAAImB,CAAa,CAACJ,IAAd,EAAsBK,CAAU,CAAG,CAAH,CAAOD,CAAa,CAACH,GAArD,CACT,CAAIhB,CAAK,CAAGC,CAAR,CAAyBO,CAA7B,CAIE,MAHIV,EAAW,EAAI,CAACmB,CAAG,CAACV,QAAJ,CAAaT,CAAb,CAGpB,EAFEmB,CAAG,CAACI,IAAJ,CAASvB,CAAT,CAEF,CAAOmB,CAAP,CAEFA,CAAG,CAACI,IAAJ,CAASf,CAAT,CACD,CAVD,IAWEW,EAAG,CAACI,IAAJ,CAASvB,CAAT,CAEH,CAzBY,+BA2Bb,MAAOW,MAAK,CAACC,IAAN,CAAmB,CAAEC,MAAM,CAAEhB,CAAc,CAACgB,MAAzB,CAAnB,EAAsDC,GAAtD,CACL,SAACC,CAAD,CAAMC,CAAN,QAAgBA,EAAhB,CADK,CAGR,CAnCM"}
@@ -1,2 +0,0 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TabsFitModeScrollWrapper.css";import{IconArrowLeft}from"@consta/icons/IconArrowLeft";import{IconArrowRight}from"@consta/icons/IconArrowRight";import React from"react";import{useResizeObserved}from"../../../hooks/useResizeObserved/useResizeObserved";import{useScrollPosition}from"../../../hooks/useScrollPosition/useScrollPosition";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{getTabsWidth,getVisibleTabsRange}from"../helpers";var cnTabsFitModeScrollWrapper=cn("TabsFitModeScrollWrapper");export var TabsFitModeScrollWrapper=function(a){var b=a.tabsDimensions,c=a.items,d=a.renderItemsList,e=a.getItemChecked,f=React.useRef(null),g=useResizeObserved(React.useMemo(function(){return[f]},[f]),function(a){var b;return{isScrollable:a&&a.scrollWidth>a.offsetWidth,width:null!==(b=null===a||void 0===a?void 0:a.offsetWidth)&&void 0!==b?b:0,paddingLeft:a?parseInt(getComputedStyle(a).paddingLeft,10):0}}),h=_slicedToArray(g,1),i=h[0],j=i.isScrollable,k=i.width,l=i.paddingLeft,m=useScrollPosition(f.current),n=m.scrollLeft,o=getVisibleTabsRange({tabsDimensions:b,containerWidth:k,containerPaddingLeft:l,scrollLeft:n}),p=_slicedToArray(o,2),q=p[0],r=p[1],s=function(a){if(!(a>=q&&a<=r)){var c,d=getTabsWidth(b.slice(0,a));null===(c=f.current)||void 0===c?void 0:c.scrollTo({left:d,behavior:"smooth"})}},t=function(){s(q-1)},u=function(){s(r+1)},v=c.findIndex(e);return React.useEffect(function(){j&&s(v)},[v,j]),React.createElement("div",{className:cnTabsFitModeScrollWrapper()},j&&React.createElement(React.Fragment,null,["prev","next"].map(function(a){return React.createElement(Button,{key:a,view:"clear",type:"button",size:"xs",onlyIcon:!0,disabled:"prev"===a?0===q:r===c.length-1,iconLeft:"prev"===a?IconArrowLeft:IconArrowRight,className:cnTabsFitModeScrollWrapper("Button",{to:a}),onClick:"prev"===a?t:u})})),React.createElement("div",{className:cnTabsFitModeScrollWrapper("Content"),ref:f},d({visibleIndexes:Array.from(Array(c.length).keys()),getTabClassName:function getTabClassName(a){return cnTabsFitModeScrollWrapper("Tab",{noMargin:a===c.length-1})}})))};
2
- //# sourceMappingURL=TabsFitModeScrollWrapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabsFitModeScrollWrapper.js","names":["IconArrowLeft","IconArrowRight","React","useResizeObserved","useScrollPosition","cn","Button","getTabsWidth","getVisibleTabsRange","cnTabsFitModeScrollWrapper","TabsFitModeScrollWrapper","tabsDimensions","items","renderItemsList","getItemChecked","scrollContainerRef","useRef","useMemo","el","isScrollable","scrollWidth","offsetWidth","width","paddingLeft","parseInt","getComputedStyle","containerWidth","containerPaddingLeft","current","scrollLeft","firstVisibleTabIdx","lastVisibleTabIdx","scrollTabIntoView","idx","previousTabsWidth","slice","scrollTo","left","behavior","scrollPrev","scrollNext","checkedTabIdx","findIndex","useEffect","map","buttonTo","length","to","visibleIndexes","Array","from","keys","getTabClassName","noMargin"],"sources":["../../../../../../src/components/Tabs/FitModeScrollWrapper/TabsFitModeScrollWrapper.tsx"],"sourcesContent":["import './TabsFitModeScrollWrapper.css';\n\nimport { IconArrowLeft } from '@consta/icons/IconArrowLeft';\nimport { IconArrowRight } from '@consta/icons/IconArrowRight';\nimport React from 'react';\n\nimport { useResizeObserved } from '../../../hooks/useResizeObserved/useResizeObserved';\nimport { useScrollPosition } from '../../../hooks/useScrollPosition/useScrollPosition';\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { getTabsWidth, getVisibleTabsRange } from '../helpers';\nimport { TabsFitModeWrapperProps } from '../types';\n\nconst cnTabsFitModeScrollWrapper = cn('TabsFitModeScrollWrapper');\n\nexport const TabsFitModeScrollWrapper = <ITEM,>({\n tabsDimensions,\n items,\n renderItemsList,\n getItemChecked,\n}: TabsFitModeWrapperProps<ITEM>): React.ReactElement | null => {\n const scrollContainerRef = React.useRef<HTMLDivElement>(null);\n const [\n { isScrollable, width: containerWidth, paddingLeft: containerPaddingLeft },\n ] = useResizeObserved(\n React.useMemo(() => [scrollContainerRef], [scrollContainerRef]),\n (el) => ({\n isScrollable: el && el.scrollWidth > el.offsetWidth,\n width: el?.offsetWidth ?? 0,\n paddingLeft: el ? parseInt(getComputedStyle(el).paddingLeft, 10) : 0,\n }),\n );\n const { scrollLeft } = useScrollPosition(scrollContainerRef.current);\n\n const [firstVisibleTabIdx, lastVisibleTabIdx] = getVisibleTabsRange({\n tabsDimensions,\n containerWidth,\n containerPaddingLeft,\n scrollLeft,\n });\n\n const scrollTabIntoView = (idx: number) => {\n const tabIsVisible = idx >= firstVisibleTabIdx && idx <= lastVisibleTabIdx;\n\n if (!tabIsVisible) {\n const previousTabsWidth = getTabsWidth(tabsDimensions.slice(0, idx));\n scrollContainerRef.current?.scrollTo({\n left: previousTabsWidth,\n behavior: 'smooth',\n });\n }\n };\n\n const scrollPrev = () => {\n scrollTabIntoView(firstVisibleTabIdx - 1);\n };\n\n const scrollNext = () => {\n scrollTabIntoView(lastVisibleTabIdx + 1);\n };\n\n // Подскролливаем к выбранному табу\n const checkedTabIdx = items.findIndex(getItemChecked);\n React.useEffect(() => {\n if (isScrollable) {\n scrollTabIntoView(checkedTabIdx);\n }\n }, [checkedTabIdx, isScrollable]);\n\n return (\n <div className={cnTabsFitModeScrollWrapper()}>\n {isScrollable && (\n <>\n {(['prev', 'next'] as const).map((buttonTo) => (\n <Button\n key={buttonTo}\n view=\"clear\"\n type=\"button\"\n size=\"xs\"\n onlyIcon\n disabled={\n buttonTo === 'prev'\n ? firstVisibleTabIdx === 0\n : lastVisibleTabIdx === items.length - 1\n }\n iconLeft={buttonTo === 'prev' ? IconArrowLeft : IconArrowRight}\n className={cnTabsFitModeScrollWrapper('Button', { to: buttonTo })}\n onClick={buttonTo === 'prev' ? scrollPrev : scrollNext}\n />\n ))}\n </>\n )}\n <div\n className={cnTabsFitModeScrollWrapper('Content')}\n ref={scrollContainerRef}\n >\n {renderItemsList({\n visibleIndexes: Array.from(Array(items.length).keys()),\n getTabClassName: (idx) =>\n cnTabsFitModeScrollWrapper('Tab', {\n noMargin: idx === items.length - 1,\n }),\n })}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.test.js","names":["getVisibleTabsRange","describe","tabsDimensions","size","gap","it","expect","containerWidth","scrollLeft","containerPaddingLeft","toEqual"],"sources":["../../../../../../../src/components/Tabs/FitModeScrollWrapper/__test__/helpers.test.ts"],"sourcesContent":["import { getVisibleTabsRange } from '../../helpers';\nimport { TabDimensions } from '../../types';\n\ndescribe('getVisibleTabsRange', () => {\n const tabsDimensions: TabDimensions[] = [\n {\n size: 100,\n gap: 10,\n },\n {\n size: 100,\n gap: 10,\n },\n {\n size: 100,\n gap: 0,\n },\n ];\n\n it('возвращает все табы, если все вмещаются', () => {\n expect(\n getVisibleTabsRange({\n tabsDimensions,\n containerWidth: 330,\n scrollLeft: 0,\n containerPaddingLeft: 10,\n }),\n ).toEqual([0, 2]);\n });\n\n it('возвращает все табы, если проскроллили только паддинг', () => {\n expect(\n getVisibleTabsRange({\n tabsDimensions,\n containerWidth: 320,\n scrollLeft: 10,\n containerPaddingLeft: 10,\n }),\n ).toEqual([0, 2]);\n });\n\n it('возвращает все табы, кроме последнего, если последний не вместился полностью', () => {\n expect(\n getVisibleTabsRange({\n tabsDimensions,\n containerWidth: 329,\n scrollLeft: 0,\n containerPaddingLeft: 10,\n }),\n ).toEqual([0, 1]);\n });\n\n it('возвращает все табы, кроме первого, если первый не виден полностью из-за скролла', () => {\n expect(\n getVisibleTabsRange({\n tabsDimensions,\n containerWidth: 319,\n scrollLeft: 11,\n containerPaddingLeft: 10,\n }),\n ).toEqual([1, 2]);\n });\n\n it('возвращает только средний таб, если первый и последний не видны полностью', () => {\n expect(\n getVisibleTabsRange({\n tabsDimensions,\n containerWidth: 318,\n scrollLeft: 11,\n containerPaddingLeft: 10,\n }),\n ).toEqual([1, 1]);\n });\n\n it('возвращает только средний таб, даже если он не влез полностью, но виден его левый край', () => {\n expect(\n getVisibleTabsRange({\n tabsDimensions,\n containerWidth: 50,\n scrollLeft: 110,\n containerPaddingLeft: 10,\n }),\n ).toEqual([1, 1]);\n });\n\n it('возвращает только первый таб, если ничего не влезает', () => {\n expect(\n getVisibleTabsRange({\n tabsDimensions,\n containerWidth: 10,\n scrollLeft: 0,\n containerPaddingLeft: 10,\n }),\n ).toEqual([0, 0]);\n });\n});\n"],"mappings":"AAAA,OAASA,mBAAT,qBAGAC,QAAQ,CAAC,qBAAD,CAAwB,UAAM,CACpC,GAAMC,EAA+B,CAAG,CACtC,CACEC,IAAI,CAAE,GADR,CAEEC,GAAG,CAAE,EAFP,CADsC,CAKtC,CACED,IAAI,CAAE,GADR,CAEEC,GAAG,CAAE,EAFP,CALsC,CAStC,CACED,IAAI,CAAE,GADR,CAEEC,GAAG,CAAE,CAFP,CATsC,CAAxC,CAeAC,EAAE,CAAC,8MAAD,CAA4C,UAAM,CAClDC,MAAM,CACJN,mBAAmB,CAAC,CAClBE,cAAc,CAAdA,CADkB,CAElBK,cAAc,CAAE,GAFE,CAGlBC,UAAU,CAAE,CAHM,CAIlBC,oBAAoB,CAAE,EAJJ,CAAD,CADf,CAAN,CAOEC,OAPF,CAOU,CAAC,CAAD,CAAI,CAAJ,CAPV,CAQD,CATC,CAhBkC,CA2BpCL,EAAE,CAAC,6RAAD,CAA0D,UAAM,CAChEC,MAAM,CACJN,mBAAmB,CAAC,CAClBE,cAAc,CAAdA,CADkB,CAElBK,cAAc,CAAE,GAFE,CAGlBC,UAAU,CAAE,EAHM,CAIlBC,oBAAoB,CAAE,EAJJ,CAAD,CADf,CAAN,CAOEC,OAPF,CAOU,CAAC,CAAD,CAAI,CAAJ,CAPV,CAQD,CATC,CA3BkC,CAsCpCL,EAAE,CAAC,mZAAD,CAAiF,UAAM,CACvFC,MAAM,CACJN,mBAAmB,CAAC,CAClBE,cAAc,CAAdA,CADkB,CAElBK,cAAc,CAAE,GAFE,CAGlBC,UAAU,CAAE,CAHM,CAIlBC,oBAAoB,CAAE,EAJJ,CAAD,CADf,CAAN,CAOEC,OAPF,CAOU,CAAC,CAAD,CAAI,CAAJ,CAPV,CAQD,CATC,CAtCkC,CAiDpCL,EAAE,CAAC,4ZAAD,CAAqF,UAAM,CAC3FC,MAAM,CACJN,mBAAmB,CAAC,CAClBE,cAAc,CAAdA,CADkB,CAElBK,cAAc,CAAE,GAFE,CAGlBC,UAAU,CAAE,EAHM,CAIlBC,oBAAoB,CAAE,EAJJ,CAAD,CADf,CAAN,CAOEC,OAPF,CAOU,CAAC,CAAD,CAAI,CAAJ,CAPV,CAQD,CATC,CAjDkC,CA4DpCL,EAAE,CAAC,iYAAD,CAA8E,UAAM,CACpFC,MAAM,CACJN,mBAAmB,CAAC,CAClBE,cAAc,CAAdA,CADkB,CAElBK,cAAc,CAAE,GAFE,CAGlBC,UAAU,CAAE,EAHM,CAIlBC,oBAAoB,CAAE,EAJJ,CAAD,CADf,CAAN,CAOEC,OAPF,CAOU,CAAC,CAAD,CAAI,CAAJ,CAPV,CAQD,CATC,CA5DkC,CAuEpCL,EAAE,CAAC,sbAAD,CAA2F,UAAM,CACjGC,MAAM,CACJN,mBAAmB,CAAC,CAClBE,cAAc,CAAdA,CADkB,CAElBK,cAAc,CAAE,EAFE,CAGlBC,UAAU,CAAE,GAHM,CAIlBC,oBAAoB,CAAE,EAJJ,CAAD,CADf,CAAN,CAOEC,OAPF,CAOU,CAAC,CAAD,CAAI,CAAJ,CAPV,CAQD,CATC,CAvEkC,CAkFpCL,EAAE,CAAC,kRAAD,CAAyD,UAAM,CAC/DC,MAAM,CACJN,mBAAmB,CAAC,CAClBE,cAAc,CAAdA,CADkB,CAElBK,cAAc,CAAE,EAFE,CAGlBC,UAAU,CAAE,CAHM,CAIlBC,oBAAoB,CAAE,EAJJ,CAAD,CADf,CAAN,CAOEC,OAPF,CAOU,CAAC,CAAD,CAAI,CAAJ,CAPV,CAQD,CATC,CAUH,CA5FO,C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabsLine.js","names":["React","useMemo","cn","cnTabsLine","TabsBorderLine","linePosition","TabsRunningLine","activeTabIdx","tabsDimensions","visibleIndexes","size","offset","reduce","a","v","index","includes","gap","TabsLine","type","position","formatCSSValue","n"],"sources":["../../../../../../src/components/Tabs/Line/TabsLine.tsx"],"sourcesContent":["import './TabsLine.css';\n\nimport React, { useMemo } from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { TabDimensions, TabsPropLinePosition } from '../types';\n\nconst cnTabsLine = cn('TabsLine');\n\nexport const TabsBorderLine: React.FC<{\n linePosition: TabsPropLinePosition;\n}> = ({ linePosition }) => {\n return <TabsLine type=\"border\" linePosition={linePosition} size=\"100%\" />;\n};\n\nexport const TabsRunningLine: React.FC<{\n linePosition: TabsPropLinePosition;\n activeTabIdx: number;\n visibleIndexes?: number[];\n tabsDimensions: TabDimensions[];\n}> = ({ linePosition, activeTabIdx, tabsDimensions, visibleIndexes }) => {\n const size = tabsDimensions[activeTabIdx]?.size ?? 0;\n\n const offset = useMemo(\n () =>\n tabsDimensions.reduce(\n (a, v, index) =>\n a +\n (visibleIndexes?.includes(index) && index < activeTabIdx\n ? v.size + v.gap\n : 0),\n 0,\n ),\n [tabsDimensions, visibleIndexes, activeTabIdx],\n );\n\n return (\n <TabsLine\n type=\"running\"\n linePosition={linePosition}\n size={size}\n offset={offset}\n />\n );\n};\n\nconst TabsLine: React.FC<{\n type: 'border' | 'running';\n linePosition: TabsPropLinePosition;\n size: number | string;\n offset?: number | string;\n}> = ({ type, linePosition, size, offset = '0px' }) => (\n <div\n className={cnTabsLine({ type, position: linePosition })}\n style={{\n ['--line-length' as string]: formatCSSValue(size),\n ['--line-offset' as string]: formatCSSValue(offset),\n }}\n />\n);\n\nconst formatCSSValue = (n: number | string) =>\n typeof n === 'number' ? `${n}px` : n;\n"],"mappings":"mEAAA,uBAEA,MAAOA,MAAP,EAAgBC,OAAhB,KAA+B,OAA/B,CAEA,OAASC,EAAT,0BAGA,GAAMC,WAAU,CAAGD,EAAE,CAAC,UAAD,CAArB,CAEA,MAAO,IAAME,eAEX,CAAG,WAAsB,IAAnBC,EAAmB,GAAnBA,YAAmB,CACzB,MAAO,qBAAC,QAAD,EAAU,IAAI,CAAC,QAAf,CAAwB,YAAY,CAAEA,CAAtC,CAAoD,IAAI,CAAC,MAAzD,EACR,CAJM,CAMP,MAAO,IAAMC,gBAKX,CAAG,WAAoE,SAAjED,CAAiE,GAAjEA,YAAiE,CAAnDE,CAAmD,GAAnDA,YAAmD,CAArCC,CAAqC,GAArCA,cAAqC,CAArBC,CAAqB,GAArBA,cAAqB,CACjEC,CAAI,qBAAGF,CAAc,CAACD,CAAD,CAAjB,qBAAG,EAA8BG,IAAjC,gBAAyC,CADoB,CAGjEC,CAAM,CAAGV,OAAO,CACpB,iBACEO,EAAc,CAACI,MAAf,CACE,SAACC,CAAD,CAAIC,CAAJ,CAAOC,CAAP,QACEF,EAAC,EACA,OAAAJ,CAAc,WAAdA,CAAA,EAAAA,CAAc,CAAEO,QAAhB,CAAyBD,CAAzB,GAAmCA,CAAK,CAAGR,CAA3C,CACGO,CAAC,CAACJ,IAAF,CAASI,CAAC,CAACG,GADd,CAEG,CAHH,CADH,CADF,CAME,CANF,CADF,CADoB,CAUpB,CAACT,CAAD,CAAiBC,CAAjB,CAAiCF,CAAjC,CAVoB,CAHiD,CAgBvE,MACE,qBAAC,QAAD,EACE,IAAI,CAAC,SADP,CAEE,YAAY,CAAEF,CAFhB,CAGE,IAAI,CAAEK,CAHR,CAIE,MAAM,CAAEC,CAJV,EAOH,CA7BM,C,GA+BDO,SAKJ,CAAG,kBAAGC,CAAH,GAAGA,IAAH,CAASd,CAAT,GAASA,YAAT,CAAuBK,CAAvB,GAAuBA,IAAvB,KAA6BC,MAA7B,CAA6BA,CAA7B,YAAsC,KAAtC,SACH,4BACE,SAAS,CAAER,UAAU,CAAC,CAAEgB,IAAI,CAAJA,CAAF,CAAQC,QAAQ,CAAEf,CAAlB,CAAD,CADvB,CAEE,KAAK,yBACF,eADE,CAC0BgB,cAAc,CAACX,CAAD,CADxC,oBAEF,eAFE,CAE0BW,cAAc,CAACV,CAAD,CAFxC,IAFP,EADG,C,CAUCU,cAAc,CAAG,SAACC,CAAD,QACR,QAAb,QAAOA,EAAP,WAA2BA,CAA3B,OAAmCA,CADd,C"}
@@ -1 +0,0 @@
1
- .TabsMoreItems-Button{align-items:center;display:flex}.TabsMoreItems-Content{white-space:nowrap}.TabsMoreItems-Item{padding:0 var(--space-s)}.TabsMoreItems-Item_active{position:relative}.TabsMoreItems-Item_active:before{background:var(--color-bg-brand);bottom:0;content:"";left:0;position:absolute;top:0;width:2px}.TabsMoreItems-Item>*{width:100%}
@@ -1,2 +0,0 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TabsMoreItems.css";import{IconMeatball}from"@consta/icons/IconMeatball";import FocusTrap from"focus-trap-react";import React,{forwardRef,useEffect,useRef,useState}from"react";import{Transition}from"react-transition-group";import{Button}from"../../Button";import{ListBox}from"../../ListCanary";import{Popover}from"../../Popover/Popover";import{useFlag}from"../../../hooks/useFlag";import{useForkRef}from"../../../hooks/useForkRef";import{animateTimeout,cnMixPopoverAnimate}from"../../../mixs/MixPopoverAnimate";import{cn}from"../../../utils/bem";var cnTabsMoreItems=cn("TabsMoreItems"),TabsMoreItemsRender=function(a,b){var c=a.items,d=a.renderItem,e=a.getItemLabel,f=a.getItemChecked,g=a.height,h=a.size,i=useFlag(!1),j=_slicedToArray(i,2),k=j[0],l=j[1],m=useRef(null),n=useRef(null),o=useState("downStartLeft"),p=_slicedToArray(o,2),q=p[0],r=p[1];return useEffect(function(){0===c.length&&l.off()},[c]),React.createElement(React.Fragment,null,React.createElement("div",{ref:useForkRef([b,m]),className:cnTabsMoreItems("Button"),style:{height:g}},React.createElement(Button,{size:"xs",type:"button",view:"ghost",onlyIcon:!0,iconLeft:IconMeatball,onClick:l.toggle})),React.createElement(Transition,{in:k,unmountOnExit:!0,nodeRef:n,timeout:animateTimeout},function(a){var b;return React.createElement(Popover,{anchorRef:m,offset:-1,ref:n,direction:"downStartRight",spareDirection:"downStartLeft",className:cnTabsMoreItems("Popover",[cnMixPopoverAnimate({animate:a,direction:q})]),onSetDirection:r,possibleDirections:["downStartRight","downStartLeft","upStartRight","upStartLeft","downCenter","upCenter"]},React.createElement(FocusTrap,{focusTrapOptions:{fallbackFocus:null!==(b=m.current)&&void 0!==b?b:void 0,clickOutsideDeactivates:function clickOutsideDeactivates(a){var b,c=null===(b=m.current)||void 0===b?void 0:b.contains(a.target);return!c},allowOutsideClick:!0,onDeactivate:l.off}},React.createElement(ListBox,{shadow:!0,border:!0,size:h,form:"default",className:cnTabsMoreItems("Content")},c.map(function(a){return React.createElement("div",{key:e(a),className:cnTabsMoreItems("Item",{active:f(a)})},d(a,l.off,!0))}))))}))};export var TabsMoreItems=forwardRef(TabsMoreItemsRender);
2
- //# sourceMappingURL=TabsMoreItems.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabsMoreItems.js","names":["IconMeatball","FocusTrap","React","forwardRef","useEffect","useRef","useState","Transition","Button","ListBox","Popover","useFlag","useForkRef","animateTimeout","cnMixPopoverAnimate","cn","cnTabsMoreItems","TabsMoreItemsRender","props","ref","items","renderItem","getItemLabel","getItemChecked","height","size","open","setOpen","buttonRef","popoverRef","direction","setDirection","length","off","toggle","animate","fallbackFocus","current","clickOutsideDeactivates","e","isClickInsideButton","contains","target","allowOutsideClick","onDeactivate","map","item","active","TabsMoreItems"],"sources":["../../../../../../src/components/Tabs/MoreItems/TabsMoreItems.tsx"],"sourcesContent":["import './TabsMoreItems.css';\n\nimport { IconMeatball } from '@consta/icons/IconMeatball';\nimport FocusTrap from 'focus-trap-react';\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { Button } from '##/components/Button';\nimport { ListBox } from '##/components/ListCanary';\nimport { Direction, Popover } from '##/components/Popover/Popover';\nimport { useFlag } from '##/hooks/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { animateTimeout, cnMixPopoverAnimate } from '##/mixs/MixPopoverAnimate';\nimport { cn } from '##/utils/bem';\n\nimport { TabsMoreItemsComponent, TabsMoreItemsProps } from '../types';\n\nconst cnTabsMoreItems = cn('TabsMoreItems');\n\nconst TabsMoreItemsRender = (\n props: TabsMoreItemsProps,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const { items, renderItem, getItemLabel, getItemChecked, height, size } =\n props;\n const [open, setOpen] = useFlag(false);\n const buttonRef = useRef<HTMLDivElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const [direction, setDirection] = useState<Direction>('downStartLeft');\n\n useEffect(() => {\n items.length === 0 && setOpen.off();\n }, [items]);\n\n return (\n <>\n <div\n ref={useForkRef([ref, buttonRef])}\n className={cnTabsMoreItems('Button')}\n style={{ height }}\n >\n <Button\n size=\"xs\"\n type=\"button\"\n view=\"ghost\"\n onlyIcon\n iconLeft={IconMeatball}\n onClick={setOpen.toggle}\n />\n </div>\n <Transition\n in={open}\n unmountOnExit\n nodeRef={popoverRef}\n timeout={animateTimeout}\n >\n {(animate) => (\n <Popover\n anchorRef={buttonRef}\n offset={-1}\n ref={popoverRef}\n direction=\"downStartRight\"\n spareDirection=\"downStartLeft\"\n className={cnTabsMoreItems('Popover', [\n cnMixPopoverAnimate({ animate, direction }),\n ])}\n onSetDirection={setDirection}\n possibleDirections={[\n 'downStartRight',\n 'downStartLeft',\n 'upStartRight',\n 'upStartLeft',\n 'downCenter',\n 'upCenter',\n ]}\n >\n <FocusTrap\n focusTrapOptions={{\n fallbackFocus: buttonRef.current ?? undefined,\n clickOutsideDeactivates: (e) => {\n const isClickInsideButton = buttonRef.current?.contains(\n e.target as Node,\n );\n return !isClickInsideButton;\n },\n allowOutsideClick: true,\n onDeactivate: setOpen.off,\n }}\n >\n <ListBox\n shadow\n border\n size={size}\n form=\"default\"\n className={cnTabsMoreItems('Content')}\n >\n {items.map((item) => (\n <div\n key={getItemLabel(item)}\n className={cnTabsMoreItems('Item', {\n active: getItemChecked(item),\n })}\n >\n {renderItem(item, setOpen.off, true)}\n </div>\n ))}\n </ListBox>\n </FocusTrap>\n </Popover>\n )}\n </Transition>\n </>\n );\n};\n\nexport const TabsMoreItems = forwardRef(\n TabsMoreItemsRender,\n) as TabsMoreItemsComponent;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabsTab.js","names":["React","forwardRef","ListItem","mapItemVerticalPadding","useForkRef","cnMixFocus","cn","cnTabsTab","TabsTabRender","props","ref","label","onChange","checked","size","onlyIcon","icon","iconSize","leftIcon","leftSide","tabRef","className","as","Tag","rightIcon","rightSide","disabled","renderInDropdown","otherProps","currentRef","before","toString","pV","TabsTab"],"sources":["../../../../../../src/components/Tabs/Tab/TabsTab.tsx"],"sourcesContent":["import './TabsTab.css';\n\nimport React, { forwardRef } from 'react';\n\nimport { ListItem, mapItemVerticalPadding } from '##/components/ListCanary';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { cnMixFocus } from '##/mixs/MixFocus';\nimport { cn } from '##/utils/bem';\n\nimport { TabsTabComponent, TabsTabProps } from '../types';\n\nexport const cnTabsTab = cn('TabsTab');\n\nconst TabsTabRender = (\n props: TabsTabProps,\n ref: React.Ref<HTMLButtonElement>,\n) => {\n const {\n label,\n onChange,\n checked,\n size,\n onlyIcon,\n icon,\n iconSize,\n leftIcon,\n leftSide,\n tabRef,\n className,\n as: Tag = 'button',\n rightIcon,\n rightSide,\n disabled,\n renderInDropdown,\n ...otherProps\n } = props;\n\n const currentRef = useForkRef([ref, tabRef]);\n\n return (\n <ListItem\n as={Tag}\n className={cnTabsTab({ checked, onlyIcon, renderInDropdown, disabled }, [\n !disabled ? cnMixFocus({ before: true }) : undefined,\n className,\n ])}\n role=\"tab\"\n type=\"button\"\n tabIndex={disabled ? -1 : undefined}\n ref={currentRef}\n title={onlyIcon ? label.toString() : undefined}\n label={onlyIcon ? undefined : label.toString()}\n onClick={checked ? undefined : onChange}\n leftIcon={onlyIcon ? leftIcon || icon || rightIcon : leftIcon || icon}\n leftSide={onlyIcon ? undefined : leftSide}\n rightIcon={onlyIcon ? undefined : rightIcon}\n rightSide={onlyIcon ? undefined : rightSide}\n iconSize={iconSize}\n disabled={disabled}\n size={size}\n space={{\n pV: mapItemVerticalPadding ? mapItemVerticalPadding[size] : 'xs',\n }}\n {...otherProps}\n />\n );\n};\n\nexport const TabsTab = forwardRef(TabsTabRender) as TabsTabComponent;\n"],"mappings":"4QAAA,sBAEA,MAAOA,MAAP,EAAgBC,UAAhB,KAAkC,OAAlC,CAEA,OAASC,QAAT,CAAmBC,sBAAnB,wBACA,OAASC,UAAT,iCACA,OAASC,UAAT,8BACA,OAASC,EAAT,0BAIA,MAAO,IAAMC,UAAS,CAAGD,EAAE,CAAC,SAAD,CAApB,CAEP,GAAME,cAAa,CAAG,SACpBC,CADoB,CAEpBC,CAFoB,CAGjB,IAEDC,EAFC,CAmBCF,CAnBD,CAEDE,KAFC,CAGDC,CAHC,CAmBCH,CAnBD,CAGDG,QAHC,CAIDC,CAJC,CAmBCJ,CAnBD,CAIDI,OAJC,CAKDC,CALC,CAmBCL,CAnBD,CAKDK,IALC,CAMDC,CANC,CAmBCN,CAnBD,CAMDM,QANC,CAODC,CAPC,CAmBCP,CAnBD,CAODO,IAPC,CAQDC,CARC,CAmBCR,CAnBD,CAQDQ,QARC,CASDC,CATC,CAmBCT,CAnBD,CASDS,QATC,CAUDC,CAVC,CAmBCV,CAnBD,CAUDU,QAVC,CAWDC,CAXC,CAmBCX,CAnBD,CAWDW,MAXC,CAYDC,CAZC,CAmBCZ,CAnBD,CAYDY,SAZC,GAmBCZ,CAnBD,CAaDa,EAbC,CAaGC,CAbH,YAaS,QAbT,GAcDC,CAdC,CAmBCf,CAnBD,CAcDe,SAdC,CAeDC,CAfC,CAmBChB,CAnBD,CAeDgB,SAfC,CAgBDC,CAhBC,CAmBCjB,CAnBD,CAgBDiB,QAhBC,CAiBDC,CAjBC,CAmBClB,CAnBD,CAiBDkB,gBAjBC,CAkBEC,CAlBF,0BAmBCnB,CAnBD,YAqBGoB,CAAU,CAAGzB,UAAU,CAAC,CAACM,CAAD,CAAMU,CAAN,CAAD,CArB1B,CAuBH,MACE,qBAAC,QAAD,gBACE,EAAE,CAAEG,CADN,CAEE,SAAS,CAAEhB,SAAS,CAAC,CAAEM,OAAO,CAAPA,CAAF,CAAWE,QAAQ,CAARA,CAAX,CAAqBY,gBAAgB,CAAhBA,CAArB,CAAuCD,QAAQ,CAARA,CAAvC,CAAD,CAAoD,CACrEA,CAAD,QAAYrB,UAAU,CAAC,CAAEyB,MAAM,GAAR,CAAD,CADgD,CAEtET,CAFsE,CAApD,CAFtB,CAME,IAAI,CAAC,KANP,CAOE,IAAI,CAAC,QAPP,CAQE,QAAQ,CAAEK,CAAQ,CAAG,CAAC,CAAJ,OARpB,CASE,GAAG,CAAEG,CATP,CAUE,KAAK,CAAEd,CAAQ,CAAGJ,CAAK,CAACoB,QAAN,EAAH,OAVjB,CAWE,KAAK,CAAEhB,CAAQ,QAAeJ,CAAK,CAACoB,QAAN,EAXhC,CAYE,OAAO,CAAElB,CAAO,QAAeD,CAZjC,CAaE,QAAQ,CAAEG,CAAQ,CAAGG,CAAQ,EAAIF,CAAZ,EAAoBQ,CAAvB,CAAmCN,CAAQ,EAAIF,CAbnE,CAcE,QAAQ,CAAED,CAAQ,QAAeI,CAdnC,CAeE,SAAS,CAAEJ,CAAQ,QAAeS,CAfpC,CAgBE,SAAS,CAAET,CAAQ,QAAeU,CAhBpC,CAiBE,QAAQ,CAAER,CAjBZ,CAkBE,QAAQ,CAAES,CAlBZ,CAmBE,IAAI,CAAEZ,CAnBR,CAoBE,KAAK,CAAE,CACLkB,EAAE,CAAE7B,sBAAsB,CAAGA,sBAAsB,CAACW,CAAD,CAAzB,CAAkC,IADvD,CApBT,EAuBMc,CAvBN,EA0BH,CArDD,CAuDA,MAAO,IAAMK,QAAO,CAAGhC,UAAU,CAACO,aAAD,CAA1B"}