@consta/uikit 5.21.0 → 5.23.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 (279) hide show
  1. package/__internal__/src/components/AutoComplete/types.d.ts +1 -1
  2. package/__internal__/src/components/AutoComplete/types.js.map +1 -1
  3. package/__internal__/src/components/AutoCompleteCanary/types.d.ts +3 -3
  4. package/__internal__/src/components/AutoCompleteCanary/types.js.map +1 -1
  5. package/__internal__/src/components/AvatarGroup/helpers.d.ts +66 -56
  6. package/__internal__/src/components/AvatarGroup/types.d.ts +1 -1
  7. package/__internal__/src/components/AvatarGroup/types.js.map +1 -1
  8. package/__internal__/src/components/BadgeGroup/types.d.ts +1 -1
  9. package/__internal__/src/components/BadgeGroup/types.js.map +1 -1
  10. package/__internal__/src/components/BookmarkTabs/BookmarkTabs.js.map +1 -1
  11. package/__internal__/src/components/BookmarkTabs/BookmarkTabsTab/BookmarkTabsTab.css +1 -1
  12. package/__internal__/src/components/BookmarkTabs/helper.d.ts +66 -56
  13. package/__internal__/src/components/BookmarkTabs/types.d.ts +3 -3
  14. package/__internal__/src/components/BookmarkTabs/types.js.map +1 -1
  15. package/__internal__/src/components/Breadcrumbs/BreadcrumbsMore/BreadcrumbsMore.d.ts +1 -1
  16. package/__internal__/src/components/Breadcrumbs/helpers.d.ts +66 -56
  17. package/__internal__/src/components/Breadcrumbs/types.d.ts +7 -7
  18. package/__internal__/src/components/Breadcrumbs/types.js.map +1 -1
  19. package/__internal__/src/components/Card/Card.d.ts +3 -2
  20. package/__internal__/src/components/Card/Card.js.map +1 -1
  21. package/__internal__/src/components/CheckboxGroup/helper.d.ts +66 -56
  22. package/__internal__/src/components/CheckboxGroup/types.d.ts +1 -1
  23. package/__internal__/src/components/CheckboxGroup/types.js.map +1 -1
  24. package/__internal__/src/components/Chips/ChipsChoice/types.d.ts +1 -1
  25. package/__internal__/src/components/Chips/ChipsChoice/types.js.map +1 -1
  26. package/__internal__/src/components/Chips/types.d.ts +1 -1
  27. package/__internal__/src/components/Chips/types.js.map +1 -1
  28. package/__internal__/src/components/ChoiceGroup/helper.d.ts +66 -56
  29. package/__internal__/src/components/ChoiceGroup/types.d.ts +1 -1
  30. package/__internal__/src/components/ChoiceGroup/types.js.map +1 -1
  31. package/__internal__/src/components/Collapse/types.d.ts +1 -1
  32. package/__internal__/src/components/Collapse/types.js.map +1 -1
  33. package/__internal__/src/components/CollapseGroup/helpers.d.ts +2 -2
  34. package/__internal__/src/components/CollapseGroup/helpers.js.map +1 -1
  35. package/__internal__/src/components/Combobox/helpers.d.ts +4 -4
  36. package/__internal__/src/components/Combobox/helpers.js.map +1 -1
  37. package/__internal__/src/components/ComboboxDeprecated/helpers.d.ts +4 -4
  38. package/__internal__/src/components/ComboboxDeprecated/helpers.js.map +1 -1
  39. package/__internal__/src/components/ContextMenu/ContextMenuLevelWrapper/ContextMenuLevelWrapper.d.ts +1 -1
  40. package/__internal__/src/components/ContextMenu/ContextMenuWrapper/ContextMenuWrapper.d.ts +1 -1
  41. package/__internal__/src/components/ContextMenu/helpers.d.ts +2 -2
  42. package/__internal__/src/components/ContextMenu/types.d.ts +4 -4
  43. package/__internal__/src/components/ContextMenu/types.js.map +1 -1
  44. package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.d.ts +1 -1
  45. package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.js.map +1 -1
  46. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.d.ts +1 -1
  47. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.d.ts +1 -1
  48. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.d.ts +1 -1
  49. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTimeRange/DatePickerFieldTypeDateTimeRange.d.ts +1 -1
  50. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.d.ts +1 -1
  51. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonthRange/DatePickerFieldTypeMonthRange.d.ts +1 -1
  52. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.d.ts +1 -1
  53. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.d.ts +1 -1
  54. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange.d.ts +1 -1
  55. package/__internal__/src/components/DatePicker/types.d.ts +2 -2
  56. package/__internal__/src/components/DatePicker/types.js.map +1 -1
  57. package/__internal__/src/components/DateTime/DateTimeCell/DateTimeCell.d.ts +1 -1
  58. package/__internal__/src/components/DateTime/DateTimeItem/DateTimeItem.d.ts +1 -1
  59. package/__internal__/src/components/DateTime/helpers/types.d.ts +2 -2
  60. package/__internal__/src/components/DateTime/helpers/types.js.map +1 -1
  61. package/__internal__/src/components/EventInterceptor/EventInterceptor.d.ts +1 -1
  62. package/__internal__/src/components/FieldComponents/FieldArrayValueInlineControl/types.d.ts +1 -1
  63. package/__internal__/src/components/FieldComponents/FieldArrayValueInlineControl/types.js.map +1 -1
  64. package/__internal__/src/components/FieldComponents/FieldButton/FieldButton.d.ts +1 -1
  65. package/__internal__/src/components/FieldComponents/FieldClearButton/FieldClearButton.d.ts +1 -1
  66. package/__internal__/src/components/FieldComponents/FieldControlLayout/FieldControlLayout.d.ts +1 -1
  67. package/__internal__/src/components/FieldComponents/FieldControlLayout/helpers.d.ts +1 -1
  68. package/__internal__/src/components/FieldComponents/FieldControlLayout/helpers.js.map +1 -1
  69. package/__internal__/src/components/FieldComponents/FieldControlLayout/types.d.ts +2 -2
  70. package/__internal__/src/components/FieldComponents/FieldControlLayout/types.js.map +1 -1
  71. package/__internal__/src/components/FieldComponents/FieldCounter/FieldCounter.d.ts +1 -1
  72. package/__internal__/src/components/FieldComponents/FieldInput/FieldInput.d.ts +1 -1
  73. package/__internal__/src/components/FieldComponents/FieldToggleVisiblePasswordButton/FieldToggleVisiblePasswordButton.d.ts +1 -1
  74. package/__internal__/src/components/FieldComponents/renderSide.d.ts +1 -1
  75. package/__internal__/src/components/Grid/helpers.d.ts +1 -1
  76. package/__internal__/src/components/ListCanary/ListAddItem/ListAddItem.d.ts +1 -1
  77. package/__internal__/src/components/ListCanary/ListBox/ListBox.d.ts +1 -1
  78. package/__internal__/src/components/ListCanary/ListDivider/ListDivider.d.ts +1 -1
  79. package/__internal__/src/components/ListCanary/ListGroupLabel/ListGroupLabel.d.ts +1 -1
  80. package/__internal__/src/components/ListCanary/ListLoader/ListLoader.d.ts +1 -1
  81. package/__internal__/src/components/ListCanary/types.d.ts +3 -3
  82. package/__internal__/src/components/ListCanary/types.js.map +1 -1
  83. package/__internal__/src/components/Modal/Modal.js +1 -1
  84. package/__internal__/src/components/Modal/Modal.js.map +1 -1
  85. package/__internal__/src/components/Pagination/PaginationArrow/PaginationArrow.d.ts +1 -1
  86. package/__internal__/src/components/Pagination/types.d.ts +3 -3
  87. package/__internal__/src/components/Pagination/types.js.map +1 -1
  88. package/__internal__/src/components/PaginationDeprecated/PaginationDeprecated.d.ts +1 -1
  89. package/__internal__/src/components/PaginationDeprecated/PaginationDeprecated.js.map +1 -1
  90. package/__internal__/src/components/Picture/Picture.d.ts +1 -1
  91. package/__internal__/src/components/Popover/Popover.d.ts +1 -1
  92. package/__internal__/src/components/Popover/Popover.js +1 -1
  93. package/__internal__/src/components/Popover/Popover.js.map +1 -1
  94. package/__internal__/src/components/PortalWithTheme/PortalWithTheme.d.ts +1 -1
  95. package/__internal__/src/components/PortalWithTheme/PortalWithTheme.js +1 -1
  96. package/__internal__/src/components/PortalWithTheme/PortalWithTheme.js.map +1 -1
  97. package/__internal__/src/components/PortalWithTheme/PortalWithThemeConsumer/PortalWithThemeConsumer.d.ts +10 -0
  98. package/__internal__/src/components/PortalWithTheme/PortalWithThemeConsumer/PortalWithThemeConsumer.js +2 -0
  99. package/__internal__/src/components/PortalWithTheme/PortalWithThemeConsumer/PortalWithThemeConsumer.js.map +1 -0
  100. package/__internal__/src/components/PortalWithTheme/PortalWithThemeConsumer/index.d.ts +1 -0
  101. package/__internal__/src/components/PortalWithTheme/PortalWithThemeConsumer/index.js +2 -0
  102. package/__internal__/src/components/PortalWithTheme/PortalWithThemeConsumer/index.js.map +1 -0
  103. package/__internal__/src/components/PortalWithTheme/index.d.ts +1 -0
  104. package/__internal__/src/components/PortalWithTheme/index.js +1 -1
  105. package/__internal__/src/components/PortalWithTheme/index.js.map +1 -1
  106. package/__internal__/src/components/ProgressLine/helpers.d.ts +66 -56
  107. package/__internal__/src/components/ProgressLine/types.d.ts +1 -1
  108. package/__internal__/src/components/ProgressLine/types.js.map +1 -1
  109. package/__internal__/src/components/ProgressStepBar/ProgressStepBarLine/ProgressStepBarLine.d.ts +1 -1
  110. package/__internal__/src/components/ProgressStepBar/helpers.d.ts +3 -3
  111. package/__internal__/src/components/ProgressStepBar/helpers.js.map +1 -1
  112. package/__internal__/src/components/RadioGroup/helper.d.ts +66 -56
  113. package/__internal__/src/components/RadioGroup/types.d.ts +1 -1
  114. package/__internal__/src/components/RadioGroup/types.js.map +1 -1
  115. package/__internal__/src/components/Select/helpers.d.ts +4 -4
  116. package/__internal__/src/components/Select/helpers.js.map +1 -1
  117. package/__internal__/src/components/SelectCanary/SelectControlLayout/SelectControlLayout.d.ts +1 -1
  118. package/__internal__/src/components/SelectCanary/SelectCreateButton/SelectCreateButton.d.ts +1 -1
  119. package/__internal__/src/components/SelectCanary/SelectCreateButton/SelectCreateButton.js.map +1 -1
  120. package/__internal__/src/components/SelectCanary/SelectDropdown/SelectDropdown.d.ts +1 -1
  121. package/__internal__/src/components/SelectCanary/SelectDropdown/SelectDropdown.js.map +1 -1
  122. package/__internal__/src/components/SelectCanary/SelectInput/SelectInput.d.ts +1 -1
  123. package/__internal__/src/components/SelectCanary/SelectLoader/SelectLoader.d.ts +1 -1
  124. package/__internal__/src/components/SelectCanary/SelectMultipleValue/SelectMultipleValue.d.ts +2 -2
  125. package/__internal__/src/components/SelectCanary/SelectMultipleValue/SelectMultipleValue.js.map +1 -1
  126. package/__internal__/src/components/SelectCanary/SelectRenderItem/SelectRenderItem.d.ts +1 -1
  127. package/__internal__/src/components/SelectCanary/SelectRenderItem/SelectRenderItem.js.map +1 -1
  128. package/__internal__/src/components/SelectCanary/helpers.d.ts +1 -1
  129. package/__internal__/src/components/SelectCanary/types.d.ts +1 -1
  130. package/__internal__/src/components/SelectCanary/types.js.map +1 -1
  131. package/__internal__/src/components/SelectComponents/SelectContainer/SelectContainer.d.ts +1 -1
  132. package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.d.ts +2 -2
  133. package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.js.map +1 -1
  134. package/__internal__/src/components/SelectComponents/SelectLoader/SelectLoader.d.ts +1 -1
  135. package/__internal__/src/components/SelectComponentsDeprecated/SelectContainer/SelectContainer.d.ts +1 -1
  136. package/__internal__/src/components/SelectComponentsDeprecated/SelectDropdown/SelectDropdown.d.ts +2 -2
  137. package/__internal__/src/components/SelectComponentsDeprecated/SelectDropdown/SelectDropdown.js.map +1 -1
  138. package/__internal__/src/components/SelectComponentsDeprecated/SelectItemAll/SelectSelectAll.d.ts +1 -1
  139. package/__internal__/src/components/SelectComponentsDeprecated/SelectLoader/SelectLoader.d.ts +1 -1
  140. package/__internal__/src/components/SelectDeprecated/helpers.d.ts +4 -4
  141. package/__internal__/src/components/SelectDeprecated/helpers.js.map +1 -1
  142. package/__internal__/src/components/Sidebar/Sidebar.js +1 -1
  143. package/__internal__/src/components/Sidebar/Sidebar.js.map +1 -1
  144. package/__internal__/src/components/Skeleton/SkeletonBrick/SkeletonBrick.d.ts +1 -1
  145. package/__internal__/src/components/Skeleton/SkeletonCircle/SkeletonCircle.d.ts +1 -1
  146. package/__internal__/src/components/Slider/SliderInput/SliderInput.d.ts +1 -1
  147. package/__internal__/src/components/Slider/SliderLine/SliderLine.d.ts +1 -1
  148. package/__internal__/src/components/Slider/SliderPoint/SliderPoint.d.ts +1 -1
  149. package/__internal__/src/components/Slider/helper.d.ts +1 -1
  150. package/__internal__/src/components/Slider/helper.js.map +1 -1
  151. package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.d.ts +1 -1
  152. package/__internal__/src/components/SnackBar/helper.d.ts +67 -57
  153. package/__internal__/src/components/SnackBar/types.d.ts +2 -2
  154. package/__internal__/src/components/SnackBar/types.js.map +1 -1
  155. package/__internal__/src/components/Steps/helper.d.ts +66 -56
  156. package/__internal__/src/components/Steps/types.d.ts +1 -1
  157. package/__internal__/src/components/Steps/types.js.map +1 -1
  158. package/__internal__/src/components/StepsCanary/helper.d.ts +66 -56
  159. package/__internal__/src/components/StepsCanary/types.d.ts +1 -1
  160. package/__internal__/src/components/StepsCanary/types.js.map +1 -1
  161. package/__internal__/src/components/Switch/Switch.d.ts +2 -1
  162. package/__internal__/src/components/Switch/Switch.js +1 -1
  163. package/__internal__/src/components/Switch/Switch.js.map +1 -1
  164. package/__internal__/src/components/Switch/types.d.ts +1 -0
  165. package/__internal__/src/components/Switch/types.js.map +1 -1
  166. package/__internal__/src/components/SwitchGroup/helpers.d.ts +66 -56
  167. package/__internal__/src/components/SwitchGroup/types.d.ts +1 -1
  168. package/__internal__/src/components/SwitchGroup/types.js.map +1 -1
  169. package/__internal__/src/components/Table/Cell/TableCell.d.ts +1 -1
  170. package/__internal__/src/components/Table/Cell/TableCell.js.map +1 -1
  171. package/__internal__/src/components/Table/Header/TableHeader.d.ts +1 -1
  172. package/__internal__/src/components/Table/Header/TableHeader.js.map +1 -1
  173. package/__internal__/src/components/Table/Resizer/TableResizer.d.ts +1 -1
  174. package/__internal__/src/components/Table/Resizer/TableResizer.js.map +1 -1
  175. package/__internal__/src/components/Table/Table.d.ts +1 -1
  176. package/__internal__/src/components/Table/Table.js.map +1 -1
  177. package/__internal__/src/components/Table/__mock__/data.mock.d.ts +1 -1
  178. package/__internal__/src/components/Tabs/Tabs.js.map +1 -1
  179. package/__internal__/src/components/Tabs/TabsFitModeDropdownWrapper/TabsFitModeDropdownWrapper.d.ts +1 -1
  180. package/__internal__/src/components/Tabs/TabsFitModeDropdownWrapper/TabsFitModeDropdownWrapper.js.map +1 -1
  181. package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.d.ts +1 -1
  182. package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.js.map +1 -1
  183. package/__internal__/src/components/Tabs/TabsListWrapper/TabsListWrapper.d.ts +1 -1
  184. package/__internal__/src/components/Tabs/helpers.d.ts +199 -169
  185. package/__internal__/src/components/Tabs/types.d.ts +4 -4
  186. package/__internal__/src/components/Tabs/types.js.map +1 -1
  187. package/__internal__/src/components/Tag/Tag.d.ts +1 -1
  188. package/__internal__/src/components/Tag/Tag.js.map +1 -1
  189. package/__internal__/src/components/TagBase/TagBase.d.ts +1 -1
  190. package/__internal__/src/components/TextField/TextField.d.ts +1 -1
  191. package/__internal__/src/components/TextField/types.d.ts +1 -1
  192. package/__internal__/src/components/TextField/types.js.map +1 -1
  193. package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArray/TextFieldTypeTextArray.js +1 -1
  194. package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArray/TextFieldTypeTextArray.js.map +1 -1
  195. package/__internal__/src/components/TextFieldCanary/types.d.ts +2 -2
  196. package/__internal__/src/components/TextFieldCanary/types.js.map +1 -1
  197. package/__internal__/src/components/ThemeToggler/helpers.d.ts +66 -56
  198. package/__internal__/src/components/ThemeToggler/types.d.ts +1 -1
  199. package/__internal__/src/components/ThemeToggler/types.js.map +1 -1
  200. package/__internal__/src/components/Timer/Timer.d.ts +1 -1
  201. package/__internal__/src/components/Tooltip/Tooltip.d.ts +1 -1
  202. package/__internal__/src/components/TooltipDeprecated/TooltipDeprecated.d.ts +1 -1
  203. package/__internal__/src/components/UserSelect/helpers.d.ts +4 -4
  204. package/__internal__/src/components/UserSelect/helpers.js.map +1 -1
  205. package/__internal__/src/components/UserSelectDeprecated/helpers.d.ts +4 -4
  206. package/__internal__/src/components/UserSelectDeprecated/helpers.js.map +1 -1
  207. package/__internal__/src/docs/start/start.stand.d.ts +1 -1
  208. package/__internal__/src/fileIcons/FileIconAvi/FileIconAvi_size_m.d.ts +1 -1
  209. package/__internal__/src/fileIcons/FileIconAvi/FileIconAvi_size_s.d.ts +1 -1
  210. package/__internal__/src/fileIcons/FileIconBmp/FileIconBmp_size_m.d.ts +1 -1
  211. package/__internal__/src/fileIcons/FileIconBmp/FileIconBmp_size_s.d.ts +1 -1
  212. package/__internal__/src/fileIcons/FileIconCsv/FileIconCsv_size_m.d.ts +1 -1
  213. package/__internal__/src/fileIcons/FileIconCsv/FileIconCsv_size_s.d.ts +1 -1
  214. package/__internal__/src/fileIcons/FileIconDoc/FileIconDoc_size_m.d.ts +1 -1
  215. package/__internal__/src/fileIcons/FileIconDoc/FileIconDoc_size_s.d.ts +1 -1
  216. package/__internal__/src/fileIcons/FileIconExe/FileIconExe_size_m.d.ts +1 -1
  217. package/__internal__/src/fileIcons/FileIconExe/FileIconExe_size_s.d.ts +1 -1
  218. package/__internal__/src/fileIcons/FileIconGif/FileIconGif_size_m.d.ts +1 -1
  219. package/__internal__/src/fileIcons/FileIconGif/FileIconGif_size_s.d.ts +1 -1
  220. package/__internal__/src/fileIcons/FileIconJpg/FileIconJpg_size_m.d.ts +1 -1
  221. package/__internal__/src/fileIcons/FileIconJpg/FileIconJpg_size_s.d.ts +1 -1
  222. package/__internal__/src/fileIcons/FileIconJson/FileIconJson_size_m.d.ts +1 -1
  223. package/__internal__/src/fileIcons/FileIconJson/FileIconJson_size_s.d.ts +1 -1
  224. package/__internal__/src/fileIcons/FileIconLoading/FileIconLoading_size_m.d.ts +1 -1
  225. package/__internal__/src/fileIcons/FileIconLoading/FileIconLoading_size_s.d.ts +1 -1
  226. package/__internal__/src/fileIcons/FileIconMov/FileIconMov_size_m.d.ts +1 -1
  227. package/__internal__/src/fileIcons/FileIconMov/FileIconMov_size_s.d.ts +1 -1
  228. package/__internal__/src/fileIcons/FileIconMp3/FileIconMp3_size_m.d.ts +1 -1
  229. package/__internal__/src/fileIcons/FileIconMp3/FileIconMp3_size_s.d.ts +1 -1
  230. package/__internal__/src/fileIcons/FileIconMp4/FileIconMp4_size_m.d.ts +1 -1
  231. package/__internal__/src/fileIcons/FileIconMp4/FileIconMp4_size_s.d.ts +1 -1
  232. package/__internal__/src/fileIcons/FileIconMsg/FileIconMsg_size_m.d.ts +1 -1
  233. package/__internal__/src/fileIcons/FileIconMsg/FileIconMsg_size_s.d.ts +1 -1
  234. package/__internal__/src/fileIcons/FileIconPdf/FileIconPdf_size_m.d.ts +1 -1
  235. package/__internal__/src/fileIcons/FileIconPdf/FileIconPdf_size_s.d.ts +1 -1
  236. package/__internal__/src/fileIcons/FileIconPng/FileIconPng_size_m.d.ts +1 -1
  237. package/__internal__/src/fileIcons/FileIconPng/FileIconPng_size_s.d.ts +1 -1
  238. package/__internal__/src/fileIcons/FileIconPpt/FileIconPpt_size_m.d.ts +1 -1
  239. package/__internal__/src/fileIcons/FileIconPpt/FileIconPpt_size_s.d.ts +1 -1
  240. package/__internal__/src/fileIcons/FileIconRar/FileIconRar_size_m.d.ts +1 -1
  241. package/__internal__/src/fileIcons/FileIconRar/FileIconRar_size_s.d.ts +1 -1
  242. package/__internal__/src/fileIcons/FileIconRtf/FileIconRtf_size_m.d.ts +1 -1
  243. package/__internal__/src/fileIcons/FileIconRtf/FileIconRtf_size_s.d.ts +1 -1
  244. package/__internal__/src/fileIcons/FileIconSvg/FileIconSvg_size_m.d.ts +1 -1
  245. package/__internal__/src/fileIcons/FileIconSvg/FileIconSvg_size_s.d.ts +1 -1
  246. package/__internal__/src/fileIcons/FileIconTiff/FileIconTiff_size_m.d.ts +1 -1
  247. package/__internal__/src/fileIcons/FileIconTiff/FileIconTiff_size_s.d.ts +1 -1
  248. package/__internal__/src/fileIcons/FileIconTxt/FileIconTxt_size_m.d.ts +1 -1
  249. package/__internal__/src/fileIcons/FileIconTxt/FileIconTxt_size_s.d.ts +1 -1
  250. package/__internal__/src/fileIcons/FileIconUndefined/FileIconUndefined_size_m.d.ts +1 -1
  251. package/__internal__/src/fileIcons/FileIconUndefined/FileIconUndefined_size_s.d.ts +1 -1
  252. package/__internal__/src/fileIcons/FileIconVsd/FileIconVsd_size_m.d.ts +1 -1
  253. package/__internal__/src/fileIcons/FileIconVsd/FileIconVsd_size_s.d.ts +1 -1
  254. package/__internal__/src/fileIcons/FileIconWav/FileIconWav_size_m.d.ts +1 -1
  255. package/__internal__/src/fileIcons/FileIconWav/FileIconWav_size_s.d.ts +1 -1
  256. package/__internal__/src/fileIcons/FileIconXls/FileIconXls_size_m.d.ts +1 -1
  257. package/__internal__/src/fileIcons/FileIconXls/FileIconXls_size_s.d.ts +1 -1
  258. package/__internal__/src/fileIcons/FileIconZip/FileIconZip_size_m.d.ts +1 -1
  259. package/__internal__/src/fileIcons/FileIconZip/FileIconZip_size_s.d.ts +1 -1
  260. package/__internal__/src/hocs/withTooltip/withTooltip.d.ts +1 -1
  261. package/__internal__/src/hocs/withTooltip/withTooltip.js.map +1 -1
  262. package/__internal__/src/hooks/useForkRef/useForkRef.d.ts +1 -1
  263. package/__internal__/src/responsesImages/ResponsesImage403/ResponsesImage403Svg.d.ts +1 -1
  264. package/__internal__/src/responsesImages/ResponsesImage404/ResponsesImage404Svg.d.ts +1 -1
  265. package/__internal__/src/responsesImages/ResponsesImage500/ResponsesImage500Svg.d.ts +1 -1
  266. package/__internal__/src/responsesImages/ResponsesImage503/ResponsesImage503Svg.d.ts +1 -1
  267. package/__internal__/src/responsesImages/ResponsesImageConnectionError/ResponsesImageConnectionErrorSvg.d.ts +1 -1
  268. package/__internal__/src/responsesImages/ResponsesImageDeleted/ResponsesImageDeletedSvg.d.ts +1 -1
  269. package/__internal__/src/responsesImages/ResponsesImageEmptyBox/ResponsesImageEmptyBoxSvg.d.ts +1 -1
  270. package/__internal__/src/responsesImages/ResponsesImageEmptyPockets/ResponsesImageEmptyPocketsSvg.d.ts +1 -1
  271. package/__internal__/src/responsesImages/ResponsesImageExit/ResponsesImageExitSvg.d.ts +1 -1
  272. package/__internal__/src/responsesImages/ResponsesImageNothingFound/ResponsesImageNothingFoundSvg.d.ts +1 -1
  273. package/__internal__/src/responsesImages/ResponsesImageSuccess/ResponsesImageSuccessSvg.d.ts +1 -1
  274. package/__internal__/src/stand/standConfig.d.ts +1 -1
  275. package/__internal__/src/uiKit/components/Image/Image.d.ts +1 -1
  276. package/__internal__/src/utils/state/withCtx/withCtx.js.map +1 -1
  277. package/__internal__/src/utils/types/PropsWithAsAttributes.d.ts +2 -2
  278. package/__internal__/src/utils/types/PropsWithAsAttributes.js.map +1 -1
  279. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeader.js","names":["React","cn","Button","TableCell","getOptionsForFilters","TableFilterTooltip","cnTableHeader","levelTypes","TableHeader","isStickyHeader","headersWithMetaData","headerRowsHeights","headerRowsRefs","getStickyLeftOffset","stickyColumnsGrid","showVerticalCellShadow","headerVerticalAlign","getSortIcon","handleSortClick","handleFilterTogglerClick","handleCellClick","handleTooltipSave","filters","visibleFilter","selectedFilters","showHorizontalCellShadow","borderBetweenColumns","tableHeaderHeight","reduce","a","b","tableHeaderStyle","getLevelType","column","position","colSpan","smallTextSize","isColumnResized","headers","build","header","columns","forEach","col","find","head","title","push","some","isResized","getFilterPopover","accessor","curFilter","field","FilterComponent","component","name","filterComponentProps","props","onToggle","filterId","id","filterable","selected","type","handleFilterSave","filterValue","value","control","withVerticalBorder","map","columnIdx","style","gridColumnEnd","rowSpan","gridRowEnd","top","slice","level","ref","current","left","gridIndex","topHeaderGridIndex","e","isFirstColumn","isFirst","isFirstRow","isLastInColumn","isSortingActive","isFilterActive","verticalAlign","sortable","show"],"sources":["../../../../../../src/components/Table/Header/TableHeader.tsx"],"sourcesContent":["import './TableHeader.css';\n\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { TableCell } from '../Cell/TableCell';\nimport {\n FieldSelectedValues,\n Filters,\n getOptionsForFilters,\n SelectedFilters,\n} from '../filtering';\nimport { TableFilterTooltip } from '../FilterTooltip/TableFilterTooltip';\nimport { Header } from '../helpers';\nimport {\n ColumnMetaData,\n HeaderVerticalAlign,\n onCellClick,\n TableColumn,\n TableRow,\n} from '../Table';\n\nconst cnTableHeader = cn('TableHeader');\n\ntype TableCSSCustomProperty = {\n '--table-header-height': string;\n};\n\nexport const levelTypes = ['high', 'low', 'default'] as const;\nexport type LevelType = typeof levelTypes[number];\n\ntype Props<T extends TableRow> = {\n isStickyHeader: boolean;\n headersWithMetaData: Array<Header<T> & ColumnMetaData>;\n headerRowsHeights: Array<number>;\n headerRowsRefs: React.MutableRefObject<Record<number, HTMLDivElement | null>>;\n getStickyLeftOffset: (\n columnIndex: number,\n topHeaderGridIndex: number,\n ) => number | undefined;\n stickyColumnsGrid: number;\n showVerticalCellShadow: boolean;\n headerVerticalAlign: HeaderVerticalAlign;\n getSortIcon: (column: Header<T>) => React.FC;\n handleSortClick: (column: TableColumn<T>) => void;\n handleFilterTogglerClick: (id: string) => () => void;\n handleCellClick: onCellClick;\n handleTooltipSave: (\n field: string,\n tooltipSelectedFilters: FieldSelectedValues,\n value?: unknown,\n ) => void;\n filters: Filters<T> | undefined;\n visibleFilter: string | null;\n selectedFilters: SelectedFilters;\n showHorizontalCellShadow: boolean;\n borderBetweenColumns: boolean;\n};\n\nexport const TableHeader = <T extends TableRow>({\n isStickyHeader,\n headersWithMetaData,\n headerRowsHeights,\n headerRowsRefs,\n getStickyLeftOffset,\n stickyColumnsGrid,\n showVerticalCellShadow,\n headerVerticalAlign,\n getSortIcon,\n handleSortClick,\n handleFilterTogglerClick,\n handleCellClick,\n handleTooltipSave,\n filters,\n visibleFilter,\n selectedFilters,\n showHorizontalCellShadow,\n borderBetweenColumns,\n}: Props<T>): React.ReactElement => {\n const tableHeaderHeight = headerRowsHeights.reduce(\n (a: number, b: number) => a + b,\n 0,\n );\n const tableHeaderStyle: React.CSSProperties & TableCSSCustomProperty = {\n '--table-header-height': `${tableHeaderHeight}px`,\n };\n const getLevelType = (column: Header<T> & ColumnMetaData): LevelType => {\n if (Number(column.position!.colSpan) >= 1) return 'high';\n if (column.position?.smallTextSize) return 'low';\n return 'default';\n };\n const isColumnResized = (column: Header<T> & ColumnMetaData): boolean => {\n const headers: Array<Header<T> & ColumnMetaData> = [];\n const build = (header: Header<T> & ColumnMetaData) => {\n if (!header.columns) {\n headers.push(header);\n } else {\n header.columns.forEach((col) =>\n build(\n headersWithMetaData.find(\n (head) => head.title === col.title,\n ) as Header<T> & ColumnMetaData,\n ),\n );\n }\n };\n build(column);\n return headers.some((header) => header.isResized);\n };\n\n const getFilterPopover = (\n column: Header<T> & ColumnMetaData,\n ): React.ReactNode => {\n if (!filters || !column.accessor) {\n return null;\n }\n const curFilter = filters.find(({ field }) => field === column.accessor);\n const FilterComponent = curFilter?.component?.name;\n const filterComponentProps = curFilter?.component?.props ?? {};\n const onToggle = handleFilterTogglerClick(column.accessor);\n const filterId = curFilter?.id;\n const handleFilterSave = (filterValue?: unknown) => {\n if (filterId) {\n handleTooltipSave(column.accessor!, [filterId], filterValue);\n }\n onToggle();\n };\n\n return column.filterable ? (\n <TableFilterTooltip\n field={column.accessor}\n isOpened={visibleFilter === column.accessor}\n options={getOptionsForFilters(filters, column.accessor)}\n values={selectedFilters[column.accessor].selected || []}\n onChange={handleTooltipSave}\n onToggle={handleFilterTogglerClick(column.accessor)}\n className={cnTableHeader('Icon', { type: 'filter' })}\n >\n {FilterComponent && (\n <FilterComponent\n {...filterComponentProps}\n onConfirm={handleFilterSave}\n filterValue={selectedFilters[column.accessor]?.value}\n onCancel={handleFilterTogglerClick(column.accessor)}\n />\n )}\n </TableFilterTooltip>\n ) : null;\n };\n\n const control = (column: Header<T> & ColumnMetaData): React.ReactNode => {\n if (column.control) {\n return (\n <div className={cnTableHeader('Control')}>\n {column.control({ column })}\n </div>\n );\n }\n\n return null;\n };\n\n return (\n <>\n <div\n className={cnTableHeader('Row', {\n withVerticalBorder: borderBetweenColumns,\n })}\n >\n {headersWithMetaData.map(\n (column: Header<T> & ColumnMetaData, columnIdx: number) => {\n const style: React.CSSProperties = {};\n if (column.position!.colSpan) {\n style.gridColumnEnd = `span ${column.position!.colSpan}`;\n }\n if (column.position!.rowSpan) {\n style.gridRowEnd = `span ${column.position!.rowSpan}`;\n }\n if (isStickyHeader) {\n style.top = headerRowsHeights\n .slice(0, column.position!.level)\n .reduce((a: number, b: number) => a + b, 0);\n }\n return (\n <TableCell\n type=\"header\"\n key={columnIdx}\n ref={(ref: HTMLDivElement | null): void => {\n /* eslint-disable-next-line no-param-reassign */\n headerRowsRefs.current[columnIdx] = ref;\n }}\n style={{\n ...style,\n left: getStickyLeftOffset(\n column.position!.gridIndex,\n column.position!.topHeaderGridIndex,\n ),\n }}\n isSticky={isStickyHeader}\n isResized={isColumnResized(column)}\n column={column}\n verticalAlign={headerVerticalAlign}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n ref: { current: headerRowsRefs.current[columnIdx] },\n })\n }\n onClick={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n ref: { current: headerRowsRefs.current[columnIdx] },\n })\n }\n className={cnTableHeader('Cell', {\n isFirstColumn: column.position?.isFirst,\n isFirstRow: column.position!.level === 0,\n isLastInColumn:\n column.position?.topHeaderGridIndex !==\n headersWithMetaData[columnIdx + 1]?.position\n ?.topHeaderGridIndex,\n level: getLevelType(column),\n })}\n showVerticalShadow={\n showVerticalCellShadow &&\n column.position!.gridIndex! +\n (column?.position!.colSpan || 1) ===\n stickyColumnsGrid\n }\n >\n {column.title}\n\n <div\n className={cnTableHeader('Buttons', {\n isSortingActive: column.isSortingActive,\n isFilterActive: column.isFilterActive,\n verticalAlign: headerVerticalAlign,\n })}\n >\n {column.sortable && (\n <Button\n type=\"button\"\n size=\"xs\"\n iconSize=\"s\"\n view=\"clear\"\n onlyIcon\n onClick={(): void => handleSortClick(column)}\n iconLeft={getSortIcon(column)}\n className={cnTableHeader('Icon', { type: 'sort' })}\n />\n )}\n\n {getFilterPopover(column)}\n\n {control(column)}\n </div>\n </TableCell>\n );\n },\n )}\n </div>\n {/*\n Рендерим тень заголовка отдельно чтобы избежать возможных наложений\n теней для ячеек заголовка и ячеек прикрепленных слева.\n */}\n <div className={cnTableHeader('ShadowWrapper')} style={tableHeaderStyle}>\n <div\n className={cnTableHeader('Shadow', {\n show: showHorizontalCellShadow && isStickyHeader,\n })}\n />\n </div>\n </>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableHeader.js","names":["React","cn","Button","TableCell","getOptionsForFilters","TableFilterTooltip","cnTableHeader","levelTypes","TableHeader","isStickyHeader","headersWithMetaData","headerRowsHeights","headerRowsRefs","getStickyLeftOffset","stickyColumnsGrid","showVerticalCellShadow","headerVerticalAlign","getSortIcon","handleSortClick","handleFilterTogglerClick","handleCellClick","handleTooltipSave","filters","visibleFilter","selectedFilters","showHorizontalCellShadow","borderBetweenColumns","tableHeaderHeight","reduce","a","b","tableHeaderStyle","getLevelType","column","position","colSpan","smallTextSize","isColumnResized","headers","build","header","columns","forEach","col","find","head","title","push","some","isResized","getFilterPopover","accessor","curFilter","field","FilterComponent","component","name","filterComponentProps","props","onToggle","filterId","id","filterable","selected","type","handleFilterSave","filterValue","value","control","withVerticalBorder","map","columnIdx","style","gridColumnEnd","rowSpan","gridRowEnd","top","slice","level","ref","current","left","gridIndex","topHeaderGridIndex","e","isFirstColumn","isFirst","isFirstRow","isLastInColumn","isSortingActive","isFilterActive","verticalAlign","sortable","show"],"sources":["../../../../../../src/components/Table/Header/TableHeader.tsx"],"sourcesContent":["import './TableHeader.css';\n\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { TableCell } from '../Cell/TableCell';\nimport {\n FieldSelectedValues,\n Filters,\n getOptionsForFilters,\n SelectedFilters,\n} from '../filtering';\nimport { TableFilterTooltip } from '../FilterTooltip/TableFilterTooltip';\nimport { Header } from '../helpers';\nimport {\n ColumnMetaData,\n HeaderVerticalAlign,\n onCellClick,\n TableColumn,\n TableRow,\n} from '../Table';\n\nconst cnTableHeader = cn('TableHeader');\n\ntype TableCSSCustomProperty = {\n '--table-header-height': string;\n};\n\nexport const levelTypes = ['high', 'low', 'default'] as const;\nexport type LevelType = typeof levelTypes[number];\n\ntype Props<T extends TableRow> = {\n isStickyHeader: boolean;\n headersWithMetaData: Array<Header<T> & ColumnMetaData>;\n headerRowsHeights: Array<number>;\n headerRowsRefs: React.MutableRefObject<Record<number, HTMLDivElement | null>>;\n getStickyLeftOffset: (\n columnIndex: number,\n topHeaderGridIndex: number,\n ) => number | undefined;\n stickyColumnsGrid: number;\n showVerticalCellShadow: boolean;\n headerVerticalAlign: HeaderVerticalAlign;\n getSortIcon: (column: Header<T>) => React.FC;\n handleSortClick: (column: TableColumn<T>) => void;\n handleFilterTogglerClick: (id: string) => () => void;\n handleCellClick: onCellClick;\n handleTooltipSave: (\n field: string,\n tooltipSelectedFilters: FieldSelectedValues,\n value?: unknown,\n ) => void;\n filters: Filters<T> | undefined;\n visibleFilter: string | null;\n selectedFilters: SelectedFilters;\n showHorizontalCellShadow: boolean;\n borderBetweenColumns: boolean;\n};\n\nexport const TableHeader = <T extends TableRow>({\n isStickyHeader,\n headersWithMetaData,\n headerRowsHeights,\n headerRowsRefs,\n getStickyLeftOffset,\n stickyColumnsGrid,\n showVerticalCellShadow,\n headerVerticalAlign,\n getSortIcon,\n handleSortClick,\n handleFilterTogglerClick,\n handleCellClick,\n handleTooltipSave,\n filters,\n visibleFilter,\n selectedFilters,\n showHorizontalCellShadow,\n borderBetweenColumns,\n}: Props<T>): React.ReactNode => {\n const tableHeaderHeight = headerRowsHeights.reduce(\n (a: number, b: number) => a + b,\n 0,\n );\n const tableHeaderStyle: React.CSSProperties & TableCSSCustomProperty = {\n '--table-header-height': `${tableHeaderHeight}px`,\n };\n const getLevelType = (column: Header<T> & ColumnMetaData): LevelType => {\n if (Number(column.position!.colSpan) >= 1) return 'high';\n if (column.position?.smallTextSize) return 'low';\n return 'default';\n };\n const isColumnResized = (column: Header<T> & ColumnMetaData): boolean => {\n const headers: Array<Header<T> & ColumnMetaData> = [];\n const build = (header: Header<T> & ColumnMetaData) => {\n if (!header.columns) {\n headers.push(header);\n } else {\n header.columns.forEach((col) =>\n build(\n headersWithMetaData.find(\n (head) => head.title === col.title,\n ) as Header<T> & ColumnMetaData,\n ),\n );\n }\n };\n build(column);\n return headers.some((header) => header.isResized);\n };\n\n const getFilterPopover = (\n column: Header<T> & ColumnMetaData,\n ): React.ReactNode => {\n if (!filters || !column.accessor) {\n return null;\n }\n const curFilter = filters.find(({ field }) => field === column.accessor);\n const FilterComponent = curFilter?.component?.name;\n const filterComponentProps = curFilter?.component?.props ?? {};\n const onToggle = handleFilterTogglerClick(column.accessor);\n const filterId = curFilter?.id;\n const handleFilterSave = (filterValue?: unknown) => {\n if (filterId) {\n handleTooltipSave(column.accessor!, [filterId], filterValue);\n }\n onToggle();\n };\n\n return column.filterable ? (\n <TableFilterTooltip\n field={column.accessor}\n isOpened={visibleFilter === column.accessor}\n options={getOptionsForFilters(filters, column.accessor)}\n values={selectedFilters[column.accessor].selected || []}\n onChange={handleTooltipSave}\n onToggle={handleFilterTogglerClick(column.accessor)}\n className={cnTableHeader('Icon', { type: 'filter' })}\n >\n {FilterComponent && (\n <FilterComponent\n {...filterComponentProps}\n onConfirm={handleFilterSave}\n filterValue={selectedFilters[column.accessor]?.value}\n onCancel={handleFilterTogglerClick(column.accessor)}\n />\n )}\n </TableFilterTooltip>\n ) : null;\n };\n\n const control = (column: Header<T> & ColumnMetaData): React.ReactNode => {\n if (column.control) {\n return (\n <div className={cnTableHeader('Control')}>\n {column.control({ column })}\n </div>\n );\n }\n\n return null;\n };\n\n return (\n <>\n <div\n className={cnTableHeader('Row', {\n withVerticalBorder: borderBetweenColumns,\n })}\n >\n {headersWithMetaData.map(\n (column: Header<T> & ColumnMetaData, columnIdx: number) => {\n const style: React.CSSProperties = {};\n if (column.position!.colSpan) {\n style.gridColumnEnd = `span ${column.position!.colSpan}`;\n }\n if (column.position!.rowSpan) {\n style.gridRowEnd = `span ${column.position!.rowSpan}`;\n }\n if (isStickyHeader) {\n style.top = headerRowsHeights\n .slice(0, column.position!.level)\n .reduce((a: number, b: number) => a + b, 0);\n }\n return (\n <TableCell\n type=\"header\"\n key={columnIdx}\n ref={(ref: HTMLDivElement | null): void => {\n /* eslint-disable-next-line no-param-reassign */\n headerRowsRefs.current[columnIdx] = ref;\n }}\n style={{\n ...style,\n left: getStickyLeftOffset(\n column.position!.gridIndex,\n column.position!.topHeaderGridIndex,\n ),\n }}\n isSticky={isStickyHeader}\n isResized={isColumnResized(column)}\n column={column}\n verticalAlign={headerVerticalAlign}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n ref: { current: headerRowsRefs.current[columnIdx] },\n })\n }\n onClick={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n ref: { current: headerRowsRefs.current[columnIdx] },\n })\n }\n className={cnTableHeader('Cell', {\n isFirstColumn: column.position?.isFirst,\n isFirstRow: column.position!.level === 0,\n isLastInColumn:\n column.position?.topHeaderGridIndex !==\n headersWithMetaData[columnIdx + 1]?.position\n ?.topHeaderGridIndex,\n level: getLevelType(column),\n })}\n showVerticalShadow={\n showVerticalCellShadow &&\n column.position!.gridIndex! +\n (column?.position!.colSpan || 1) ===\n stickyColumnsGrid\n }\n >\n {column.title}\n\n <div\n className={cnTableHeader('Buttons', {\n isSortingActive: column.isSortingActive,\n isFilterActive: column.isFilterActive,\n verticalAlign: headerVerticalAlign,\n })}\n >\n {column.sortable && (\n <Button\n type=\"button\"\n size=\"xs\"\n iconSize=\"s\"\n view=\"clear\"\n onlyIcon\n onClick={(): void => handleSortClick(column)}\n iconLeft={getSortIcon(column)}\n className={cnTableHeader('Icon', { type: 'sort' })}\n />\n )}\n\n {getFilterPopover(column)}\n\n {control(column)}\n </div>\n </TableCell>\n );\n },\n )}\n </div>\n {/*\n Рендерим тень заголовка отдельно чтобы избежать возможных наложений\n теней для ячеек заголовка и ячеек прикрепленных слева.\n */}\n <div className={cnTableHeader('ShadowWrapper')} style={tableHeaderStyle}>\n <div\n className={cnTableHeader('Shadow', {\n show: showHorizontalCellShadow && isStickyHeader,\n })}\n />\n </div>\n </>\n );\n};\n"],"mappings":"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"}
@@ -18,6 +18,6 @@ export declare class TableResizer extends React.Component<Props, {
18
18
  onMouseMove: (e: MouseEvent) => void;
19
19
  onMouseUp: () => void;
20
20
  removeListeners: () => void;
21
- render(): JSX.Element;
21
+ render(): React.ReactNode;
22
22
  }
23
23
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"TableResizer.js","names":["React","cn","cnTableResizer","TableResizer","isDragging","setState","document","addEventListener","onMouseMove","onMouseUp","e","movementX","props","onResize","removeListeners","removeEventListener","state","isVisible","height","top","onMouseDown","onDoubleClick","Component"],"sources":["../../../../../../src/components/Table/Resizer/TableResizer.tsx"],"sourcesContent":["import './TableResizer.css';\n\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\n\nconst cnTableResizer = cn('TableResizer');\n\ntype Props = {\n height: number;\n top: number;\n isVisible?: boolean;\n onResize: (delta: number) => void;\n onDoubleClick: () => void;\n};\n\n/* Сделано классом, чтобы функции событий на document имели доступ к актуальному состоянию/пропсам без пересоздания подписок */\nexport class TableResizer extends React.Component<\n Props,\n { isDragging: boolean }\n> {\n state = {\n isDragging: false,\n };\n\n componentWillUnmount(): void {\n this.removeListeners();\n }\n\n onMouseDown = (): void => {\n this.setState({ isDragging: true });\n\n document.addEventListener('mousemove', this.onMouseMove);\n document.addEventListener('mouseup', this.onMouseUp);\n };\n\n onMouseMove = (e: MouseEvent): void => {\n if (e.movementX) {\n this.props.onResize(e.movementX);\n }\n };\n\n onMouseUp = (): void => {\n this.setState({ isDragging: false });\n\n this.removeListeners();\n };\n\n removeListeners = (): void => {\n document.removeEventListener('mousemove', this.onMouseMove);\n document.removeEventListener('mouseup', this.onMouseUp);\n };\n\n render(): JSX.Element {\n return (\n <div\n className={cnTableResizer({\n isDragging: this.state.isDragging,\n isVisible: this.props.isVisible,\n })}\n aria-hidden\n style={{ height: this.props.height, top: this.props.top }}\n onMouseDown={this.onMouseDown}\n onDoubleClick={this.props.onDoubleClick}\n />\n );\n }\n}\n"],"mappings":"+/BAAA,2BAEA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,EAAT,0BAEA,GAAMC,eAAc,CAAGD,EAAE,CAAC,cAAD,CAAzB,CAWA,UAAaE,aAAb,wNAIU,CACNC,UAAU,GADJ,CAJV,0DAYgB,UAAY,CACxB,EAAKC,QAAL,CAAc,CAAED,UAAU,GAAZ,CAAd,CADwB,CAGxBE,QAAQ,CAACC,gBAAT,CAA0B,WAA1B,CAAuC,EAAKC,WAA5C,CAHwB,CAIxBF,QAAQ,CAACC,gBAAT,CAA0B,SAA1B,CAAqC,EAAKE,SAA1C,CACD,CAjBH,0DAmBgB,SAACC,CAAD,CAAyB,CACjCA,CAAC,CAACC,SAD+B,EAEnC,EAAKC,KAAL,CAAWC,QAAX,CAAoBH,CAAC,CAACC,SAAtB,CAEH,CAvBH,wDAyBc,UAAY,CACtB,EAAKN,QAAL,CAAc,CAAED,UAAU,GAAZ,CAAd,CADsB,CAGtB,EAAKU,eAAL,EACD,CA7BH,8DA+BoB,UAAY,CAC5BR,QAAQ,CAACS,mBAAT,CAA6B,WAA7B,CAA0C,EAAKP,WAA/C,CAD4B,CAE5BF,QAAQ,CAACS,mBAAT,CAA6B,SAA7B,CAAwC,EAAKN,SAA7C,CACD,CAlCH,kGAQE,+BAA6B,CAC3B,KAAKK,eAAL,EACD,CAVH,sBAoCE,iBAAsB,CACpB,MACE,4BACE,SAAS,CAAEZ,cAAc,CAAC,CACxBE,UAAU,CAAE,KAAKY,KAAL,CAAWZ,UADC,CAExBa,SAAS,CAAE,KAAKL,KAAL,CAAWK,SAFE,CAAD,CAD3B,CAKE,gBALF,CAME,KAAK,CAAE,CAAEC,MAAM,CAAE,KAAKN,KAAL,CAAWM,MAArB,CAA6BC,GAAG,CAAE,KAAKP,KAAL,CAAWO,GAA7C,CANT,CAOE,WAAW,CAAE,KAAKC,WAPpB,CAQE,aAAa,CAAE,KAAKR,KAAL,CAAWS,aAR5B,EAWH,CAjDH,OAAkCrB,KAAK,CAACsB,SAAxC"}
1
+ {"version":3,"file":"TableResizer.js","names":["React","cn","cnTableResizer","TableResizer","isDragging","setState","document","addEventListener","onMouseMove","onMouseUp","e","movementX","props","onResize","removeListeners","removeEventListener","state","isVisible","height","top","onMouseDown","onDoubleClick","Component"],"sources":["../../../../../../src/components/Table/Resizer/TableResizer.tsx"],"sourcesContent":["import './TableResizer.css';\n\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\n\nconst cnTableResizer = cn('TableResizer');\n\ntype Props = {\n height: number;\n top: number;\n isVisible?: boolean;\n onResize: (delta: number) => void;\n onDoubleClick: () => void;\n};\n\n/* Сделано классом, чтобы функции событий на document имели доступ к актуальному состоянию/пропсам без пересоздания подписок */\nexport class TableResizer extends React.Component<\n Props,\n { isDragging: boolean }\n> {\n state = {\n isDragging: false,\n };\n\n componentWillUnmount(): void {\n this.removeListeners();\n }\n\n onMouseDown = (): void => {\n this.setState({ isDragging: true });\n\n document.addEventListener('mousemove', this.onMouseMove);\n document.addEventListener('mouseup', this.onMouseUp);\n };\n\n onMouseMove = (e: MouseEvent): void => {\n if (e.movementX) {\n this.props.onResize(e.movementX);\n }\n };\n\n onMouseUp = (): void => {\n this.setState({ isDragging: false });\n\n this.removeListeners();\n };\n\n removeListeners = (): void => {\n document.removeEventListener('mousemove', this.onMouseMove);\n document.removeEventListener('mouseup', this.onMouseUp);\n };\n\n render(): React.ReactNode {\n return (\n <div\n className={cnTableResizer({\n isDragging: this.state.isDragging,\n isVisible: this.props.isVisible,\n })}\n aria-hidden\n style={{ height: this.props.height, top: this.props.top }}\n onMouseDown={this.onMouseDown}\n onDoubleClick={this.props.onDoubleClick}\n />\n );\n }\n}\n"],"mappings":"+/BAAA,2BAEA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,EAAT,0BAEA,GAAMC,eAAc,CAAGD,EAAE,CAAC,cAAD,CAAzB,CAWA,UAAaE,aAAb,wNAIU,CACNC,UAAU,GADJ,CAJV,0DAYgB,UAAY,CACxB,EAAKC,QAAL,CAAc,CAAED,UAAU,GAAZ,CAAd,CADwB,CAGxBE,QAAQ,CAACC,gBAAT,CAA0B,WAA1B,CAAuC,EAAKC,WAA5C,CAHwB,CAIxBF,QAAQ,CAACC,gBAAT,CAA0B,SAA1B,CAAqC,EAAKE,SAA1C,CACD,CAjBH,0DAmBgB,SAACC,CAAD,CAAyB,CACjCA,CAAC,CAACC,SAD+B,EAEnC,EAAKC,KAAL,CAAWC,QAAX,CAAoBH,CAAC,CAACC,SAAtB,CAEH,CAvBH,wDAyBc,UAAY,CACtB,EAAKN,QAAL,CAAc,CAAED,UAAU,GAAZ,CAAd,CADsB,CAGtB,EAAKU,eAAL,EACD,CA7BH,8DA+BoB,UAAY,CAC5BR,QAAQ,CAACS,mBAAT,CAA6B,WAA7B,CAA0C,EAAKP,WAA/C,CAD4B,CAE5BF,QAAQ,CAACS,mBAAT,CAA6B,SAA7B,CAAwC,EAAKN,SAA7C,CACD,CAlCH,kGAQE,+BAA6B,CAC3B,KAAKK,eAAL,EACD,CAVH,sBAoCE,iBAA0B,CACxB,MACE,4BACE,SAAS,CAAEZ,cAAc,CAAC,CACxBE,UAAU,CAAE,KAAKY,KAAL,CAAWZ,UADC,CAExBa,SAAS,CAAE,KAAKL,KAAL,CAAWK,SAFE,CAAD,CAD3B,CAKE,gBALF,CAME,KAAK,CAAE,CAAEC,MAAM,CAAE,KAAKN,KAAL,CAAWM,MAArB,CAA6BC,GAAG,CAAE,KAAKP,KAAL,CAAWO,GAA7C,CANT,CAOE,WAAW,CAAE,KAAKC,WAPpB,CAQE,aAAa,CAAE,KAAKR,KAAL,CAAWS,aAR5B,EAWH,CAjDH,OAAkCrB,KAAK,CAACsB,SAAxC"}
@@ -134,7 +134,7 @@ export type TableProps<T extends TableRow> = {
134
134
  };
135
135
  type Table = <T extends TableRow>(props: TableProps<T> & {
136
136
  ref?: React.Ref<HTMLDivElement>;
137
- }) => React.ReactElement | null;
137
+ }) => React.ReactNode | null;
138
138
  export type ColumnMetaData = {
139
139
  filterable: boolean;
140
140
  isSortingActive: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","names":["IconSortDown","IconSortUp","IconUnsort","React","useEffect","useMemo","cnMixScrollBar","useComponentSize","useForkRef","sortBy","sortByDefault","updateAt","cn","setRef","isNotNil","isString","Button","Text","TableCell","fieldFiltersPresent","filterTableData","getSelectedFiltersList","isSelectedFiltersPresent","useSelectedFilters","TableHeader","calculateColSpans","createSortingState","getColumnLeftOffset","getColumnsSize","getMergedArray","getNewSorting","Order","transformRows","useHeaderData","useLazyLoadData","TableResizer","TableRowsCollapse","TableSelectedOptionsList","TableTextFilter","TableFilterContainer","TableNumberFilter","TableChoiceGroupFilter","cnTable","sizes","zebraStriped","headerVerticalAligns","createButtonSizeMap","s","m","l","getColumnSortByField","column","sortable","sortByField","accessor","sortingData","rows","sorting","onSortBy","sortedRows","by","order","sortFn","some","row","length","map","defaultEmptyRowsPlaceholder","InternalTable","props","ref","columns","size","rawFilters","filters","isResizable","stickyHeader","stickyColumns","minColumnWidth","activeRow","verticalAlign","headerVerticalAlign","borderBetweenRows","borderBetweenColumns","emptyRowsPlaceholder","defaultExpandAll","className","onRowHover","onRowClick","onRowCreate","onCellClick","getAdditionalClassName","rowCreateText","lazyLoad","onFiltersUpdated","getTagLabel","getCellWrap","isExpandedRowsByDefault","otherProps","headers","flattenedHeaders","lowHeaders","headerRowsRefs","headerRowsHeights","resizerTopOffsets","stickyColumnsGrid","position","gridIndex","colSpan","getColumnsWidth","width","useState","resizedColumnWidths","setResizedColumnWidths","filter","id","field","initialColumnWidths","setInitialColumnWidths","setSorting","visibleFilter","setVisibleFilter","top","left","tableScroll","setTableScroll","tableRef","useRef","columnsRefs","cellsRefs","selectedFilters","updateSelectedFilters","removeOneSelectedFilter","removeAllSelectedFilters","expandedRowIds","setExpandedRowIds","sortingColumn","find","col","Object","prototype","hasOwnProperty","call","sortingState","tableHeight","current","clientHeight","tableWidth","clientWidth","showVerticalCellShadow","showHorizontalCellShadow","isRowsClickable","onChange","updateColumnWidth","idx","newWidth","overallColumnsWidth","columnsElements","values","columnsElementsWidths","el","getBoundingClientRect","resultArr","reduce","a","b","useLayoutEffect","autoSetted","i","isSortedByColumn","getStickyLeftOffset","columnIndex","topHeaderGridIndex","handleSelectRow","e","handleRowHover","handleRowCreate","index","handleColumnResize","delta","columnMinWidth","Math","min","prevColumnWidth","newColumnWidth","max","containerEl","scrollBy","stickyColumnsWidth","columnsWithMetaData","resizedColumnWidth","initialColumnWidth","columnWidth","columnLeftOffset","isSticky","showResizer","isFilterActive","selected","filterable","isSortingActive","isResized","headersWithMetaData","hasNestedRows","sortedTableData","filteredData","data","maxVisibleRows","scrollableEl","getSlicedRows","setBoundaryRef","flatRowsData","rowsData","tableStyle","hasMergedCells","header","mergeCells","handleExpandRow","includes","prevState","rowId","getCollapseRollProps","columnIdx","withCollapseButton","baseProps","level","options","isExpandedByDefault","isExpanded","toggleCollapse","getExpandedRows","depth","expandedIds","forEach","defaultExpand","push","ids","indexOf","renderCell","cellContent","collapseRollProps","bottomCreateRowButton","rowsLength","slice","pop","lastRowId","getTableCellProps","rowIdx","getComparisonValue","previousCell","currentCell","result","rowSpan","show","style","nextCell","handleCellClick","params","withBorderBottom","handleScroll","target","HTMLElement","scrollTop","scrollLeft","type","getSortIcon","handleSortClick","newSorting","sortProps","sortingBy","sortOrder","handleFilterTogglerClick","handleTooltipSave","tooltipSelectedFilters","value","removeSelectedFilter","tableFilters","resetSelectedFilters","nth","spans","withMergedCells","start","isActive","isDarked","isMerged","renderEmptyRowsPlaceholder","placeholder","Table","forwardRef"],"sources":["../../../../../src/components/Table/Table.tsx"],"sourcesContent":["import './Table.css';\n\nimport { IconSortDown } from '@consta/icons/IconSortDown';\nimport { IconSortUp } from '@consta/icons/IconSortUp';\nimport { IconUnsort } from '@consta/icons/IconUnsort';\nimport React, { useEffect, useMemo } from 'react';\n\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\n\nimport { useComponentSize } from '../../hooks/useComponentSize/useComponentSize';\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { sortBy as sortByDefault, updateAt } from '../../utils/array';\nimport { cn } from '../../utils/bem';\nimport { setRef } from '../../utils/setRef';\nimport { isNotNil, isString } from '../../utils/type-guards';\nimport { Button, ButtonPropSize } from '../Button/Button';\nimport { Text } from '../Text/Text';\nimport { HorizontalAlign, TableCell, VerticalAlign } from './Cell/TableCell';\nimport {\n fieldFiltersPresent,\n FieldSelectedValues,\n Filters,\n filterTableData,\n getSelectedFiltersList,\n isSelectedFiltersPresent,\n onSortBy,\n SelectedFilters,\n useSelectedFilters,\n} from './filtering';\nimport { TableHeader } from './Header/TableHeader';\nimport {\n calculateColSpans,\n createSortingState,\n getColumnLeftOffset,\n getColumnsSize,\n getMergedArray,\n getNewSorting,\n Header,\n Order,\n OrderType,\n Position,\n transformRows,\n useHeaderData,\n useLazyLoadData,\n} from './helpers';\nimport { TableResizer } from './Resizer/TableResizer';\nimport {\n Props as TableRowsCollapseProps,\n TableRowsCollapse,\n} from './RowsCollapse/TableRowsCollapse';\nimport {\n GetTagLabel,\n TableSelectedOptionsList,\n} from './SelectedOptionsList/TableSelectedOptionsList';\n\nexport { TableTextFilter } from './TextFilter/TableTextFilter';\nexport { TableFilterContainer } from './FilterContainer/TableFilterContainer';\nexport { TableNumberFilter } from './NumberFilter/TableNumberFilter';\nexport { TableChoiceGroupFilter } from './ChoiceGroupFilter/TableChoiceGroupFilter';\n\nconst cnTable = cn('Table');\n\nexport const sizes = ['s', 'm', 'l'] as const;\ntype Size = typeof sizes[number];\n\nexport const zebraStriped = ['odd', 'even'] as const;\ntype ZebraStriped = typeof zebraStriped[number];\n\nexport const headerVerticalAligns = ['center', 'bottom'] as const;\nexport type HeaderVerticalAlign = typeof headerVerticalAligns[number];\n\nconst createButtonSizeMap: Record<Size, ButtonPropSize> = {\n s: 'xs',\n m: 's',\n l: 'm',\n};\n\ntype TableCSSCustomProperty = {\n '--table-width': string;\n '--table-grid-template-columns': string;\n};\n\nexport type LazyLoad =\n | {\n maxVisibleRows?: number;\n scrollableEl?: HTMLDivElement | Window;\n }\n | undefined;\n\ntype ActiveRow = {\n id: string | undefined;\n onChange: ({\n id,\n e,\n }: {\n id: string | undefined;\n e?: React.SyntheticEvent;\n }) => void;\n};\n\ntype onRowHover = ({\n id,\n e,\n}: {\n id: string | undefined;\n e: React.MouseEvent;\n}) => void;\n\ntype onRowClick = ({ id, e }: { id: string; e: React.MouseEvent }) => void;\n\ntype onRowCreate = ({\n id,\n index,\n e,\n}: {\n id?: string;\n index: number;\n e: React.MouseEvent;\n}) => void;\n\nexport type CellClickType = 'click' | 'contextMenu';\n\nexport type onCellClick = ({\n e,\n type,\n rowId,\n columnIdx,\n ref,\n}: {\n e: React.SyntheticEvent;\n type: CellClickType;\n columnIdx: number;\n ref: React.RefObject<HTMLDivElement>;\n rowId?: string;\n}) => void;\n\nexport type TableRow = {\n id: string;\n defaultExpand?: boolean;\n rows?: TableRow[];\n};\n\nexport type TableTreeRow<T extends TableRow> = {\n options: {\n level: number;\n };\n} & T;\n\nexport type TableFilters<T extends TableRow> = Filters<T>;\n\nexport type RowField<T extends TableRow> = Exclude<keyof T, symbol | number>;\n\nexport type ColumnWidth = number | undefined;\n\nexport type ValueOf<T> = T[keyof T];\n\ntype ColumnBase<T extends TableRow> = ValueOf<{\n [K in keyof T]: {\n accessor: K extends string ? K : never;\n sortable?: boolean;\n colSpan?: number | ((row: T) => number);\n sortByField?: keyof T;\n order?: OrderType;\n sortFn?(a: T[K], b: T[K]): number;\n renderCell?: (row: T) => React.ReactNode;\n getComparisonValue?: (cell: T[K]) => number | string;\n };\n}>;\ntype SingleColumnAddition<T extends TableRow> = ColumnBase<T> & {\n columns?: never;\n};\ntype GroupColumnAddition<T extends TableRow> = {\n columns: TableColumn<T>[];\n} & {\n // eslint-disable-next-line no-unused-vars\n [K in keyof ColumnBase<T>]?: never;\n};\nexport interface TableControl<T extends TableRow> {\n column: Header<T> & ColumnMetaData;\n}\n\nexport type SortByProps<T extends TableRow> = {\n sortingBy: keyof T;\n sortOrder: 'asc' | 'desc';\n};\n\nexport type TableColumn<T extends TableRow> = {\n title: React.ReactNode;\n align?: HorizontalAlign;\n withoutPadding?: boolean;\n width?: ColumnWidth;\n mergeCells?: boolean;\n position?: Position;\n hidden?: boolean;\n control?: ({ column }: TableControl<T>) => React.ReactNode;\n} & (GroupColumnAddition<T> | SingleColumnAddition<T>);\n\nexport type TableProps<T extends TableRow> = {\n columns: TableColumn<T>[];\n rows: T[];\n isResizable?: boolean;\n filters?: Filters<T>;\n onSortBy?: onSortBy<T>;\n size?: Size;\n stickyHeader?: boolean;\n stickyColumns?: number;\n minColumnWidth?: number;\n activeRow?: ActiveRow;\n verticalAlign?: VerticalAlign;\n headerVerticalAlign?: HeaderVerticalAlign;\n zebraStriped?: ZebraStriped;\n borderBetweenRows?: boolean;\n defaultExpandAll?: boolean;\n borderBetweenColumns?: boolean;\n emptyRowsPlaceholder?: React.ReactNode;\n className?: string;\n onRowHover?: onRowHover;\n onRowClick?: onRowClick;\n onRowCreate?: onRowCreate;\n onCellClick?: onCellClick;\n getAdditionalClassName?: (props: {\n column: TableColumn<T>;\n row: T;\n isActive: boolean;\n }) => string;\n rowCreateText?: string;\n lazyLoad?: LazyLoad;\n onFiltersUpdated?: (filters: SelectedFilters) => void;\n getTagLabel?: GetTagLabel;\n isExpandedRowsByDefault?: boolean;\n getCellWrap?: (row: T) => 'truncate' | 'break';\n};\n\ntype Table = <T extends TableRow>(\n props: TableProps<T> & { ref?: React.Ref<HTMLDivElement> },\n) => React.ReactElement | null;\n\nexport type ColumnMetaData = {\n filterable: boolean;\n isSortingActive: boolean;\n isFilterActive: boolean;\n isResized: boolean;\n isSticky: boolean;\n showResizer: boolean;\n columnWidth: number;\n columnLeftOffset: number;\n};\n\nexport type SortingState<T extends TableRow> = {\n by: keyof T;\n order: 'asc' | 'desc';\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number;\n} | null;\n\ntype GetTableCellProps = {\n show: boolean;\n rowSpan: number;\n style: {\n 'left'?: number;\n '--row-span'?: string;\n };\n};\n\nconst getColumnSortByField = <T extends TableRow>(\n column: TableColumn<T>,\n): keyof T => (column.sortable && column.sortByField) || column.accessor!;\n\nconst sortingData = <T extends TableRow>(\n rows: T[],\n sorting: SortingState<T>,\n onSortBy?: onSortBy<T>,\n): T[] => {\n if (onSortBy) {\n return rows;\n }\n\n if (!sorting) {\n return rows;\n }\n const sortedRows = sortByDefault(\n rows,\n sorting.by,\n sorting.order,\n sorting.sortFn,\n );\n\n if (sortedRows.some((row) => row.rows?.length)) {\n return sortedRows.map((row) => {\n return row.rows\n ? { ...row, rows: sortingData(row.rows as T[], sorting, onSortBy) }\n : row;\n });\n }\n\n return sortedRows;\n};\n\nconst defaultEmptyRowsPlaceholder = (\n <Text as=\"span\" view=\"primary\" size=\"s\" lineHeight=\"s\">\n Нет данных\n </Text>\n);\n\nconst InternalTable = <T extends TableRow>(\n props: TableProps<T>,\n ref?: React.Ref<HTMLDivElement>,\n) => {\n const {\n columns,\n rows,\n size = 'l',\n filters: rawFilters,\n isResizable = false,\n stickyHeader = false,\n stickyColumns = 0,\n minColumnWidth = 150,\n activeRow,\n verticalAlign = 'top',\n headerVerticalAlign = 'center',\n zebraStriped,\n borderBetweenRows = false,\n borderBetweenColumns = false,\n emptyRowsPlaceholder = defaultEmptyRowsPlaceholder,\n defaultExpandAll,\n className,\n onRowHover,\n onRowClick,\n onRowCreate,\n onCellClick,\n getAdditionalClassName,\n rowCreateText = '+ Добавить строку',\n lazyLoad,\n onSortBy,\n onFiltersUpdated,\n getTagLabel,\n getCellWrap,\n isExpandedRowsByDefault = false,\n ...otherProps\n } = props;\n const {\n headers,\n flattenedHeaders,\n lowHeaders,\n headerRowsRefs,\n headerRowsHeights,\n resizerTopOffsets,\n } = useHeaderData(columns);\n const stickyColumnsGrid =\n // eslint-disable-next-line no-unsafe-optional-chaining\n headers[0][stickyColumns - 1]?.position.gridIndex! +\n (headers[0][stickyColumns - 1]?.position.colSpan || 1);\n\n const getColumnsWidth = () =>\n lowHeaders.map((column: TableColumn<T>) => column.width);\n const [resizedColumnWidths, setResizedColumnWidths] = React.useState<\n ColumnWidth[]\n >(getColumnsWidth());\n\n const filters = React.useMemo(() => {\n return (\n rawFilters && rawFilters.filter((filter) => filter.id && filter.field)\n );\n }, [rawFilters]);\n\n React.useEffect(() => {\n setResizedColumnWidths(getColumnsWidth());\n }, [lowHeaders.length]);\n\n const [initialColumnWidths, setInitialColumnWidths] = React.useState<\n number[]\n >([]);\n const [sorting, setSorting] = React.useState<SortingState<T>>(null);\n const [visibleFilter, setVisibleFilter] = React.useState<string | null>(null);\n const [tableScroll, setTableScroll] = React.useState({ top: 0, left: 0 });\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n const columnsRefs = React.useRef<Record<number, HTMLDivElement | null>>({});\n const cellsRefs = React.useRef<Record<string, HTMLDivElement | null>>({});\n const {\n selectedFilters,\n updateSelectedFilters,\n removeOneSelectedFilter,\n removeAllSelectedFilters,\n } = useSelectedFilters(filters, onFiltersUpdated);\n const [expandedRowIds, setExpandedRowIds] = React.useState<string[]>([]);\n\n // установка сортировки по умолчанию\n\n React.useEffect(() => {\n const sortingColumn = columns.find(\n (col) =>\n isString(col.order) &&\n Object.prototype.hasOwnProperty.call(Order, col.order),\n );\n if (sortingColumn) {\n const sortingState = createSortingState(\n getColumnSortByField(sortingColumn),\n sortingColumn.order,\n sortingColumn.sortFn,\n );\n setSorting(sortingState);\n }\n }, [columns]);\n\n /*\n Подписываемся на изменения размеров таблицы, но не используем значения из\n хука так как нам нужна ширина и высота таблицы без размера скролла. Этот хук\n использует значения `offsetWidth` и `offsetHeight` которые включают размер\n скролл бара.\n */\n useComponentSize(tableRef);\n const tableHeight = tableRef.current?.clientHeight || 0;\n const tableWidth = tableRef.current?.clientWidth || 0;\n\n const showVerticalCellShadow = tableScroll.left > 0;\n const showHorizontalCellShadow = tableScroll.top > 0;\n const isRowsClickable = activeRow && activeRow.onChange;\n\n const updateColumnWidth = (idx: number, newWidth: number): void => {\n setResizedColumnWidths(updateAt(resizedColumnWidths, idx, newWidth));\n };\n\n const overallColumnsWidth = useMemo(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n return resultArr.reduce((a, b) => (a ?? 0) + (b ?? 0));\n }, [resizedColumnWidths, isResizable]);\n\n React.useLayoutEffect(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n if (columnsElements.length === 0) return;\n\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n setInitialColumnWidths(columnsElementsWidths);\n\n // Проверяем, что таблица отрисовалась корректно, и устанавливаем значения ширин колонок после 1го и последующих рендера\n if (\n columnsElements[0].getBoundingClientRect().left !==\n columnsElements[columnsElements.length - 1].getBoundingClientRect().left\n ) {\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n // Выставляю в undefined для того, чтобы колонка, для которой не определена ширина выставлялась в auto\n // Если ее нет то заполняю недостающее пространство в последней колонке\n if ((overallColumnsWidth ?? tableWidth) < tableWidth) {\n let autoSetted = false;\n for (let i = columns.length - 1; i > 0; i--) {\n const { width } = columns[i];\n if (!(width && width > 0)) {\n resultArr[i] = undefined;\n autoSetted = true;\n return;\n }\n }\n if (!autoSetted && overallColumnsWidth) {\n resultArr[resultArr.length - 1] =\n (resultArr[resultArr.length - 1] ?? 0) +\n tableWidth -\n overallColumnsWidth;\n }\n }\n return setResizedColumnWidths(resultArr);\n }\n\n // условие изменения ширины колонок при изменении ширины экрана (контейнера таблицы)\n if (tableWidth > 0 && !isResizable) {\n return setResizedColumnWidths(getColumnsWidth());\n }\n }, [tableWidth, overallColumnsWidth]);\n\n const isSortedByColumn = (column: TableColumn<T>): boolean =>\n getColumnSortByField(column) === sorting?.by;\n\n const getSortIcon = (column: TableColumn<T>) => {\n return (\n (isSortedByColumn(column) &&\n (sorting?.order === 'desc' ? IconSortDown : IconSortUp)) ||\n IconUnsort\n );\n };\n\n const handleSortClick = (column: TableColumn<T>): void => {\n const newSorting = getNewSorting(\n sorting,\n getColumnSortByField(column),\n (column.sortable && column?.sortFn) || undefined,\n );\n\n const sortProps = newSorting\n ? {\n sortingBy: newSorting.by,\n sortOrder: newSorting.order,\n }\n : null;\n onSortBy && onSortBy(sortProps);\n setSorting(newSorting);\n };\n\n const handleFilterTogglerClick = (id: string) => (): void => {\n setVisibleFilter(visibleFilter === id ? null : id);\n };\n\n const handleTooltipSave = (\n field: string,\n tooltipSelectedFilters: FieldSelectedValues,\n value?: unknown,\n ): void => {\n updateSelectedFilters(field, tooltipSelectedFilters, value);\n };\n\n const removeSelectedFilter =\n (tableFilters: Filters<T>) =>\n (filter: string): void => {\n removeOneSelectedFilter(tableFilters, filter);\n };\n\n const resetSelectedFilters = (): void => {\n if (filters && filters.length) {\n removeAllSelectedFilters(filters);\n }\n };\n\n const getStickyLeftOffset = (\n columnIndex: number,\n topHeaderGridIndex: number,\n ): number | undefined => {\n if (topHeaderGridIndex >= stickyColumns) {\n return;\n }\n\n return getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n };\n\n const handleScroll: React.UIEventHandler = (e) => {\n if (!(e.target instanceof HTMLElement) || e.target !== tableRef.current) {\n return;\n }\n\n setTableScroll({\n top: e.target.scrollTop,\n left: e.target.scrollLeft,\n });\n };\n\n const handleSelectRow = ({\n id,\n e,\n }: {\n id: string;\n e: React.SyntheticEvent;\n }): void | undefined => {\n if (!activeRow || !activeRow.onChange) {\n return;\n }\n\n activeRow.onChange({ id: activeRow.id === id ? undefined : id, e });\n };\n\n const handleRowHover = (id?: string) => (e: React.MouseEvent) =>\n onRowHover && onRowHover({ id, e });\n\n const handleRowCreate =\n (index: number, id?: string) => (e: React.MouseEvent) =>\n onRowCreate && onRowCreate({ e, id, index });\n\n const handleColumnResize = (idx: number, delta: number): void => {\n const columnMinWidth = Math.min(minColumnWidth, initialColumnWidths[idx]);\n const prevColumnWidth =\n resizedColumnWidths[idx] || initialColumnWidths[idx];\n const newColumnWidth = Math.max(columnMinWidth, prevColumnWidth + delta);\n\n updateColumnWidth(idx, newColumnWidth);\n\n // При расширении последней колонки прокручиваем таблицу вправо\n const containerEl = tableRef.current;\n if (idx === resizedColumnWidths.length - 1 && delta > 0 && containerEl) {\n containerEl.scrollBy(delta, 0);\n }\n };\n\n const stickyColumnsWidth = getColumnLeftOffset({\n columnIndex: stickyColumns,\n resizedColumnWidths,\n initialColumnWidths,\n });\n\n const columnsWithMetaData = (columns: Array<Header<T>>) => {\n return columns.map((column: Header<T>) => {\n const columnIndex = column.position.gridIndex;\n const resizedColumnWidth = resizedColumnWidths[columnIndex];\n const initialColumnWidth = initialColumnWidths[columnIndex];\n const columnWidth = resizedColumnWidth || initialColumnWidth;\n const columnLeftOffset = getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n const isResized = !!columnWidth && columnWidth !== initialColumnWidth;\n const isSticky = stickyColumns > column.position!.topHeaderGridIndex;\n const showResizer =\n stickyColumns > columnIndex ||\n stickyColumnsWidth + tableScroll.left < columnLeftOffset + columnWidth;\n const isFilterActive =\n (selectedFilters[column.accessor!]?.selected || []).length > 0;\n\n return {\n ...column,\n filterable: Boolean(\n filters && fieldFiltersPresent(filters, column.accessor!),\n ),\n isSortingActive: isSortedByColumn(column),\n isFilterActive,\n isResized,\n isSticky,\n showResizer,\n columnWidth,\n columnLeftOffset,\n };\n });\n };\n\n const headersWithMetaData: Array<Header<T> & ColumnMetaData> =\n columnsWithMetaData(flattenedHeaders);\n\n const hasNestedRows = React.useMemo(\n () => rows.some((row) => Boolean(row.rows?.length)),\n [rows],\n );\n\n const sortedTableData = sortingData(rows, sorting, onSortBy);\n\n const filteredData =\n filters && isSelectedFiltersPresent(selectedFilters)\n ? filterTableData({\n data: sortedTableData,\n filters: filters || [],\n selectedFilters,\n })\n : sortedTableData;\n\n const { maxVisibleRows = 210, scrollableEl = tableRef.current } =\n lazyLoad || {};\n\n const { getSlicedRows, setBoundaryRef } = useLazyLoadData(\n maxVisibleRows,\n scrollableEl,\n !!lazyLoad,\n );\n\n const flatRowsData = transformRows(\n filteredData,\n expandedRowIds,\n isExpandedRowsByDefault,\n );\n const rowsData = getSlicedRows(flatRowsData);\n\n const tableStyle: React.CSSProperties & TableCSSCustomProperty = {\n '--table-grid-template-columns': getColumnsSize(resizedColumnWidths),\n '--table-width': `${tableWidth}px`,\n };\n\n const hasMergedCells: boolean = columnsWithMetaData(lowHeaders).some(\n (header) => header.mergeCells,\n );\n\n const handleExpandRow = (id: string): (() => void) => {\n return (): void => {\n if (expandedRowIds.includes(id)) {\n setExpandedRowIds((prevState) =>\n prevState.filter((rowId) => rowId !== id),\n );\n return;\n }\n setExpandedRowIds((prevState) => [...prevState, id]);\n };\n };\n\n const getCollapseRollProps = (\n row: TableTreeRow<T>,\n columnIdx: number,\n ): TableRowsCollapseProps => {\n const withCollapseButton = Boolean(row.rows?.length) && columnIdx === 0;\n\n const baseProps = {\n level: row.options.level,\n isExpandedByDefault: isExpandedRowsByDefault,\n };\n\n if (!withCollapseButton || isExpandedRowsByDefault) {\n return baseProps;\n }\n\n const isExpanded = expandedRowIds.includes(row.id);\n const toggleCollapse = handleExpandRow(row.id);\n\n return {\n ...baseProps,\n withCollapseButton,\n isExpanded,\n toggleCollapse,\n };\n };\n\n const getExpandedRows = (\n rows: T[],\n depth: number,\n defaultExpandAll?: boolean,\n ): string[] => {\n let expandedIds: string[] = [];\n rows.forEach((row) => {\n if (\n row.defaultExpand ||\n ((row.rows?.length ?? 0) > 0 && defaultExpandAll)\n ) {\n expandedIds.push(row.id);\n }\n if (row.rows) {\n const ids = getExpandedRows(\n row.rows as T[],\n depth + 1,\n defaultExpandAll,\n );\n expandedIds = [...expandedIds, ...ids];\n if (ids.length > 0 && expandedIds.indexOf(row.id) === -1) {\n expandedIds.push(row.id);\n }\n }\n });\n return [\n ...(depth === 0 ? expandedRowIds : []),\n ...expandedIds.filter((id) => expandedRowIds.indexOf(id) === -1),\n ];\n };\n\n useEffect(() => {\n if (rows) {\n setExpandedRowIds(getExpandedRows(rows, 0, defaultExpandAll));\n }\n }, [rows, defaultExpandAll]);\n\n const renderCell = (\n column: TableColumn<T>,\n row: T,\n columnIdx: number,\n ): React.ReactNode => {\n const cellContent = column.renderCell\n ? column.renderCell(row)\n : row[column.accessor!];\n\n if (!hasNestedRows || columnIdx !== 0) {\n return cellContent as React.ReactNode;\n }\n\n const collapseRollProps = getCollapseRollProps(\n row as TableTreeRow<T>,\n columnIdx,\n );\n\n return (\n <TableRowsCollapse {...collapseRollProps}>\n {cellContent as React.ReactNode}\n </TableRowsCollapse>\n );\n };\n\n const renderEmptyRowsPlaceholder = (\n placeholder: React.ReactNode,\n ): React.ReactNode => {\n return typeof placeholder === 'string' ? (\n <Text size=\"s\" view=\"primary\" lineHeight=\"m\">\n {placeholder}\n </Text>\n ) : (\n placeholder\n );\n };\n\n const bottomCreateRowButton = useMemo(() => {\n const rowsLength = rowsData.length;\n /* Можно и rowsData[rowsLength - 1], но в таком случае TS не подскажет,\n что мы будем искать id в undefined это может привести к ошибке */\n const { id: lastRowId } = rowsData.slice(-1).pop() ?? {};\n\n if (!onRowCreate) {\n return null;\n }\n\n return (\n <div\n className={cnTable(rowsLength ? 'CreateRowCell' : 'RowWithoutCells')}\n >\n <Button\n size={createButtonSizeMap[size]}\n form=\"brick\"\n label={rowCreateText}\n view=\"clear\"\n className={cnTable('CreateRowButton')}\n onClick={handleRowCreate(rowsLength, lastRowId)}\n width=\"full\"\n />\n </div>\n );\n }, [rowCreateText, rowsData.length, onRowCreate]);\n\n const getTableCellProps = (\n row: TableTreeRow<T>,\n rowIdx: number,\n column: TableColumn<T>,\n columnIdx: number,\n ): GetTableCellProps => {\n const {\n mergeCells,\n accessor,\n position,\n getComparisonValue = (e) => e,\n } = column;\n\n const previousCell =\n rowsData[rowIdx - 1] &&\n getComparisonValue(rowsData[rowIdx - 1][accessor!]);\n const currentCell = getComparisonValue(row[accessor!]);\n\n const result: GetTableCellProps = {\n rowSpan: 1,\n show: false,\n style: {\n left: getStickyLeftOffset(columnIdx, position!.topHeaderGridIndex),\n },\n };\n\n if (\n mergeCells &&\n ((rowsData[rowIdx - 1] && previousCell !== currentCell) ||\n rowIdx === 0 ||\n (previousCell === currentCell && rowsData[rowIdx - 1]?.rows))\n ) {\n if (!row.rows) {\n for (let i = rowIdx; i < rowsData.length; i++) {\n if (rowsData[i + 1]) {\n const nextCell = getComparisonValue(rowsData[i + 1][accessor!]);\n if (currentCell === nextCell && !rowsData[i].rows) {\n result.rowSpan++;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n if (result.rowSpan > 1) {\n result.style['--row-span'] = `span ${result.rowSpan}`;\n }\n result.show = true;\n }\n if (!mergeCells) {\n result.show = true;\n }\n\n return result;\n };\n\n const handleCellClick: onCellClick = (params) => {\n onCellClick?.(params);\n };\n\n return (\n <div\n {...otherProps}\n ref={useForkRef([tableRef, ref])}\n className={cnTable(\n {\n size,\n isResizable,\n zebraStriped,\n withBorderBottom: !filteredData.length,\n },\n [className, cnMixScrollBar()],\n )}\n style={tableStyle}\n onScroll={handleScroll}\n >\n {/*\n Элементы Resizer рендерятся в отдельных ячейках нулевой высоты с шириной\n равной ширине колонки сетки, при этом у ячейки самый большой z-index в\n таблице чтобы элементы Resizer могли перекрывать ячейки заголовка и\n контента. Кроме того это позволяет зафиксировать вертикальное и\n горизонтальное положение Resizer, а также его высоту.\n\n Получение высоты Resizer элементов через свойство элемента таблицы\n scrollHeight не подходило, так как в таком случае Resizer растягивал\n таблицу по высоте, поэтому от этого способа отказались.\n */}\n {columnsWithMetaData(lowHeaders).map(\n (\n column: TableColumn<T> & { showResizer: boolean },\n columnIdx: number,\n ) => (\n <TableCell\n type=\"resizer\"\n key={columnIdx}\n ref={(ref: HTMLDivElement | null): void => {\n columnsRefs.current[columnIdx] = ref;\n }}\n style={{\n left: getStickyLeftOffset(columnIdx, columnIdx),\n }}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n onClick={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n column={column}\n showVerticalShadow={showVerticalCellShadow}\n >\n {isResizable && (\n <TableResizer\n height={tableHeight - resizerTopOffsets[columnIdx]}\n top={resizerTopOffsets[columnIdx]}\n isVisible={column.showResizer}\n onResize={(delta): void => handleColumnResize(columnIdx, delta)}\n onDoubleClick={(): void =>\n updateColumnWidth(columnIdx, initialColumnWidths[columnIdx])\n }\n />\n )}\n </TableCell>\n ),\n )}\n <TableHeader\n isStickyHeader={stickyHeader}\n headersWithMetaData={headersWithMetaData}\n headerRowsHeights={headerRowsHeights}\n headerRowsRefs={headerRowsRefs}\n getStickyLeftOffset={getStickyLeftOffset}\n stickyColumnsGrid={stickyColumnsGrid}\n showVerticalCellShadow={showVerticalCellShadow}\n headerVerticalAlign={headerVerticalAlign}\n getSortIcon={getSortIcon}\n handleSortClick={handleSortClick}\n handleFilterTogglerClick={handleFilterTogglerClick}\n handleCellClick={handleCellClick}\n handleTooltipSave={handleTooltipSave}\n filters={filters}\n visibleFilter={visibleFilter}\n selectedFilters={selectedFilters}\n showHorizontalCellShadow={showHorizontalCellShadow}\n borderBetweenColumns={borderBetweenColumns}\n />\n {filters && isSelectedFiltersPresent(selectedFilters) && (\n <div className={cnTable('RowWithoutCells')}>\n <TableSelectedOptionsList\n values={getSelectedFiltersList({\n filters,\n selectedFilters,\n columns: lowHeaders,\n })}\n getTagLabel={getTagLabel}\n onRemove={removeSelectedFilter(filters)}\n onReset={resetSelectedFilters}\n />\n </div>\n )}\n {rowsData.length > 0 ? (\n rowsData.map((row, rowIdx) => {\n const nth = (rowIdx + 1) % 2 === 0 ? 'even' : 'odd';\n const columns = columnsWithMetaData(lowHeaders);\n const spans = calculateColSpans(columns, row);\n return (\n <div\n key={row.id}\n role=\"presentation\"\n className={cnTable('CellsRow', {\n nth,\n withMergedCells: hasMergedCells,\n })}\n onMouseEnter={handleRowHover(row.id)}\n onMouseLeave={handleRowHover(undefined)}\n onClick={(e) => onRowClick && onRowClick({ id: row.id, e })}\n >\n {columns.map((column: TableColumn<T>, columnIdx: number) => {\n const { show, style, rowSpan } = getTableCellProps(\n row,\n rowIdx,\n column,\n columnIdx,\n );\n const colSpan = spans[columnIdx];\n const start =\n columnIdx > 0\n ? spans.slice(0, columnIdx).reduce((a, b) => a + b) + 1\n : 1;\n if (show && colSpan > 0) {\n return (\n <TableCell\n type=\"content\"\n key={column.accessor}\n ref={(ref: HTMLDivElement | null) => {\n cellsRefs.current[`${columnIdx}-${row.id}`] = ref;\n setRef(setBoundaryRef(columnIdx, rowIdx), ref);\n }}\n style={{\n ...style,\n ['--table-cell-col-start' as string]: start,\n ['--table-cell-col-end' as string]: start + colSpan,\n }}\n wrapperClassName={cnTable('ContentCell', {\n isActive: activeRow ? activeRow.id === row.id : false,\n isDarked: activeRow\n ? activeRow.id !== undefined &&\n activeRow.id !== row.id\n : false,\n isMerged: column.mergeCells && rowSpan > 1,\n })}\n className={getAdditionalClassName?.({\n column,\n row,\n isActive: activeRow ? activeRow.id === row.id : false,\n })}\n wrap={getCellWrap?.(row)}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n })\n }\n onClick={(e: React.SyntheticEvent): void => {\n handleSelectRow({ id: row.id, e });\n\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n });\n }}\n column={column}\n verticalAlign={verticalAlign}\n isClickable={!!isRowsClickable}\n showVerticalShadow={\n showVerticalCellShadow &&\n // eslint-disable-next-line no-unsafe-optional-chaining\n column?.position!.gridIndex! +\n (column?.position!.colSpan || 1) ===\n stickyColumnsGrid\n }\n isBorderTop={rowIdx > 0 && borderBetweenRows}\n isBorderLeft={columnIdx > 0 && borderBetweenColumns}\n >\n {renderCell(column, row, columnIdx)}\n </TableCell>\n );\n }\n return null;\n })}\n </div>\n );\n })\n ) : (\n <div className={cnTable('RowWithoutCells')}>\n <div className={cnTable('EmptyCell')}>\n {renderEmptyRowsPlaceholder(emptyRowsPlaceholder)}\n </div>\n </div>\n )}\n {bottomCreateRowButton}\n </div>\n );\n};\n\nexport const Table = React.forwardRef(InternalTable) as Table;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Table.js","names":["IconSortDown","IconSortUp","IconUnsort","React","useEffect","useMemo","cnMixScrollBar","useComponentSize","useForkRef","sortBy","sortByDefault","updateAt","cn","setRef","isNotNil","isString","Button","Text","TableCell","fieldFiltersPresent","filterTableData","getSelectedFiltersList","isSelectedFiltersPresent","useSelectedFilters","TableHeader","calculateColSpans","createSortingState","getColumnLeftOffset","getColumnsSize","getMergedArray","getNewSorting","Order","transformRows","useHeaderData","useLazyLoadData","TableResizer","TableRowsCollapse","TableSelectedOptionsList","TableTextFilter","TableFilterContainer","TableNumberFilter","TableChoiceGroupFilter","cnTable","sizes","zebraStriped","headerVerticalAligns","createButtonSizeMap","s","m","l","getColumnSortByField","column","sortable","sortByField","accessor","sortingData","rows","sorting","onSortBy","sortedRows","by","order","sortFn","some","row","length","map","defaultEmptyRowsPlaceholder","InternalTable","props","ref","columns","size","rawFilters","filters","isResizable","stickyHeader","stickyColumns","minColumnWidth","activeRow","verticalAlign","headerVerticalAlign","borderBetweenRows","borderBetweenColumns","emptyRowsPlaceholder","defaultExpandAll","className","onRowHover","onRowClick","onRowCreate","onCellClick","getAdditionalClassName","rowCreateText","lazyLoad","onFiltersUpdated","getTagLabel","getCellWrap","isExpandedRowsByDefault","otherProps","headers","flattenedHeaders","lowHeaders","headerRowsRefs","headerRowsHeights","resizerTopOffsets","stickyColumnsGrid","position","gridIndex","colSpan","getColumnsWidth","width","useState","resizedColumnWidths","setResizedColumnWidths","filter","id","field","initialColumnWidths","setInitialColumnWidths","setSorting","visibleFilter","setVisibleFilter","top","left","tableScroll","setTableScroll","tableRef","useRef","columnsRefs","cellsRefs","selectedFilters","updateSelectedFilters","removeOneSelectedFilter","removeAllSelectedFilters","expandedRowIds","setExpandedRowIds","sortingColumn","find","col","Object","prototype","hasOwnProperty","call","sortingState","tableHeight","current","clientHeight","tableWidth","clientWidth","showVerticalCellShadow","showHorizontalCellShadow","isRowsClickable","onChange","updateColumnWidth","idx","newWidth","overallColumnsWidth","columnsElements","values","columnsElementsWidths","el","getBoundingClientRect","resultArr","reduce","a","b","useLayoutEffect","autoSetted","i","isSortedByColumn","getStickyLeftOffset","columnIndex","topHeaderGridIndex","handleSelectRow","e","handleRowHover","handleRowCreate","index","handleColumnResize","delta","columnMinWidth","Math","min","prevColumnWidth","newColumnWidth","max","containerEl","scrollBy","stickyColumnsWidth","columnsWithMetaData","resizedColumnWidth","initialColumnWidth","columnWidth","columnLeftOffset","isSticky","showResizer","isFilterActive","selected","filterable","isSortingActive","isResized","headersWithMetaData","hasNestedRows","sortedTableData","filteredData","data","maxVisibleRows","scrollableEl","getSlicedRows","setBoundaryRef","flatRowsData","rowsData","tableStyle","hasMergedCells","header","mergeCells","handleExpandRow","includes","prevState","rowId","getCollapseRollProps","columnIdx","withCollapseButton","baseProps","level","options","isExpandedByDefault","isExpanded","toggleCollapse","getExpandedRows","depth","expandedIds","forEach","defaultExpand","push","ids","indexOf","renderCell","cellContent","collapseRollProps","bottomCreateRowButton","rowsLength","slice","pop","lastRowId","getTableCellProps","rowIdx","getComparisonValue","previousCell","currentCell","result","rowSpan","show","style","nextCell","handleCellClick","params","withBorderBottom","handleScroll","target","HTMLElement","scrollTop","scrollLeft","type","getSortIcon","handleSortClick","newSorting","sortProps","sortingBy","sortOrder","handleFilterTogglerClick","handleTooltipSave","tooltipSelectedFilters","value","removeSelectedFilter","tableFilters","resetSelectedFilters","nth","spans","withMergedCells","start","isActive","isDarked","isMerged","renderEmptyRowsPlaceholder","placeholder","Table","forwardRef"],"sources":["../../../../../src/components/Table/Table.tsx"],"sourcesContent":["import './Table.css';\n\nimport { IconSortDown } from '@consta/icons/IconSortDown';\nimport { IconSortUp } from '@consta/icons/IconSortUp';\nimport { IconUnsort } from '@consta/icons/IconUnsort';\nimport React, { useEffect, useMemo } from 'react';\n\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\n\nimport { useComponentSize } from '../../hooks/useComponentSize/useComponentSize';\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { sortBy as sortByDefault, updateAt } from '../../utils/array';\nimport { cn } from '../../utils/bem';\nimport { setRef } from '../../utils/setRef';\nimport { isNotNil, isString } from '../../utils/type-guards';\nimport { Button, ButtonPropSize } from '../Button/Button';\nimport { Text } from '../Text/Text';\nimport { HorizontalAlign, TableCell, VerticalAlign } from './Cell/TableCell';\nimport {\n fieldFiltersPresent,\n FieldSelectedValues,\n Filters,\n filterTableData,\n getSelectedFiltersList,\n isSelectedFiltersPresent,\n onSortBy,\n SelectedFilters,\n useSelectedFilters,\n} from './filtering';\nimport { TableHeader } from './Header/TableHeader';\nimport {\n calculateColSpans,\n createSortingState,\n getColumnLeftOffset,\n getColumnsSize,\n getMergedArray,\n getNewSorting,\n Header,\n Order,\n OrderType,\n Position,\n transformRows,\n useHeaderData,\n useLazyLoadData,\n} from './helpers';\nimport { TableResizer } from './Resizer/TableResizer';\nimport {\n Props as TableRowsCollapseProps,\n TableRowsCollapse,\n} from './RowsCollapse/TableRowsCollapse';\nimport {\n GetTagLabel,\n TableSelectedOptionsList,\n} from './SelectedOptionsList/TableSelectedOptionsList';\n\nexport { TableTextFilter } from './TextFilter/TableTextFilter';\nexport { TableFilterContainer } from './FilterContainer/TableFilterContainer';\nexport { TableNumberFilter } from './NumberFilter/TableNumberFilter';\nexport { TableChoiceGroupFilter } from './ChoiceGroupFilter/TableChoiceGroupFilter';\n\nconst cnTable = cn('Table');\n\nexport const sizes = ['s', 'm', 'l'] as const;\ntype Size = typeof sizes[number];\n\nexport const zebraStriped = ['odd', 'even'] as const;\ntype ZebraStriped = typeof zebraStriped[number];\n\nexport const headerVerticalAligns = ['center', 'bottom'] as const;\nexport type HeaderVerticalAlign = typeof headerVerticalAligns[number];\n\nconst createButtonSizeMap: Record<Size, ButtonPropSize> = {\n s: 'xs',\n m: 's',\n l: 'm',\n};\n\ntype TableCSSCustomProperty = {\n '--table-width': string;\n '--table-grid-template-columns': string;\n};\n\nexport type LazyLoad =\n | {\n maxVisibleRows?: number;\n scrollableEl?: HTMLDivElement | Window;\n }\n | undefined;\n\ntype ActiveRow = {\n id: string | undefined;\n onChange: ({\n id,\n e,\n }: {\n id: string | undefined;\n e?: React.SyntheticEvent;\n }) => void;\n};\n\ntype onRowHover = ({\n id,\n e,\n}: {\n id: string | undefined;\n e: React.MouseEvent;\n}) => void;\n\ntype onRowClick = ({ id, e }: { id: string; e: React.MouseEvent }) => void;\n\ntype onRowCreate = ({\n id,\n index,\n e,\n}: {\n id?: string;\n index: number;\n e: React.MouseEvent;\n}) => void;\n\nexport type CellClickType = 'click' | 'contextMenu';\n\nexport type onCellClick = ({\n e,\n type,\n rowId,\n columnIdx,\n ref,\n}: {\n e: React.SyntheticEvent;\n type: CellClickType;\n columnIdx: number;\n ref: React.RefObject<HTMLDivElement>;\n rowId?: string;\n}) => void;\n\nexport type TableRow = {\n id: string;\n defaultExpand?: boolean;\n rows?: TableRow[];\n};\n\nexport type TableTreeRow<T extends TableRow> = {\n options: {\n level: number;\n };\n} & T;\n\nexport type TableFilters<T extends TableRow> = Filters<T>;\n\nexport type RowField<T extends TableRow> = Exclude<keyof T, symbol | number>;\n\nexport type ColumnWidth = number | undefined;\n\nexport type ValueOf<T> = T[keyof T];\n\ntype ColumnBase<T extends TableRow> = ValueOf<{\n [K in keyof T]: {\n accessor: K extends string ? K : never;\n sortable?: boolean;\n colSpan?: number | ((row: T) => number);\n sortByField?: keyof T;\n order?: OrderType;\n sortFn?(a: T[K], b: T[K]): number;\n renderCell?: (row: T) => React.ReactNode;\n getComparisonValue?: (cell: T[K]) => number | string;\n };\n}>;\ntype SingleColumnAddition<T extends TableRow> = ColumnBase<T> & {\n columns?: never;\n};\ntype GroupColumnAddition<T extends TableRow> = {\n columns: TableColumn<T>[];\n} & {\n // eslint-disable-next-line no-unused-vars\n [K in keyof ColumnBase<T>]?: never;\n};\nexport interface TableControl<T extends TableRow> {\n column: Header<T> & ColumnMetaData;\n}\n\nexport type SortByProps<T extends TableRow> = {\n sortingBy: keyof T;\n sortOrder: 'asc' | 'desc';\n};\n\nexport type TableColumn<T extends TableRow> = {\n title: React.ReactNode;\n align?: HorizontalAlign;\n withoutPadding?: boolean;\n width?: ColumnWidth;\n mergeCells?: boolean;\n position?: Position;\n hidden?: boolean;\n control?: ({ column }: TableControl<T>) => React.ReactNode;\n} & (GroupColumnAddition<T> | SingleColumnAddition<T>);\n\nexport type TableProps<T extends TableRow> = {\n columns: TableColumn<T>[];\n rows: T[];\n isResizable?: boolean;\n filters?: Filters<T>;\n onSortBy?: onSortBy<T>;\n size?: Size;\n stickyHeader?: boolean;\n stickyColumns?: number;\n minColumnWidth?: number;\n activeRow?: ActiveRow;\n verticalAlign?: VerticalAlign;\n headerVerticalAlign?: HeaderVerticalAlign;\n zebraStriped?: ZebraStriped;\n borderBetweenRows?: boolean;\n defaultExpandAll?: boolean;\n borderBetweenColumns?: boolean;\n emptyRowsPlaceholder?: React.ReactNode;\n className?: string;\n onRowHover?: onRowHover;\n onRowClick?: onRowClick;\n onRowCreate?: onRowCreate;\n onCellClick?: onCellClick;\n getAdditionalClassName?: (props: {\n column: TableColumn<T>;\n row: T;\n isActive: boolean;\n }) => string;\n rowCreateText?: string;\n lazyLoad?: LazyLoad;\n onFiltersUpdated?: (filters: SelectedFilters) => void;\n getTagLabel?: GetTagLabel;\n isExpandedRowsByDefault?: boolean;\n getCellWrap?: (row: T) => 'truncate' | 'break';\n};\n\ntype Table = <T extends TableRow>(\n props: TableProps<T> & { ref?: React.Ref<HTMLDivElement> },\n) => React.ReactNode | null;\n\nexport type ColumnMetaData = {\n filterable: boolean;\n isSortingActive: boolean;\n isFilterActive: boolean;\n isResized: boolean;\n isSticky: boolean;\n showResizer: boolean;\n columnWidth: number;\n columnLeftOffset: number;\n};\n\nexport type SortingState<T extends TableRow> = {\n by: keyof T;\n order: 'asc' | 'desc';\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number;\n} | null;\n\ntype GetTableCellProps = {\n show: boolean;\n rowSpan: number;\n style: {\n 'left'?: number;\n '--row-span'?: string;\n };\n};\n\nconst getColumnSortByField = <T extends TableRow>(\n column: TableColumn<T>,\n): keyof T => (column.sortable && column.sortByField) || column.accessor!;\n\nconst sortingData = <T extends TableRow>(\n rows: T[],\n sorting: SortingState<T>,\n onSortBy?: onSortBy<T>,\n): T[] => {\n if (onSortBy) {\n return rows;\n }\n\n if (!sorting) {\n return rows;\n }\n const sortedRows = sortByDefault(\n rows,\n sorting.by,\n sorting.order,\n sorting.sortFn,\n );\n\n if (sortedRows.some((row) => row.rows?.length)) {\n return sortedRows.map((row) => {\n return row.rows\n ? { ...row, rows: sortingData(row.rows as T[], sorting, onSortBy) }\n : row;\n });\n }\n\n return sortedRows;\n};\n\nconst defaultEmptyRowsPlaceholder = (\n <Text as=\"span\" view=\"primary\" size=\"s\" lineHeight=\"s\">\n Нет данных\n </Text>\n);\n\nconst InternalTable = <T extends TableRow>(\n props: TableProps<T>,\n ref?: React.Ref<HTMLDivElement>,\n) => {\n const {\n columns,\n rows,\n size = 'l',\n filters: rawFilters,\n isResizable = false,\n stickyHeader = false,\n stickyColumns = 0,\n minColumnWidth = 150,\n activeRow,\n verticalAlign = 'top',\n headerVerticalAlign = 'center',\n zebraStriped,\n borderBetweenRows = false,\n borderBetweenColumns = false,\n emptyRowsPlaceholder = defaultEmptyRowsPlaceholder,\n defaultExpandAll,\n className,\n onRowHover,\n onRowClick,\n onRowCreate,\n onCellClick,\n getAdditionalClassName,\n rowCreateText = '+ Добавить строку',\n lazyLoad,\n onSortBy,\n onFiltersUpdated,\n getTagLabel,\n getCellWrap,\n isExpandedRowsByDefault = false,\n ...otherProps\n } = props;\n const {\n headers,\n flattenedHeaders,\n lowHeaders,\n headerRowsRefs,\n headerRowsHeights,\n resizerTopOffsets,\n } = useHeaderData(columns);\n const stickyColumnsGrid =\n // eslint-disable-next-line no-unsafe-optional-chaining\n headers[0][stickyColumns - 1]?.position.gridIndex! +\n (headers[0][stickyColumns - 1]?.position.colSpan || 1);\n\n const getColumnsWidth = () =>\n lowHeaders.map((column: TableColumn<T>) => column.width);\n const [resizedColumnWidths, setResizedColumnWidths] = React.useState<\n ColumnWidth[]\n >(getColumnsWidth());\n\n const filters = React.useMemo(() => {\n return (\n rawFilters && rawFilters.filter((filter) => filter.id && filter.field)\n );\n }, [rawFilters]);\n\n React.useEffect(() => {\n setResizedColumnWidths(getColumnsWidth());\n }, [lowHeaders.length]);\n\n const [initialColumnWidths, setInitialColumnWidths] = React.useState<\n number[]\n >([]);\n const [sorting, setSorting] = React.useState<SortingState<T>>(null);\n const [visibleFilter, setVisibleFilter] = React.useState<string | null>(null);\n const [tableScroll, setTableScroll] = React.useState({ top: 0, left: 0 });\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n const columnsRefs = React.useRef<Record<number, HTMLDivElement | null>>({});\n const cellsRefs = React.useRef<Record<string, HTMLDivElement | null>>({});\n const {\n selectedFilters,\n updateSelectedFilters,\n removeOneSelectedFilter,\n removeAllSelectedFilters,\n } = useSelectedFilters(filters, onFiltersUpdated);\n const [expandedRowIds, setExpandedRowIds] = React.useState<string[]>([]);\n\n // установка сортировки по умолчанию\n\n React.useEffect(() => {\n const sortingColumn = columns.find(\n (col) =>\n isString(col.order) &&\n Object.prototype.hasOwnProperty.call(Order, col.order),\n );\n if (sortingColumn) {\n const sortingState = createSortingState(\n getColumnSortByField(sortingColumn),\n sortingColumn.order,\n sortingColumn.sortFn,\n );\n setSorting(sortingState);\n }\n }, [columns]);\n\n /*\n Подписываемся на изменения размеров таблицы, но не используем значения из\n хука так как нам нужна ширина и высота таблицы без размера скролла. Этот хук\n использует значения `offsetWidth` и `offsetHeight` которые включают размер\n скролл бара.\n */\n useComponentSize(tableRef);\n const tableHeight = tableRef.current?.clientHeight || 0;\n const tableWidth = tableRef.current?.clientWidth || 0;\n\n const showVerticalCellShadow = tableScroll.left > 0;\n const showHorizontalCellShadow = tableScroll.top > 0;\n const isRowsClickable = activeRow && activeRow.onChange;\n\n const updateColumnWidth = (idx: number, newWidth: number): void => {\n setResizedColumnWidths(updateAt(resizedColumnWidths, idx, newWidth));\n };\n\n const overallColumnsWidth = useMemo(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n return resultArr.reduce((a, b) => (a ?? 0) + (b ?? 0));\n }, [resizedColumnWidths, isResizable]);\n\n React.useLayoutEffect(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n if (columnsElements.length === 0) return;\n\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n setInitialColumnWidths(columnsElementsWidths);\n\n // Проверяем, что таблица отрисовалась корректно, и устанавливаем значения ширин колонок после 1го и последующих рендера\n if (\n columnsElements[0].getBoundingClientRect().left !==\n columnsElements[columnsElements.length - 1].getBoundingClientRect().left\n ) {\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n // Выставляю в undefined для того, чтобы колонка, для которой не определена ширина выставлялась в auto\n // Если ее нет то заполняю недостающее пространство в последней колонке\n if ((overallColumnsWidth ?? tableWidth) < tableWidth) {\n let autoSetted = false;\n for (let i = columns.length - 1; i > 0; i--) {\n const { width } = columns[i];\n if (!(width && width > 0)) {\n resultArr[i] = undefined;\n autoSetted = true;\n return;\n }\n }\n if (!autoSetted && overallColumnsWidth) {\n resultArr[resultArr.length - 1] =\n (resultArr[resultArr.length - 1] ?? 0) +\n tableWidth -\n overallColumnsWidth;\n }\n }\n return setResizedColumnWidths(resultArr);\n }\n\n // условие изменения ширины колонок при изменении ширины экрана (контейнера таблицы)\n if (tableWidth > 0 && !isResizable) {\n return setResizedColumnWidths(getColumnsWidth());\n }\n }, [tableWidth, overallColumnsWidth]);\n\n const isSortedByColumn = (column: TableColumn<T>): boolean =>\n getColumnSortByField(column) === sorting?.by;\n\n const getSortIcon = (column: TableColumn<T>) => {\n return (\n (isSortedByColumn(column) &&\n (sorting?.order === 'desc' ? IconSortDown : IconSortUp)) ||\n IconUnsort\n );\n };\n\n const handleSortClick = (column: TableColumn<T>): void => {\n const newSorting = getNewSorting(\n sorting,\n getColumnSortByField(column),\n (column.sortable && column?.sortFn) || undefined,\n );\n\n const sortProps = newSorting\n ? {\n sortingBy: newSorting.by,\n sortOrder: newSorting.order,\n }\n : null;\n onSortBy && onSortBy(sortProps);\n setSorting(newSorting);\n };\n\n const handleFilterTogglerClick = (id: string) => (): void => {\n setVisibleFilter(visibleFilter === id ? null : id);\n };\n\n const handleTooltipSave = (\n field: string,\n tooltipSelectedFilters: FieldSelectedValues,\n value?: unknown,\n ): void => {\n updateSelectedFilters(field, tooltipSelectedFilters, value);\n };\n\n const removeSelectedFilter =\n (tableFilters: Filters<T>) =>\n (filter: string): void => {\n removeOneSelectedFilter(tableFilters, filter);\n };\n\n const resetSelectedFilters = (): void => {\n if (filters && filters.length) {\n removeAllSelectedFilters(filters);\n }\n };\n\n const getStickyLeftOffset = (\n columnIndex: number,\n topHeaderGridIndex: number,\n ): number | undefined => {\n if (topHeaderGridIndex >= stickyColumns) {\n return;\n }\n\n return getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n };\n\n const handleScroll: React.UIEventHandler = (e) => {\n if (!(e.target instanceof HTMLElement) || e.target !== tableRef.current) {\n return;\n }\n\n setTableScroll({\n top: e.target.scrollTop,\n left: e.target.scrollLeft,\n });\n };\n\n const handleSelectRow = ({\n id,\n e,\n }: {\n id: string;\n e: React.SyntheticEvent;\n }): void | undefined => {\n if (!activeRow || !activeRow.onChange) {\n return;\n }\n\n activeRow.onChange({ id: activeRow.id === id ? undefined : id, e });\n };\n\n const handleRowHover = (id?: string) => (e: React.MouseEvent) =>\n onRowHover && onRowHover({ id, e });\n\n const handleRowCreate =\n (index: number, id?: string) => (e: React.MouseEvent) =>\n onRowCreate && onRowCreate({ e, id, index });\n\n const handleColumnResize = (idx: number, delta: number): void => {\n const columnMinWidth = Math.min(minColumnWidth, initialColumnWidths[idx]);\n const prevColumnWidth =\n resizedColumnWidths[idx] || initialColumnWidths[idx];\n const newColumnWidth = Math.max(columnMinWidth, prevColumnWidth + delta);\n\n updateColumnWidth(idx, newColumnWidth);\n\n // При расширении последней колонки прокручиваем таблицу вправо\n const containerEl = tableRef.current;\n if (idx === resizedColumnWidths.length - 1 && delta > 0 && containerEl) {\n containerEl.scrollBy(delta, 0);\n }\n };\n\n const stickyColumnsWidth = getColumnLeftOffset({\n columnIndex: stickyColumns,\n resizedColumnWidths,\n initialColumnWidths,\n });\n\n const columnsWithMetaData = (columns: Array<Header<T>>) => {\n return columns.map((column: Header<T>) => {\n const columnIndex = column.position.gridIndex;\n const resizedColumnWidth = resizedColumnWidths[columnIndex];\n const initialColumnWidth = initialColumnWidths[columnIndex];\n const columnWidth = resizedColumnWidth || initialColumnWidth;\n const columnLeftOffset = getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n const isResized = !!columnWidth && columnWidth !== initialColumnWidth;\n const isSticky = stickyColumns > column.position!.topHeaderGridIndex;\n const showResizer =\n stickyColumns > columnIndex ||\n stickyColumnsWidth + tableScroll.left < columnLeftOffset + columnWidth;\n const isFilterActive =\n (selectedFilters[column.accessor!]?.selected || []).length > 0;\n\n return {\n ...column,\n filterable: Boolean(\n filters && fieldFiltersPresent(filters, column.accessor!),\n ),\n isSortingActive: isSortedByColumn(column),\n isFilterActive,\n isResized,\n isSticky,\n showResizer,\n columnWidth,\n columnLeftOffset,\n };\n });\n };\n\n const headersWithMetaData: Array<Header<T> & ColumnMetaData> =\n columnsWithMetaData(flattenedHeaders);\n\n const hasNestedRows = React.useMemo(\n () => rows.some((row) => Boolean(row.rows?.length)),\n [rows],\n );\n\n const sortedTableData = sortingData(rows, sorting, onSortBy);\n\n const filteredData =\n filters && isSelectedFiltersPresent(selectedFilters)\n ? filterTableData({\n data: sortedTableData,\n filters: filters || [],\n selectedFilters,\n })\n : sortedTableData;\n\n const { maxVisibleRows = 210, scrollableEl = tableRef.current } =\n lazyLoad || {};\n\n const { getSlicedRows, setBoundaryRef } = useLazyLoadData(\n maxVisibleRows,\n scrollableEl,\n !!lazyLoad,\n );\n\n const flatRowsData = transformRows(\n filteredData,\n expandedRowIds,\n isExpandedRowsByDefault,\n );\n const rowsData = getSlicedRows(flatRowsData);\n\n const tableStyle: React.CSSProperties & TableCSSCustomProperty = {\n '--table-grid-template-columns': getColumnsSize(resizedColumnWidths),\n '--table-width': `${tableWidth}px`,\n };\n\n const hasMergedCells: boolean = columnsWithMetaData(lowHeaders).some(\n (header) => header.mergeCells,\n );\n\n const handleExpandRow = (id: string): (() => void) => {\n return (): void => {\n if (expandedRowIds.includes(id)) {\n setExpandedRowIds((prevState) =>\n prevState.filter((rowId) => rowId !== id),\n );\n return;\n }\n setExpandedRowIds((prevState) => [...prevState, id]);\n };\n };\n\n const getCollapseRollProps = (\n row: TableTreeRow<T>,\n columnIdx: number,\n ): TableRowsCollapseProps => {\n const withCollapseButton = Boolean(row.rows?.length) && columnIdx === 0;\n\n const baseProps = {\n level: row.options.level,\n isExpandedByDefault: isExpandedRowsByDefault,\n };\n\n if (!withCollapseButton || isExpandedRowsByDefault) {\n return baseProps;\n }\n\n const isExpanded = expandedRowIds.includes(row.id);\n const toggleCollapse = handleExpandRow(row.id);\n\n return {\n ...baseProps,\n withCollapseButton,\n isExpanded,\n toggleCollapse,\n };\n };\n\n const getExpandedRows = (\n rows: T[],\n depth: number,\n defaultExpandAll?: boolean,\n ): string[] => {\n let expandedIds: string[] = [];\n rows.forEach((row) => {\n if (\n row.defaultExpand ||\n ((row.rows?.length ?? 0) > 0 && defaultExpandAll)\n ) {\n expandedIds.push(row.id);\n }\n if (row.rows) {\n const ids = getExpandedRows(\n row.rows as T[],\n depth + 1,\n defaultExpandAll,\n );\n expandedIds = [...expandedIds, ...ids];\n if (ids.length > 0 && expandedIds.indexOf(row.id) === -1) {\n expandedIds.push(row.id);\n }\n }\n });\n return [\n ...(depth === 0 ? expandedRowIds : []),\n ...expandedIds.filter((id) => expandedRowIds.indexOf(id) === -1),\n ];\n };\n\n useEffect(() => {\n if (rows) {\n setExpandedRowIds(getExpandedRows(rows, 0, defaultExpandAll));\n }\n }, [rows, defaultExpandAll]);\n\n const renderCell = (\n column: TableColumn<T>,\n row: T,\n columnIdx: number,\n ): React.ReactNode => {\n const cellContent = column.renderCell\n ? column.renderCell(row)\n : row[column.accessor!];\n\n if (!hasNestedRows || columnIdx !== 0) {\n return cellContent as React.ReactNode;\n }\n\n const collapseRollProps = getCollapseRollProps(\n row as TableTreeRow<T>,\n columnIdx,\n );\n\n return (\n <TableRowsCollapse {...collapseRollProps}>\n {cellContent as React.ReactNode}\n </TableRowsCollapse>\n );\n };\n\n const renderEmptyRowsPlaceholder = (\n placeholder: React.ReactNode,\n ): React.ReactNode => {\n return typeof placeholder === 'string' ? (\n <Text size=\"s\" view=\"primary\" lineHeight=\"m\">\n {placeholder}\n </Text>\n ) : (\n placeholder\n );\n };\n\n const bottomCreateRowButton = useMemo(() => {\n const rowsLength = rowsData.length;\n /* Можно и rowsData[rowsLength - 1], но в таком случае TS не подскажет,\n что мы будем искать id в undefined это может привести к ошибке */\n const { id: lastRowId } = rowsData.slice(-1).pop() ?? {};\n\n if (!onRowCreate) {\n return null;\n }\n\n return (\n <div\n className={cnTable(rowsLength ? 'CreateRowCell' : 'RowWithoutCells')}\n >\n <Button\n size={createButtonSizeMap[size]}\n form=\"brick\"\n label={rowCreateText}\n view=\"clear\"\n className={cnTable('CreateRowButton')}\n onClick={handleRowCreate(rowsLength, lastRowId)}\n width=\"full\"\n />\n </div>\n );\n }, [rowCreateText, rowsData.length, onRowCreate]);\n\n const getTableCellProps = (\n row: TableTreeRow<T>,\n rowIdx: number,\n column: TableColumn<T>,\n columnIdx: number,\n ): GetTableCellProps => {\n const {\n mergeCells,\n accessor,\n position,\n getComparisonValue = (e) => e,\n } = column;\n\n const previousCell =\n rowsData[rowIdx - 1] &&\n getComparisonValue(rowsData[rowIdx - 1][accessor!]);\n const currentCell = getComparisonValue(row[accessor!]);\n\n const result: GetTableCellProps = {\n rowSpan: 1,\n show: false,\n style: {\n left: getStickyLeftOffset(columnIdx, position!.topHeaderGridIndex),\n },\n };\n\n if (\n mergeCells &&\n ((rowsData[rowIdx - 1] && previousCell !== currentCell) ||\n rowIdx === 0 ||\n (previousCell === currentCell && rowsData[rowIdx - 1]?.rows))\n ) {\n if (!row.rows) {\n for (let i = rowIdx; i < rowsData.length; i++) {\n if (rowsData[i + 1]) {\n const nextCell = getComparisonValue(rowsData[i + 1][accessor!]);\n if (currentCell === nextCell && !rowsData[i].rows) {\n result.rowSpan++;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n if (result.rowSpan > 1) {\n result.style['--row-span'] = `span ${result.rowSpan}`;\n }\n result.show = true;\n }\n if (!mergeCells) {\n result.show = true;\n }\n\n return result;\n };\n\n const handleCellClick: onCellClick = (params) => {\n onCellClick?.(params);\n };\n\n return (\n <div\n {...otherProps}\n ref={useForkRef([tableRef, ref])}\n className={cnTable(\n {\n size,\n isResizable,\n zebraStriped,\n withBorderBottom: !filteredData.length,\n },\n [className, cnMixScrollBar()],\n )}\n style={tableStyle}\n onScroll={handleScroll}\n >\n {/*\n Элементы Resizer рендерятся в отдельных ячейках нулевой высоты с шириной\n равной ширине колонки сетки, при этом у ячейки самый большой z-index в\n таблице чтобы элементы Resizer могли перекрывать ячейки заголовка и\n контента. Кроме того это позволяет зафиксировать вертикальное и\n горизонтальное положение Resizer, а также его высоту.\n\n Получение высоты Resizer элементов через свойство элемента таблицы\n scrollHeight не подходило, так как в таком случае Resizer растягивал\n таблицу по высоте, поэтому от этого способа отказались.\n */}\n {columnsWithMetaData(lowHeaders).map(\n (\n column: TableColumn<T> & { showResizer: boolean },\n columnIdx: number,\n ) => (\n <TableCell\n type=\"resizer\"\n key={columnIdx}\n ref={(ref: HTMLDivElement | null): void => {\n columnsRefs.current[columnIdx] = ref;\n }}\n style={{\n left: getStickyLeftOffset(columnIdx, columnIdx),\n }}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n onClick={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n column={column}\n showVerticalShadow={showVerticalCellShadow}\n >\n {isResizable && (\n <TableResizer\n height={tableHeight - resizerTopOffsets[columnIdx]}\n top={resizerTopOffsets[columnIdx]}\n isVisible={column.showResizer}\n onResize={(delta): void => handleColumnResize(columnIdx, delta)}\n onDoubleClick={(): void =>\n updateColumnWidth(columnIdx, initialColumnWidths[columnIdx])\n }\n />\n )}\n </TableCell>\n ),\n )}\n <TableHeader\n isStickyHeader={stickyHeader}\n headersWithMetaData={headersWithMetaData}\n headerRowsHeights={headerRowsHeights}\n headerRowsRefs={headerRowsRefs}\n getStickyLeftOffset={getStickyLeftOffset}\n stickyColumnsGrid={stickyColumnsGrid}\n showVerticalCellShadow={showVerticalCellShadow}\n headerVerticalAlign={headerVerticalAlign}\n getSortIcon={getSortIcon}\n handleSortClick={handleSortClick}\n handleFilterTogglerClick={handleFilterTogglerClick}\n handleCellClick={handleCellClick}\n handleTooltipSave={handleTooltipSave}\n filters={filters}\n visibleFilter={visibleFilter}\n selectedFilters={selectedFilters}\n showHorizontalCellShadow={showHorizontalCellShadow}\n borderBetweenColumns={borderBetweenColumns}\n />\n {filters && isSelectedFiltersPresent(selectedFilters) && (\n <div className={cnTable('RowWithoutCells')}>\n <TableSelectedOptionsList\n values={getSelectedFiltersList({\n filters,\n selectedFilters,\n columns: lowHeaders,\n })}\n getTagLabel={getTagLabel}\n onRemove={removeSelectedFilter(filters)}\n onReset={resetSelectedFilters}\n />\n </div>\n )}\n {rowsData.length > 0 ? (\n rowsData.map((row, rowIdx) => {\n const nth = (rowIdx + 1) % 2 === 0 ? 'even' : 'odd';\n const columns = columnsWithMetaData(lowHeaders);\n const spans = calculateColSpans(columns, row);\n return (\n <div\n key={row.id}\n role=\"presentation\"\n className={cnTable('CellsRow', {\n nth,\n withMergedCells: hasMergedCells,\n })}\n onMouseEnter={handleRowHover(row.id)}\n onMouseLeave={handleRowHover(undefined)}\n onClick={(e) => onRowClick && onRowClick({ id: row.id, e })}\n >\n {columns.map((column: TableColumn<T>, columnIdx: number) => {\n const { show, style, rowSpan } = getTableCellProps(\n row,\n rowIdx,\n column,\n columnIdx,\n );\n const colSpan = spans[columnIdx];\n const start =\n columnIdx > 0\n ? spans.slice(0, columnIdx).reduce((a, b) => a + b) + 1\n : 1;\n if (show && colSpan > 0) {\n return (\n <TableCell\n type=\"content\"\n key={column.accessor}\n ref={(ref: HTMLDivElement | null) => {\n cellsRefs.current[`${columnIdx}-${row.id}`] = ref;\n setRef(setBoundaryRef(columnIdx, rowIdx), ref);\n }}\n style={{\n ...style,\n ['--table-cell-col-start' as string]: start,\n ['--table-cell-col-end' as string]: start + colSpan,\n }}\n wrapperClassName={cnTable('ContentCell', {\n isActive: activeRow ? activeRow.id === row.id : false,\n isDarked: activeRow\n ? activeRow.id !== undefined &&\n activeRow.id !== row.id\n : false,\n isMerged: column.mergeCells && rowSpan > 1,\n })}\n className={getAdditionalClassName?.({\n column,\n row,\n isActive: activeRow ? activeRow.id === row.id : false,\n })}\n wrap={getCellWrap?.(row)}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n })\n }\n onClick={(e: React.SyntheticEvent): void => {\n handleSelectRow({ id: row.id, e });\n\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n });\n }}\n column={column}\n verticalAlign={verticalAlign}\n isClickable={!!isRowsClickable}\n showVerticalShadow={\n showVerticalCellShadow &&\n // eslint-disable-next-line no-unsafe-optional-chaining\n column?.position!.gridIndex! +\n (column?.position!.colSpan || 1) ===\n stickyColumnsGrid\n }\n isBorderTop={rowIdx > 0 && borderBetweenRows}\n isBorderLeft={columnIdx > 0 && borderBetweenColumns}\n >\n {renderCell(column, row, columnIdx)}\n </TableCell>\n );\n }\n return null;\n })}\n </div>\n );\n })\n ) : (\n <div className={cnTable('RowWithoutCells')}>\n <div className={cnTable('EmptyCell')}>\n {renderEmptyRowsPlaceholder(emptyRowsPlaceholder)}\n </div>\n </div>\n )}\n {bottomCreateRowButton}\n </div>\n );\n};\n\nexport const Table = React.forwardRef(InternalTable) as Table;\n"],"mappings":"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"}
@@ -106,7 +106,7 @@ declare const tableWithTrafficLightDataRows: {
106
106
  id: string;
107
107
  field: string;
108
108
  sum: number;
109
- status: JSX.Element;
109
+ status: import("react/jsx-runtime").JSX.Element;
110
110
  statusOrder: number;
111
111
  }[];
112
112
  export declare const tableWithBadgeData: TableProps<typeof tableWithTrafficLightDataRows[number]>;
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","names":["React","forwardRef","useRefs","cnMixScrollBar","useChoiceGroup","useResizeObserved","cn","getTabsDirection","getTabsWrapper","withDefaultGetters","TabsBorderLine","TabsRunningLine","TabsTab","tabsDefaultFitMode","tabsDefaultLinePosition","tabsDefaultSize","tabsDefaultView","cnTabs","renderItemDefault","props","item","attributes","as","otherProps","TabsRender","ref","size","className","items","view","value","linePosition","fitMode","withScrollButtons","onlyIcon","getItemIcon","getItemAs","getItemAttributes","getItemRef","getItemLabel","getItemKeyProp","getItemKey","onChange","iconSize","renderItem","renderItemProp","getItemLeftIcon","getItemLeftSide","getItemRightIcon","getItemRightSide","getItemDisabled","disabled","getKey","callBack","multiple","getOnChange","getChecked","tabsDirection","isVertical","tabRefs","length","tabsDimensions","el","gap","parseInt","getComputedStyle","activeTabIdx","findIndex","onClick","renderInDropdown","checked","label","toString","icon","leftIcon","rightIcon","leftSide","rightSide","tabRef","Wrapper","direction","invisible","renderItemsList","withRunningLine","visibleIndexes","getTabClassName","map","idx","Tabs"],"sources":["../../../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import './Tabs.css';\n\nimport React, { forwardRef } from 'react';\n\nimport { useRefs } from '##/hooks/useRefs';\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\n\nimport { useChoiceGroup } from '../../hooks/useChoiceGroup/useChoiceGroup';\nimport { useResizeObserved } from '../../hooks/useResizeObserved/useResizeObserved';\nimport { cn } from '../../utils/bem';\nimport {\n getTabsDirection,\n getTabsWrapper,\n withDefaultGetters,\n} from './helpers';\nimport { TabsBorderLine, TabsRunningLine } from './TabsLine/TabsLine';\nimport { TabsTab } from './TabsTab/TabsTab';\nimport {\n RenderItemProps,\n RenderItemsListProp,\n TabDimensions,\n TabsComponent,\n tabsDefaultFitMode,\n tabsDefaultLinePosition,\n tabsDefaultSize,\n tabsDefaultView,\n TabsProps,\n} from './types';\n\nexport const cnTabs = cn('Tabs');\n\nfunction renderItemDefault<ITEM>(\n props: RenderItemProps<ITEM>,\n): React.ReactElement {\n const { item, attributes = {}, as, ...otherProps } = props;\n return <TabsTab {...attributes} {...otherProps} as={as} />;\n}\n\nconst TabsRender = (props: TabsProps, ref: React.Ref<HTMLDivElement>) => {\n const {\n size = tabsDefaultSize,\n className,\n items,\n view = tabsDefaultView,\n value,\n linePosition = tabsDefaultLinePosition,\n fitMode = tabsDefaultFitMode,\n withScrollButtons = true,\n onlyIcon,\n getItemIcon,\n getItemAs,\n getItemAttributes,\n getItemRef,\n getItemLabel,\n getItemKey: getItemKeyProp,\n onChange,\n iconSize,\n renderItem: renderItemProp = renderItemDefault,\n getItemLeftIcon,\n getItemLeftSide,\n getItemRightIcon,\n getItemRightSide,\n getItemDisabled,\n disabled,\n ...otherProps\n } = withDefaultGetters(props);\n\n const getItemKey = getItemKeyProp || getItemLabel;\n\n const { getOnChange, getChecked } = useChoiceGroup({\n value: value || null,\n getKey: getItemKey,\n callBack: onChange,\n multiple: false,\n });\n\n const tabsDirection = getTabsDirection(linePosition);\n const isVertical = tabsDirection === 'vertical';\n const tabRefs = useRefs<HTMLDivElement>(items.length, [\n items.length,\n fitMode,\n isVertical,\n ]);\n\n const tabsDimensions = useResizeObserved(\n tabRefs,\n (el): TabDimensions => ({\n size: el?.[isVertical ? 'offsetHeight' : 'offsetWidth'] ?? 0,\n gap: el\n ? parseInt(\n getComputedStyle(el)[isVertical ? 'marginBottom' : 'marginRight'],\n 10,\n )\n : 0,\n }),\n );\n\n const activeTabIdx = items.findIndex(getChecked);\n\n const renderItem = (\n item: typeof items[number],\n onClick?: () => void,\n renderInDropdown?: boolean,\n ) =>\n renderItemProp({\n item,\n onChange: (...args) => {\n onClick?.();\n getOnChange(item)(...args);\n },\n checked: getChecked(item),\n label: getItemLabel(item).toString(),\n icon: getItemIcon(item),\n leftIcon: getItemLeftIcon(item),\n rightIcon: getItemRightIcon(item),\n leftSide: getItemLeftSide(item),\n rightSide: getItemRightSide(item),\n disabled: disabled || getItemDisabled(item),\n onlyIcon,\n size,\n iconSize,\n renderInDropdown,\n as: getItemAs(item) || 'button',\n tabRef: getItemRef(item),\n attributes: getItemAttributes(item),\n });\n\n const renderItemsList: RenderItemsListProp = ({\n withRunningLine = true,\n visibleIndexes,\n getTabClassName,\n }) => (\n <div className={cnTabs('List', { direction: tabsDirection, linePosition })}>\n {items.map((item, idx) => (\n <div\n ref={tabRefs[idx]}\n key={getItemKey(item)}\n className={cnTabs('Tab', { direction: tabsDirection }, [\n getTabClassName?.(idx),\n ])}\n >\n {renderItem(item)}\n </div>\n ))}\n {withRunningLine && !disabled && (\n <TabsRunningLine\n visibleIndexes={visibleIndexes}\n linePosition={linePosition}\n tabsDimensions={tabsDimensions}\n activeTabIdx={activeTabIdx}\n />\n )}\n </div>\n );\n\n const Wrapper = getTabsWrapper(tabsDirection, fitMode);\n\n if (!items.length) {\n return null;\n }\n\n return (\n <div\n className={cnTabs({ size, view, direction: tabsDirection }, [\n className,\n cnMixScrollBar({ invisible: true }),\n ])}\n ref={ref}\n {...otherProps}\n >\n <Wrapper\n tabRefs={tabRefs}\n onChange={onChange}\n tabsDimensions={tabsDimensions}\n renderItem={renderItem}\n renderItemsList={renderItemsList}\n getItemKey={getItemKey}\n getItemChecked={getChecked}\n items={items}\n size={size}\n withScrollButtons={withScrollButtons}\n />\n {view === 'bordered' && <TabsBorderLine linePosition={linePosition} />}\n </div>\n );\n};\n\nexport const Tabs = forwardRef(TabsRender) as TabsComponent;\n\nexport * from './types';\n"],"mappings":"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"}
1
+ {"version":3,"file":"Tabs.js","names":["React","forwardRef","useRefs","cnMixScrollBar","useChoiceGroup","useResizeObserved","cn","getTabsDirection","getTabsWrapper","withDefaultGetters","TabsBorderLine","TabsRunningLine","TabsTab","tabsDefaultFitMode","tabsDefaultLinePosition","tabsDefaultSize","tabsDefaultView","cnTabs","renderItemDefault","props","item","attributes","as","otherProps","TabsRender","ref","size","className","items","view","value","linePosition","fitMode","withScrollButtons","onlyIcon","getItemIcon","getItemAs","getItemAttributes","getItemRef","getItemLabel","getItemKeyProp","getItemKey","onChange","iconSize","renderItem","renderItemProp","getItemLeftIcon","getItemLeftSide","getItemRightIcon","getItemRightSide","getItemDisabled","disabled","getKey","callBack","multiple","getOnChange","getChecked","tabsDirection","isVertical","tabRefs","length","tabsDimensions","el","gap","parseInt","getComputedStyle","activeTabIdx","findIndex","onClick","renderInDropdown","checked","label","toString","icon","leftIcon","rightIcon","leftSide","rightSide","tabRef","Wrapper","direction","invisible","renderItemsList","withRunningLine","visibleIndexes","getTabClassName","map","idx","Tabs"],"sources":["../../../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import './Tabs.css';\n\nimport React, { forwardRef } from 'react';\n\nimport { useRefs } from '##/hooks/useRefs';\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\n\nimport { useChoiceGroup } from '../../hooks/useChoiceGroup/useChoiceGroup';\nimport { useResizeObserved } from '../../hooks/useResizeObserved/useResizeObserved';\nimport { cn } from '../../utils/bem';\nimport {\n getTabsDirection,\n getTabsWrapper,\n withDefaultGetters,\n} from './helpers';\nimport { TabsBorderLine, TabsRunningLine } from './TabsLine/TabsLine';\nimport { TabsTab } from './TabsTab/TabsTab';\nimport {\n RenderItemProps,\n RenderItemsListProp,\n TabDimensions,\n TabsComponent,\n tabsDefaultFitMode,\n tabsDefaultLinePosition,\n tabsDefaultSize,\n tabsDefaultView,\n TabsProps,\n} from './types';\n\nexport const cnTabs = cn('Tabs');\n\nfunction renderItemDefault<ITEM>(\n props: RenderItemProps<ITEM>,\n): React.ReactNode {\n const { item, attributes = {}, as, ...otherProps } = props;\n return <TabsTab {...attributes} {...otherProps} as={as} />;\n}\n\nconst TabsRender = (props: TabsProps, ref: React.Ref<HTMLDivElement>) => {\n const {\n size = tabsDefaultSize,\n className,\n items,\n view = tabsDefaultView,\n value,\n linePosition = tabsDefaultLinePosition,\n fitMode = tabsDefaultFitMode,\n withScrollButtons = true,\n onlyIcon,\n getItemIcon,\n getItemAs,\n getItemAttributes,\n getItemRef,\n getItemLabel,\n getItemKey: getItemKeyProp,\n onChange,\n iconSize,\n renderItem: renderItemProp = renderItemDefault,\n getItemLeftIcon,\n getItemLeftSide,\n getItemRightIcon,\n getItemRightSide,\n getItemDisabled,\n disabled,\n ...otherProps\n } = withDefaultGetters(props);\n\n const getItemKey = getItemKeyProp || getItemLabel;\n\n const { getOnChange, getChecked } = useChoiceGroup({\n value: value || null,\n getKey: getItemKey,\n callBack: onChange,\n multiple: false,\n });\n\n const tabsDirection = getTabsDirection(linePosition);\n const isVertical = tabsDirection === 'vertical';\n const tabRefs = useRefs<HTMLDivElement>(items.length, [\n items.length,\n fitMode,\n isVertical,\n ]);\n\n const tabsDimensions = useResizeObserved(\n tabRefs,\n (el): TabDimensions => ({\n size: el?.[isVertical ? 'offsetHeight' : 'offsetWidth'] ?? 0,\n gap: el\n ? parseInt(\n getComputedStyle(el)[isVertical ? 'marginBottom' : 'marginRight'],\n 10,\n )\n : 0,\n }),\n );\n\n const activeTabIdx = items.findIndex(getChecked);\n\n const renderItem = (\n item: typeof items[number],\n onClick?: () => void,\n renderInDropdown?: boolean,\n ) =>\n renderItemProp({\n item,\n onChange: (...args) => {\n onClick?.();\n getOnChange(item)(...args);\n },\n checked: getChecked(item),\n label: getItemLabel(item).toString(),\n icon: getItemIcon(item),\n leftIcon: getItemLeftIcon(item),\n rightIcon: getItemRightIcon(item),\n leftSide: getItemLeftSide(item),\n rightSide: getItemRightSide(item),\n disabled: disabled || getItemDisabled(item),\n onlyIcon,\n size,\n iconSize,\n renderInDropdown,\n as: getItemAs(item) || 'button',\n tabRef: getItemRef(item),\n attributes: getItemAttributes(item),\n });\n\n const renderItemsList: RenderItemsListProp = ({\n withRunningLine = true,\n visibleIndexes,\n getTabClassName,\n }) => (\n <div className={cnTabs('List', { direction: tabsDirection, linePosition })}>\n {items.map((item, idx) => (\n <div\n ref={tabRefs[idx]}\n key={getItemKey(item)}\n className={cnTabs('Tab', { direction: tabsDirection }, [\n getTabClassName?.(idx),\n ])}\n >\n {renderItem(item)}\n </div>\n ))}\n {withRunningLine && !disabled && (\n <TabsRunningLine\n visibleIndexes={visibleIndexes}\n linePosition={linePosition}\n tabsDimensions={tabsDimensions}\n activeTabIdx={activeTabIdx}\n />\n )}\n </div>\n );\n\n const Wrapper = getTabsWrapper(tabsDirection, fitMode);\n\n if (!items.length) {\n return null;\n }\n\n return (\n <div\n className={cnTabs({ size, view, direction: tabsDirection }, [\n className,\n cnMixScrollBar({ invisible: true }),\n ])}\n ref={ref}\n {...otherProps}\n >\n <Wrapper\n tabRefs={tabRefs}\n onChange={onChange}\n tabsDimensions={tabsDimensions}\n renderItem={renderItem}\n renderItemsList={renderItemsList}\n getItemKey={getItemKey}\n getItemChecked={getChecked}\n items={items}\n size={size}\n withScrollButtons={withScrollButtons}\n />\n {view === 'bordered' && <TabsBorderLine linePosition={linePosition} />}\n </div>\n );\n};\n\nexport const Tabs = forwardRef(TabsRender) as TabsComponent;\n\nexport * from './types';\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import './TabsFitModeDropdownWrapper.css';
2
2
  import React from 'react';
3
3
  import { TabsFitModeWrapperProps } from '../types';
4
- export declare const TabsFitModeDropdownWrapper: <ITEM>({ items, tabsDimensions, tabRefs, getItemKey, getItemChecked, renderItem, onChange, renderItemsList, size, }: TabsFitModeWrapperProps<ITEM>) => React.ReactElement | null;
4
+ export declare const TabsFitModeDropdownWrapper: <ITEM>({ items, tabsDimensions, tabRefs, getItemKey, getItemChecked, renderItem, onChange, renderItemsList, size, }: TabsFitModeWrapperProps<ITEM>) => React.ReactNode | null;
@@ -1 +1 @@
1
- {"version":3,"file":"TabsFitModeDropdownWrapper.js","names":["React","cn","getTabsWidth","TabsMoreItems","useFittingItems","cnTabsFitModeDropdownWrapper","TabsFitModeDropdownWrapper","items","tabsDimensions","tabRefs","getItemKey","getItemChecked","renderItem","onChange","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/TabsFitModeDropdownWrapper/TabsFitModeDropdownWrapper.tsx"],"sourcesContent":["import './TabsFitModeDropdownWrapper.css';\n\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { getTabsWidth } from '../helpers';\nimport { TabsMoreItems } from '../TabsMoreItems/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 getItemKey,\n getItemChecked,\n renderItem,\n onChange,\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 onChange={onChange}\n getItemKey={getItemKey}\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,sCAEA,OAASC,eAAT,yBAEA,GAAMC,6BAA4B,CAAGJ,EAAE,CAAC,4BAAD,CAAvC,CAEA,MAAO,IAAMK,2BAA0B,CAAG,WAUsB,IAT9DC,EAS8D,GAT9DA,KAS8D,CAR9DC,CAQ8D,GAR9DA,cAQ8D,CAP9DC,CAO8D,GAP9DA,OAO8D,CAN9DC,CAM8D,GAN9DA,UAM8D,CAL9DC,CAK8D,GAL9DA,cAK8D,CAJ9DC,CAI8D,GAJ9DA,UAI8D,CAH9DC,CAG8D,GAH9DA,QAG8D,CAF9DC,CAE8D,GAF9DA,eAE8D,CAD9DC,CAC8D,GAD9DA,IAC8D,CACxDC,CAAG,CAAGhB,KAAK,CAACiB,MAAN,CAA6B,IAA7B,CADkD,CAExDC,CAAY,CAAGlB,KAAK,CAACiB,MAAN,CAA6B,IAA7B,CAFyC,CAIxDE,CAAW,CAAGZ,CAAK,CAACa,SAAN,CAAgBT,CAAhB,CAJ0C,GAMrBP,eAAe,CAAC,CACvDI,cAAc,CAAdA,CADuD,CAEvDa,YAAY,CAAEL,CAFyC,CAGvDE,YAAY,CAAZA,CAHuD,CAIvDC,WAAW,CAAXA,CAJuD,CAAD,CANM,CAMtDG,CANsD,GAMtDA,cANsD,CAMtCC,CANsC,GAMtCA,YANsC,CAaxDC,CAAW,CAAGjB,CAAK,CAACkB,MAAN,CAAa,SAACC,CAAD,CAAQC,CAAR,QAAgBJ,EAAY,CAACI,CAAD,CAA5B,CAAb,CAb0C,CAcxDC,CAAoB,CAAG5B,KAAK,CAAC6B,OAAN,CAAc,UAAM,OAC1CpB,EAAO,CAACqB,MADkC,CAIxCC,IAAI,CAACC,GAAL,OAAAD,IAAI,oBACNtB,CAAO,CAACwB,GAAR,CAAY,SAACC,CAAD,qCAAYA,CAAM,CAACC,OAAnB,qBAAY,EAAgBC,YAA5B,gBAA4C,CAA5C,CAAZ,CADM,EAJoC,CAEtC,CAKV,CAP4B,CAO1B,CAAC5B,CAAD,CAP0B,CAdiC,CAuBxD6B,CAAgB,CAAGnC,YAAY,CACnCM,CAAc,CAACiB,MAAf,CAAsB,SAACa,CAAD,CAAMX,CAAN,QAAc,CAACJ,CAAY,CAACI,CAAD,CAA3B,CAAtB,CADmC,CAvByB,CA2B9D,MACE,4BACE,GAAG,CAAEX,CADP,CAEE,SAAS,CAAEX,4BAA4B,EAFzC,CAGE,KAAK,CAAE,CAAEkC,MAAM,CAAEX,CAAV,CAHT,EAKE,2BAAK,SAAS,CAAEvB,4BAA4B,CAAC,MAAD,CAA5C,EACGS,CAAe,CAAC,CACfQ,cAAc,CAAdA,CADe,CAEfkB,eAAe,GAFA,CAGfC,eAAe,CAAE,yBAACd,CAAD,QACftB,6BAA4B,CAAC,KAAD,CAAQ,CAAEqC,MAAM,CAAEnB,CAAY,CAACI,CAAD,CAAtB,CAAR,CADb,CAHF,CAAD,CADlB,CALF,CAaE,2BACE,GAAG,CAAET,CADP,CAEE,SAAS,CAAEb,4BAA4B,CAAC,WAAD,CAAc,CACnDqC,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,CAAEZ,CAFd,CAGE,QAAQ,CAAEC,CAHZ,CAIE,UAAU,CAAEH,CAJd,CAKE,MAAM,CAAEkB,CALV,CAME,IAAI,CAAEb,CANR,EAXF,CAbF,CAmCH,CAzEM"}
1
+ {"version":3,"file":"TabsFitModeDropdownWrapper.js","names":["React","cn","getTabsWidth","TabsMoreItems","useFittingItems","cnTabsFitModeDropdownWrapper","TabsFitModeDropdownWrapper","items","tabsDimensions","tabRefs","getItemKey","getItemChecked","renderItem","onChange","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/TabsFitModeDropdownWrapper/TabsFitModeDropdownWrapper.tsx"],"sourcesContent":["import './TabsFitModeDropdownWrapper.css';\n\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { getTabsWidth } from '../helpers';\nimport { TabsMoreItems } from '../TabsMoreItems/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 getItemKey,\n getItemChecked,\n renderItem,\n onChange,\n renderItemsList,\n size,\n}: TabsFitModeWrapperProps<ITEM>): React.ReactNode | 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 onChange={onChange}\n getItemKey={getItemKey}\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,sCAEA,OAASC,eAAT,yBAEA,GAAMC,6BAA4B,CAAGJ,EAAE,CAAC,4BAAD,CAAvC,CAEA,MAAO,IAAMK,2BAA0B,CAAG,WAUmB,IAT3DC,EAS2D,GAT3DA,KAS2D,CAR3DC,CAQ2D,GAR3DA,cAQ2D,CAP3DC,CAO2D,GAP3DA,OAO2D,CAN3DC,CAM2D,GAN3DA,UAM2D,CAL3DC,CAK2D,GAL3DA,cAK2D,CAJ3DC,CAI2D,GAJ3DA,UAI2D,CAH3DC,CAG2D,GAH3DA,QAG2D,CAF3DC,CAE2D,GAF3DA,eAE2D,CAD3DC,CAC2D,GAD3DA,IAC2D,CACrDC,CAAG,CAAGhB,KAAK,CAACiB,MAAN,CAA6B,IAA7B,CAD+C,CAErDC,CAAY,CAAGlB,KAAK,CAACiB,MAAN,CAA6B,IAA7B,CAFsC,CAIrDE,CAAW,CAAGZ,CAAK,CAACa,SAAN,CAAgBT,CAAhB,CAJuC,GAMlBP,eAAe,CAAC,CACvDI,cAAc,CAAdA,CADuD,CAEvDa,YAAY,CAAEL,CAFyC,CAGvDE,YAAY,CAAZA,CAHuD,CAIvDC,WAAW,CAAXA,CAJuD,CAAD,CANG,CAMnDG,CANmD,GAMnDA,cANmD,CAMnCC,CANmC,GAMnCA,YANmC,CAarDC,CAAW,CAAGjB,CAAK,CAACkB,MAAN,CAAa,SAACC,CAAD,CAAQC,CAAR,QAAgBJ,EAAY,CAACI,CAAD,CAA5B,CAAb,CAbuC,CAcrDC,CAAoB,CAAG5B,KAAK,CAAC6B,OAAN,CAAc,UAAM,OAC1CpB,EAAO,CAACqB,MADkC,CAIxCC,IAAI,CAACC,GAAL,OAAAD,IAAI,oBACNtB,CAAO,CAACwB,GAAR,CAAY,SAACC,CAAD,qCAAYA,CAAM,CAACC,OAAnB,qBAAY,EAAgBC,YAA5B,gBAA4C,CAA5C,CAAZ,CADM,EAJoC,CAEtC,CAKV,CAP4B,CAO1B,CAAC5B,CAAD,CAP0B,CAd8B,CAuBrD6B,CAAgB,CAAGnC,YAAY,CACnCM,CAAc,CAACiB,MAAf,CAAsB,SAACa,CAAD,CAAMX,CAAN,QAAc,CAACJ,CAAY,CAACI,CAAD,CAA3B,CAAtB,CADmC,CAvBsB,CA2B3D,MACE,4BACE,GAAG,CAAEX,CADP,CAEE,SAAS,CAAEX,4BAA4B,EAFzC,CAGE,KAAK,CAAE,CAAEkC,MAAM,CAAEX,CAAV,CAHT,EAKE,2BAAK,SAAS,CAAEvB,4BAA4B,CAAC,MAAD,CAA5C,EACGS,CAAe,CAAC,CACfQ,cAAc,CAAdA,CADe,CAEfkB,eAAe,GAFA,CAGfC,eAAe,CAAE,yBAACd,CAAD,QACftB,6BAA4B,CAAC,KAAD,CAAQ,CAAEqC,MAAM,CAAEnB,CAAY,CAACI,CAAD,CAAtB,CAAR,CADb,CAHF,CAAD,CADlB,CALF,CAaE,2BACE,GAAG,CAAET,CADP,CAEE,SAAS,CAAEb,4BAA4B,CAAC,WAAD,CAAc,CACnDqC,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,CAAEZ,CAFd,CAGE,QAAQ,CAAEC,CAHZ,CAIE,UAAU,CAAEH,CAJd,CAKE,MAAM,CAAEkB,CALV,CAME,IAAI,CAAEb,CANR,EAXF,CAbF,CAmCH,CAzEM"}
@@ -1,4 +1,4 @@
1
1
  import './TabsFitModeScrollWrapper.css';
2
2
  import React from 'react';
3
3
  import { TabsFitModeWrapperProps } from '../types';
4
- export declare const TabsFitModeScrollWrapper: <ITEM>({ tabsDimensions, items, renderItemsList, getItemChecked, withScrollButtons, }: TabsFitModeWrapperProps<ITEM>) => React.ReactElement | null;
4
+ export declare const TabsFitModeScrollWrapper: <ITEM>({ tabsDimensions, items, renderItemsList, getItemChecked, withScrollButtons, }: TabsFitModeWrapperProps<ITEM>) => React.ReactNode | null;