@astral/ui 4.104.2 → 4.106.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 (325) hide show
  1. package/components/ActionCellBase/ActionCellBase.js +10 -1
  2. package/components/ActionCellBase/MainAction/MainAction.js +6 -0
  3. package/components/ActionCellBase/MainAction/MainIconButton/MainIconButton.js +7 -4
  4. package/components/ActionCellBase/MainAction/MainIconButton/constants.d.ts +3 -0
  5. package/components/ActionCellBase/MainAction/MainIconButton/constants.js +4 -0
  6. package/components/ActionCellBase/MainAction/MainIconButton/styles.d.ts +11 -0
  7. package/components/ActionCellBase/MainAction/MainIconButton/styles.js +9 -0
  8. package/components/ActionCellBase/MainAction/MobileMainButton/MobileMainButton.d.ts +14 -0
  9. package/components/ActionCellBase/MainAction/MobileMainButton/MobileMainButton.js +17 -0
  10. package/components/ActionCellBase/MainAction/MobileMainButton/index.d.ts +1 -0
  11. package/components/ActionCellBase/MainAction/MobileMainButton/index.js +1 -0
  12. package/components/ActionCellBase/MainAction/MobileMainButton/styles.d.ts +11 -0
  13. package/components/ActionCellBase/MainAction/MobileMainButton/styles.js +7 -0
  14. package/components/ActionCellBase/SecondaryAction/SecondaryAction.js +2 -2
  15. package/components/ActionCellBase/SecondaryAction/styles.d.ts +4 -0
  16. package/components/ActionCellBase/SecondaryAction/styles.js +9 -0
  17. package/components/ActionCellBase/constants.d.ts +4 -0
  18. package/components/ActionCellBase/constants.js +5 -0
  19. package/components/ActionCellBase/styles.js +11 -0
  20. package/components/ActionCellBase/types.d.ts +25 -0
  21. package/components/ActionGroup/MainActions/ActionNode/ActionNode.d.ts +9 -0
  22. package/components/ActionGroup/MainActions/ActionNode/ActionNode.js +30 -0
  23. package/components/ActionGroup/MainActions/ActionNode/index.d.ts +1 -0
  24. package/components/ActionGroup/MainActions/ActionNode/index.js +1 -0
  25. package/components/ActionGroup/MainActions/MainActions.d.ts +1 -1
  26. package/components/ActionGroup/MainActions/MainActions.js +3 -14
  27. package/components/ActionGroup/MainActions/hooks/useMainActions/useMainActions.d.ts +352 -3
  28. package/components/ActionGroup/MainActions/hooks/useMainActions/useMainActions.js +33 -6
  29. package/components/ActionGroup/MainActions/index.d.ts +1 -0
  30. package/components/ActionGroup/MainActions/index.js +1 -0
  31. package/components/ActionGroup/MainActions/styles.d.ts +5 -6
  32. package/components/ActionGroup/MainActions/styles.js +6 -7
  33. package/components/ActionGroup/SecondaryVisibleActions/ActionNode/ActionNode.d.ts +12 -0
  34. package/components/ActionGroup/SecondaryVisibleActions/ActionNode/ActionNode.js +30 -0
  35. package/components/ActionGroup/SecondaryVisibleActions/ActionNode/index.d.ts +1 -0
  36. package/components/ActionGroup/SecondaryVisibleActions/ActionNode/index.js +1 -0
  37. package/components/ActionGroup/SecondaryVisibleActions/SecondaryVisibleActions.d.ts +1 -1
  38. package/components/ActionGroup/SecondaryVisibleActions/SecondaryVisibleActions.js +3 -7
  39. package/components/ActionGroup/constants.d.ts +3 -0
  40. package/components/ActionGroup/constants.js +4 -0
  41. package/components/ActionGroup/index.d.ts +2 -1
  42. package/components/ActionGroup/index.js +1 -0
  43. package/components/ActionGroup/public.d.ts +2 -1
  44. package/components/ActionGroup/public.js +1 -0
  45. package/components/ActionGroup/styles.js +5 -0
  46. package/components/ActionGroup/types.d.ts +48 -6
  47. package/components/InfiniteTreeList/InfiniteTreeList.js +16 -2
  48. package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.d.ts +4 -0
  49. package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.js +1 -0
  50. package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.d.ts +2 -2
  51. package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.js +3 -1
  52. package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/styles.js +8 -0
  53. package/components/InfiniteTreeList/InfiniteTreeListItem/InfiniteTreeListItem.js +7 -4
  54. package/components/InfiniteTreeList/InfiniteTreeListItem/constants.d.ts +2 -0
  55. package/components/InfiniteTreeList/InfiniteTreeListItem/constants.js +2 -0
  56. package/components/InfiniteTreeList/InfiniteTreeListItem/index.d.ts +1 -0
  57. package/components/InfiniteTreeList/InfiniteTreeListItem/index.js +1 -0
  58. package/components/InfiniteTreeList/InfiniteTreeListItem/styles.d.ts +14 -0
  59. package/components/InfiniteTreeList/InfiniteTreeListItem/styles.js +66 -2
  60. package/components/InfiniteTreeList/LevelHeader/LevelHeader.d.ts +5 -0
  61. package/components/InfiniteTreeList/LevelHeader/LevelHeader.js +17 -0
  62. package/components/InfiniteTreeList/LevelHeader/constants.d.ts +3 -0
  63. package/components/InfiniteTreeList/LevelHeader/constants.js +3 -0
  64. package/components/InfiniteTreeList/LevelHeader/index.d.ts +2 -0
  65. package/components/InfiniteTreeList/LevelHeader/index.js +2 -0
  66. package/components/InfiniteTreeList/LevelHeader/styles.d.ts +365 -0
  67. package/components/InfiniteTreeList/LevelHeader/styles.js +51 -0
  68. package/components/InfiniteTreeList/LevelHeader/types.d.ts +14 -0
  69. package/components/InfiniteTreeList/LevelHeader/types.js +1 -0
  70. package/components/InfiniteTreeList/ListFooter/styles.js +8 -0
  71. package/components/InfiniteTreeList/OnTopButton/styles.js +7 -0
  72. package/components/InfiniteTreeList/ParentItems/Item/Item.js +10 -2
  73. package/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.d.ts +1 -0
  74. package/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.js +10 -2
  75. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/NoDataRow.js +2 -2
  76. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/styles.d.ts +3 -0
  77. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/styles.js +11 -0
  78. package/components/InfiniteTreeList/TreeItem/TreeItem.js +6 -3
  79. package/components/InfiniteTreeList/TreeItem/styles.js +19 -0
  80. package/components/InfiniteTreeList/TreeItem/useLogic/useLogic.d.ts +2 -1
  81. package/components/InfiniteTreeList/TreeItem/useLogic/useLogic.js +5 -4
  82. package/components/InfiniteTreeList/constants.d.ts +21 -0
  83. package/components/InfiniteTreeList/constants.js +21 -0
  84. package/components/InfiniteTreeList/hooks/index.d.ts +2 -0
  85. package/components/InfiniteTreeList/hooks/index.js +2 -0
  86. package/components/InfiniteTreeList/hooks/useLevelNavigation/index.d.ts +2 -0
  87. package/components/InfiniteTreeList/hooks/useLevelNavigation/index.js +2 -0
  88. package/components/InfiniteTreeList/hooks/useLevelNavigation/types.d.ts +15 -0
  89. package/components/InfiniteTreeList/hooks/useLevelNavigation/types.js +1 -0
  90. package/components/InfiniteTreeList/hooks/useLevelNavigation/useLevelNavigation.d.ts +15 -0
  91. package/components/InfiniteTreeList/hooks/useLevelNavigation/useLevelNavigation.js +48 -0
  92. package/components/InfiniteTreeList/hooks/useListScroll/hooks/index.d.ts +3 -0
  93. package/components/InfiniteTreeList/hooks/useListScroll/hooks/index.js +3 -0
  94. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/index.d.ts +2 -0
  95. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/index.js +2 -0
  96. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/types.d.ts +16 -0
  97. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/types.js +1 -0
  98. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/useLevelSnapshots.d.ts +12 -0
  99. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/useLevelSnapshots.js +42 -0
  100. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/index.d.ts +2 -0
  101. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/index.js +2 -0
  102. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/types.d.ts +12 -0
  103. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/types.js +1 -0
  104. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/useScrollToTopButton.d.ts +15 -0
  105. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/useScrollToTopButton.js +27 -0
  106. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/index.d.ts +2 -0
  107. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/index.js +2 -0
  108. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/types.d.ts +11 -0
  109. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/types.js +1 -0
  110. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/useTailWatcher.d.ts +12 -0
  111. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/useTailWatcher.js +39 -0
  112. package/components/InfiniteTreeList/hooks/useListScroll/types.d.ts +14 -2
  113. package/components/InfiniteTreeList/hooks/useListScroll/useListScroll.d.ts +9 -6
  114. package/components/InfiniteTreeList/hooks/useListScroll/useListScroll.js +192 -28
  115. package/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/getOffsetTop.d.ts +4 -0
  116. package/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/getOffsetTop.js +6 -0
  117. package/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/index.d.ts +1 -0
  118. package/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/index.js +1 -0
  119. package/components/InfiniteTreeList/hooks/useListScroll/utils/index.d.ts +1 -0
  120. package/components/InfiniteTreeList/hooks/useListScroll/utils/index.js +1 -0
  121. package/components/InfiniteTreeList/hooks/useNodeTitleValidation/index.d.ts +2 -0
  122. package/components/InfiniteTreeList/hooks/useNodeTitleValidation/index.js +2 -0
  123. package/components/InfiniteTreeList/hooks/useNodeTitleValidation/types.d.ts +14 -0
  124. package/components/InfiniteTreeList/hooks/useNodeTitleValidation/types.js +1 -0
  125. package/components/InfiniteTreeList/hooks/useNodeTitleValidation/useNodeTitleValidation.d.ts +5 -0
  126. package/components/InfiniteTreeList/hooks/useNodeTitleValidation/useNodeTitleValidation.js +18 -0
  127. package/components/InfiniteTreeList/styles.d.ts +5 -0
  128. package/components/InfiniteTreeList/styles.js +41 -0
  129. package/components/InfiniteTreeList/types.d.ts +4 -0
  130. package/components/InfiniteTreeList/useLogic/useLogic.d.ts +13 -5
  131. package/components/InfiniteTreeList/useLogic/useLogic.js +165 -27
  132. package/components/InfiniteTreeList/utils/checkHasFooterContent/checkHasFooterContent.d.ts +5 -0
  133. package/components/InfiniteTreeList/utils/checkHasFooterContent/checkHasFooterContent.js +4 -0
  134. package/components/InfiniteTreeList/utils/checkHasFooterContent/index.d.ts +1 -0
  135. package/components/InfiniteTreeList/utils/checkHasFooterContent/index.js +1 -0
  136. package/components/InfiniteTreeList/utils/checkHasNested/checkHasNested.d.ts +6 -0
  137. package/components/InfiniteTreeList/utils/checkHasNested/checkHasNested.js +5 -0
  138. package/components/InfiniteTreeList/utils/checkHasNested/index.d.ts +1 -0
  139. package/components/InfiniteTreeList/utils/checkHasNested/index.js +1 -0
  140. package/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.d.ts +8 -3
  141. package/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.js +30 -12
  142. package/components/InfiniteTreeList/utils/flattenTree/flattenTree.js +2 -1
  143. package/components/InfiniteTreeList/utils/getLevelKey/getLevelKey.d.ts +4 -0
  144. package/components/InfiniteTreeList/utils/getLevelKey/getLevelKey.js +5 -0
  145. package/components/InfiniteTreeList/utils/getLevelKey/index.d.ts +1 -0
  146. package/components/InfiniteTreeList/utils/getLevelKey/index.js +1 -0
  147. package/components/InfiniteTreeList/utils/index.d.ts +3 -0
  148. package/components/InfiniteTreeList/utils/index.js +3 -0
  149. package/components/PageHeader/MobilePageActions/MobilePageActions.js +2 -2
  150. package/components/PageHeader/MobilePageActions/useLogic/useLogic.d.ts +1 -0
  151. package/components/PageHeader/MobilePageActions/useLogic/useLogic.js +3 -0
  152. package/components/PageHeader/PageActions/MainActions/MainActions.d.ts +1 -1
  153. package/components/PageHeader/PageActions/MainActions/MainActions.js +2 -2
  154. package/components/PageHeader/PageActions/MainActions/styles.js +5 -0
  155. package/components/PageHeader/PageActions/PageActions.js +2 -2
  156. package/components/PageHeader/PageActions/SecondaryVisibleActions/SecondaryVisibleActions.d.ts +1 -1
  157. package/components/PageHeader/PageActions/SecondaryVisibleActions/SecondaryVisibleActions.js +3 -3
  158. package/components/PageHeader/PageActions/SecondaryVisibleActions/styles.d.ts +7 -1
  159. package/components/PageHeader/PageActions/useLogic/useLogic.d.ts +1 -0
  160. package/components/PageHeader/PageActions/useLogic/useLogic.js +3 -0
  161. package/components/index.d.ts +1 -1
  162. package/components/useScrollManagement/useScrollManagement.js +7 -6
  163. package/node/components/ActionCellBase/ActionCellBase.js +10 -1
  164. package/node/components/ActionCellBase/MainAction/MainAction.js +6 -0
  165. package/node/components/ActionCellBase/MainAction/MainIconButton/MainIconButton.js +7 -4
  166. package/node/components/ActionCellBase/MainAction/MainIconButton/constants.d.ts +3 -0
  167. package/node/components/ActionCellBase/MainAction/MainIconButton/constants.js +7 -0
  168. package/node/components/ActionCellBase/MainAction/MainIconButton/styles.d.ts +11 -0
  169. package/node/components/ActionCellBase/MainAction/MainIconButton/styles.js +12 -0
  170. package/node/components/ActionCellBase/MainAction/MobileMainButton/MobileMainButton.d.ts +14 -0
  171. package/node/components/ActionCellBase/MainAction/MobileMainButton/MobileMainButton.js +21 -0
  172. package/node/components/ActionCellBase/MainAction/MobileMainButton/index.d.ts +1 -0
  173. package/node/components/ActionCellBase/MainAction/MobileMainButton/index.js +17 -0
  174. package/node/components/ActionCellBase/MainAction/MobileMainButton/styles.d.ts +11 -0
  175. package/node/components/ActionCellBase/MainAction/MobileMainButton/styles.js +10 -0
  176. package/node/components/ActionCellBase/SecondaryAction/SecondaryAction.js +2 -2
  177. package/node/components/ActionCellBase/SecondaryAction/styles.d.ts +4 -0
  178. package/node/components/ActionCellBase/SecondaryAction/styles.js +12 -0
  179. package/node/components/ActionCellBase/constants.d.ts +4 -0
  180. package/node/components/ActionCellBase/constants.js +8 -0
  181. package/node/components/ActionCellBase/styles.js +11 -0
  182. package/node/components/ActionCellBase/types.d.ts +25 -0
  183. package/node/components/ActionGroup/MainActions/ActionNode/ActionNode.d.ts +9 -0
  184. package/node/components/ActionGroup/MainActions/ActionNode/ActionNode.js +34 -0
  185. package/node/components/ActionGroup/MainActions/ActionNode/index.d.ts +1 -0
  186. package/node/components/ActionGroup/MainActions/ActionNode/index.js +17 -0
  187. package/node/components/ActionGroup/MainActions/MainActions.d.ts +1 -1
  188. package/node/components/ActionGroup/MainActions/MainActions.js +3 -14
  189. package/node/components/ActionGroup/MainActions/hooks/useMainActions/useMainActions.d.ts +352 -3
  190. package/node/components/ActionGroup/MainActions/hooks/useMainActions/useMainActions.js +33 -6
  191. package/node/components/ActionGroup/MainActions/index.d.ts +1 -0
  192. package/node/components/ActionGroup/MainActions/index.js +1 -0
  193. package/node/components/ActionGroup/MainActions/styles.d.ts +5 -6
  194. package/node/components/ActionGroup/MainActions/styles.js +7 -8
  195. package/node/components/ActionGroup/SecondaryVisibleActions/ActionNode/ActionNode.d.ts +12 -0
  196. package/node/components/ActionGroup/SecondaryVisibleActions/ActionNode/ActionNode.js +34 -0
  197. package/node/components/ActionGroup/SecondaryVisibleActions/ActionNode/index.d.ts +1 -0
  198. package/node/components/ActionGroup/SecondaryVisibleActions/ActionNode/index.js +17 -0
  199. package/node/components/ActionGroup/SecondaryVisibleActions/SecondaryVisibleActions.d.ts +1 -1
  200. package/node/components/ActionGroup/SecondaryVisibleActions/SecondaryVisibleActions.js +3 -7
  201. package/node/components/ActionGroup/constants.d.ts +3 -0
  202. package/node/components/ActionGroup/constants.js +7 -0
  203. package/node/components/ActionGroup/index.d.ts +2 -1
  204. package/node/components/ActionGroup/index.js +3 -1
  205. package/node/components/ActionGroup/public.d.ts +2 -1
  206. package/node/components/ActionGroup/public.js +3 -1
  207. package/node/components/ActionGroup/styles.js +5 -0
  208. package/node/components/ActionGroup/types.d.ts +48 -6
  209. package/node/components/InfiniteTreeList/InfiniteTreeList.js +16 -2
  210. package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.d.ts +4 -0
  211. package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.js +1 -0
  212. package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.d.ts +2 -2
  213. package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.js +3 -1
  214. package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/styles.js +8 -0
  215. package/node/components/InfiniteTreeList/InfiniteTreeListItem/InfiniteTreeListItem.js +6 -3
  216. package/node/components/InfiniteTreeList/InfiniteTreeListItem/constants.d.ts +2 -0
  217. package/node/components/InfiniteTreeList/InfiniteTreeListItem/constants.js +2 -0
  218. package/node/components/InfiniteTreeList/InfiniteTreeListItem/index.d.ts +1 -0
  219. package/node/components/InfiniteTreeList/InfiniteTreeListItem/index.js +3 -0
  220. package/node/components/InfiniteTreeList/InfiniteTreeListItem/styles.d.ts +14 -0
  221. package/node/components/InfiniteTreeList/InfiniteTreeListItem/styles.js +67 -3
  222. package/node/components/InfiniteTreeList/LevelHeader/LevelHeader.d.ts +5 -0
  223. package/node/components/InfiniteTreeList/LevelHeader/LevelHeader.js +21 -0
  224. package/node/components/InfiniteTreeList/LevelHeader/constants.d.ts +3 -0
  225. package/node/components/InfiniteTreeList/LevelHeader/constants.js +6 -0
  226. package/node/components/InfiniteTreeList/LevelHeader/index.d.ts +2 -0
  227. package/node/components/InfiniteTreeList/LevelHeader/index.js +18 -0
  228. package/node/components/InfiniteTreeList/LevelHeader/styles.d.ts +365 -0
  229. package/node/components/InfiniteTreeList/LevelHeader/styles.js +54 -0
  230. package/node/components/InfiniteTreeList/LevelHeader/types.d.ts +14 -0
  231. package/node/components/InfiniteTreeList/LevelHeader/types.js +2 -0
  232. package/node/components/InfiniteTreeList/ListFooter/styles.js +8 -0
  233. package/node/components/InfiniteTreeList/OnTopButton/styles.js +7 -0
  234. package/node/components/InfiniteTreeList/ParentItems/Item/Item.js +10 -2
  235. package/node/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.d.ts +1 -0
  236. package/node/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.js +10 -2
  237. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/NoDataRow.js +2 -2
  238. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/styles.d.ts +3 -0
  239. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/styles.js +14 -0
  240. package/node/components/InfiniteTreeList/TreeItem/TreeItem.js +6 -3
  241. package/node/components/InfiniteTreeList/TreeItem/styles.js +19 -0
  242. package/node/components/InfiniteTreeList/TreeItem/useLogic/useLogic.d.ts +2 -1
  243. package/node/components/InfiniteTreeList/TreeItem/useLogic/useLogic.js +4 -3
  244. package/node/components/InfiniteTreeList/constants.d.ts +21 -0
  245. package/node/components/InfiniteTreeList/constants.js +22 -1
  246. package/node/components/InfiniteTreeList/hooks/index.d.ts +2 -0
  247. package/node/components/InfiniteTreeList/hooks/index.js +2 -0
  248. package/node/components/InfiniteTreeList/hooks/useLevelNavigation/index.d.ts +2 -0
  249. package/node/components/InfiniteTreeList/hooks/useLevelNavigation/index.js +18 -0
  250. package/node/components/InfiniteTreeList/hooks/useLevelNavigation/types.d.ts +15 -0
  251. package/node/components/InfiniteTreeList/hooks/useLevelNavigation/types.js +2 -0
  252. package/node/components/InfiniteTreeList/hooks/useLevelNavigation/useLevelNavigation.d.ts +15 -0
  253. package/node/components/InfiniteTreeList/hooks/useLevelNavigation/useLevelNavigation.js +52 -0
  254. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/index.d.ts +3 -0
  255. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/index.js +19 -0
  256. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/index.d.ts +2 -0
  257. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/index.js +18 -0
  258. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/types.d.ts +16 -0
  259. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/types.js +2 -0
  260. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/useLevelSnapshots.d.ts +12 -0
  261. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/useLevelSnapshots.js +46 -0
  262. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/index.d.ts +2 -0
  263. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/index.js +18 -0
  264. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/types.d.ts +12 -0
  265. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/types.js +2 -0
  266. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/useScrollToTopButton.d.ts +15 -0
  267. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/useScrollToTopButton.js +31 -0
  268. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/index.d.ts +2 -0
  269. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/index.js +18 -0
  270. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/types.d.ts +11 -0
  271. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/types.js +2 -0
  272. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/useTailWatcher.d.ts +12 -0
  273. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/useTailWatcher.js +43 -0
  274. package/node/components/InfiniteTreeList/hooks/useListScroll/types.d.ts +14 -2
  275. package/node/components/InfiniteTreeList/hooks/useListScroll/useListScroll.d.ts +9 -6
  276. package/node/components/InfiniteTreeList/hooks/useListScroll/useListScroll.js +190 -26
  277. package/node/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/getOffsetTop.d.ts +4 -0
  278. package/node/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/getOffsetTop.js +10 -0
  279. package/node/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/index.d.ts +1 -0
  280. package/node/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/index.js +17 -0
  281. package/node/components/InfiniteTreeList/hooks/useListScroll/utils/index.d.ts +1 -0
  282. package/node/components/InfiniteTreeList/hooks/useListScroll/utils/index.js +17 -0
  283. package/node/components/InfiniteTreeList/hooks/useNodeTitleValidation/index.d.ts +2 -0
  284. package/node/components/InfiniteTreeList/hooks/useNodeTitleValidation/index.js +18 -0
  285. package/node/components/InfiniteTreeList/hooks/useNodeTitleValidation/types.d.ts +14 -0
  286. package/node/components/InfiniteTreeList/hooks/useNodeTitleValidation/types.js +2 -0
  287. package/node/components/InfiniteTreeList/hooks/useNodeTitleValidation/useNodeTitleValidation.d.ts +5 -0
  288. package/node/components/InfiniteTreeList/hooks/useNodeTitleValidation/useNodeTitleValidation.js +22 -0
  289. package/node/components/InfiniteTreeList/styles.d.ts +5 -0
  290. package/node/components/InfiniteTreeList/styles.js +44 -0
  291. package/node/components/InfiniteTreeList/types.d.ts +4 -0
  292. package/node/components/InfiniteTreeList/useLogic/useLogic.d.ts +13 -5
  293. package/node/components/InfiniteTreeList/useLogic/useLogic.js +162 -24
  294. package/node/components/InfiniteTreeList/utils/checkHasFooterContent/checkHasFooterContent.d.ts +5 -0
  295. package/node/components/InfiniteTreeList/utils/checkHasFooterContent/checkHasFooterContent.js +8 -0
  296. package/node/components/InfiniteTreeList/utils/checkHasFooterContent/index.d.ts +1 -0
  297. package/node/components/InfiniteTreeList/utils/checkHasFooterContent/index.js +17 -0
  298. package/node/components/InfiniteTreeList/utils/checkHasNested/checkHasNested.d.ts +6 -0
  299. package/node/components/InfiniteTreeList/utils/checkHasNested/checkHasNested.js +9 -0
  300. package/node/components/InfiniteTreeList/utils/checkHasNested/index.d.ts +1 -0
  301. package/node/components/InfiniteTreeList/utils/checkHasNested/index.js +17 -0
  302. package/node/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.d.ts +8 -3
  303. package/node/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.js +30 -12
  304. package/node/components/InfiniteTreeList/utils/flattenTree/flattenTree.js +2 -1
  305. package/node/components/InfiniteTreeList/utils/getLevelKey/getLevelKey.d.ts +4 -0
  306. package/node/components/InfiniteTreeList/utils/getLevelKey/getLevelKey.js +9 -0
  307. package/node/components/InfiniteTreeList/utils/getLevelKey/index.d.ts +1 -0
  308. package/node/components/InfiniteTreeList/utils/getLevelKey/index.js +17 -0
  309. package/node/components/InfiniteTreeList/utils/index.d.ts +3 -0
  310. package/node/components/InfiniteTreeList/utils/index.js +3 -0
  311. package/node/components/PageHeader/MobilePageActions/MobilePageActions.js +2 -2
  312. package/node/components/PageHeader/MobilePageActions/useLogic/useLogic.d.ts +1 -0
  313. package/node/components/PageHeader/MobilePageActions/useLogic/useLogic.js +3 -0
  314. package/node/components/PageHeader/PageActions/MainActions/MainActions.d.ts +1 -1
  315. package/node/components/PageHeader/PageActions/MainActions/MainActions.js +2 -2
  316. package/node/components/PageHeader/PageActions/MainActions/styles.js +5 -0
  317. package/node/components/PageHeader/PageActions/PageActions.js +2 -2
  318. package/node/components/PageHeader/PageActions/SecondaryVisibleActions/SecondaryVisibleActions.d.ts +1 -1
  319. package/node/components/PageHeader/PageActions/SecondaryVisibleActions/SecondaryVisibleActions.js +3 -3
  320. package/node/components/PageHeader/PageActions/SecondaryVisibleActions/styles.d.ts +7 -1
  321. package/node/components/PageHeader/PageActions/useLogic/useLogic.d.ts +1 -0
  322. package/node/components/PageHeader/PageActions/useLogic/useLogic.js +3 -0
  323. package/node/components/index.d.ts +1 -1
  324. package/node/components/useScrollManagement/useScrollManagement.js +6 -5
  325. package/package.json +1 -1
@@ -4,24 +4,38 @@ exports.useListScroll = void 0;
4
4
  const react_1 = require("react");
5
5
  const useScrollManagement_1 = require("../../../useScrollManagement");
6
6
  const constants_1 = require("../../constants");
7
- const utils_1 = require("../../utils");
7
+ const hooks_1 = require("./hooks");
8
+ const utils_1 = require("./utils");
8
9
  /**
9
- * Скролл-обвязка списка: props для `Virtuoso`, кнопка «наверх» и реестр хвостов
10
- * вложенных веток. Хвосты регистрируют сами строки, хук создаёт реестр и на
11
- * смене видимого диапазона проверяет, попал ли хвост в кадр
10
+ * Скролл-обвязка списка: props для `Virtuoso`, переход между уровнями
11
+ * и сборка кнопки «наверх», реестра хвостов и памяти уровней
12
12
  */
13
- const useListScroll = ({ scrollRef, isEndReached, onLoadMore, flatListRef, enterAnimation, }) => {
13
+ const useListScroll = ({ scrollRef, isEndReached, onLoadMore, displayedList, enterAnimation, isRootLevel, levelKey, activeLevelKeys, }) => {
14
14
  const virtuosoRef = (0, react_1.useRef)(null);
15
- const scrollToTopButtonRef = (0, react_1.useRef)(null);
16
- const tailRegistryRef = (0, react_1.useRef)(null);
17
- if (!tailRegistryRef.current) {
18
- tailRegistryRef.current = (0, utils_1.createTailRegistry)();
19
- }
20
- const tailRegistry = tailRegistryRef.current;
15
+ const listRef = (0, react_1.useRef)(null);
16
+ const pendingLevelRef = (0, react_1.useRef)(null);
17
+ const pinnedHeightRef = (0, react_1.useRef)(null);
18
+ const heldHeightRef = (0, react_1.useRef)(null);
19
+ const { tailRegistry, trackRange } = (0, hooks_1.useTailWatcher)({
20
+ displayedList,
21
+ levelKey,
22
+ });
23
+ const { updateVisibility: updateTopButtonVisibility, onTopButtonProps } = (0, hooks_1.useScrollToTopButton)({ scrollRef, virtuosoRef });
24
+ const { rememberLevel, forgetLevel, getLevelPosition, levelState } = (0, hooks_1.useLevelSnapshots)({ levelKey, activeLevelKeys, virtuosoRef });
25
+ const isRootLevelRef = (0, react_1.useRef)(isRootLevel);
26
+ (0, react_1.useEffect)(() => {
27
+ isRootLevelRef.current = isRootLevel;
28
+ }, [isRootLevel]);
29
+ const handleListLoadMore = (0, react_1.useCallback)(() => {
30
+ if (!isRootLevelRef.current) {
31
+ return;
32
+ }
33
+ onLoadMore?.();
34
+ }, [onLoadMore]);
21
35
  const { scrollParent, recalculateVerticalScroll, handleEndReach, isEndReachedWithScroll, } = (0, useScrollManagement_1.useScrollManagement)({
22
36
  scrollRef,
23
37
  isEndReached,
24
- onLoadMore,
38
+ onLoadMore: handleListLoadMore,
25
39
  virtuosoId: constants_1.VIRTUOSO_CONTAINER_ID,
26
40
  });
27
41
  // Скролл виртуализации монтирует строки, которые появлением не считаются
@@ -31,33 +45,183 @@ const useListScroll = ({ scrollRef, isEndReached, onLoadMore, flatListRef, enter
31
45
  }
32
46
  }, [enterAnimation]);
33
47
  const handleRangeChanged = (0, react_1.useCallback)((range) => {
34
- scrollToTopButtonRef.current?.classList.toggle(constants_1.infiniteTreeListClassnames.visibleScrollToTopButton, range.startIndex > 2);
35
- tailRegistry.checkRange(range.endIndex, (itemId) => flatListRef.current.findIndex((item) => item.id === itemId));
36
- }, [flatListRef, tailRegistry]);
37
- const handleScrollToTop = (0, react_1.useCallback)(() => {
38
- if (scrollRef.current) {
39
- scrollRef.current.style.scrollBehavior = 'auto';
40
- }
41
- virtuosoRef.current?.scrollToIndex(0);
42
- }, [scrollRef]);
48
+ updateTopButtonVisibility(range);
49
+ trackRange(range);
50
+ }, [updateTopButtonVisibility, trackRange]);
51
+ const getListTop = (0, react_1.useCallback)(() => {
52
+ const listElement = listRef.current;
53
+ if (!scrollParent || !listElement) {
54
+ return null;
55
+ }
56
+ return Math.max((0, utils_1.getOffsetTop)(listElement, scrollParent), 0);
57
+ }, [scrollParent]);
58
+ const saveLevelSnapshot = (0, react_1.useCallback)(() => {
59
+ const listTop = getListTop();
60
+ if (!scrollParent || listTop === null) {
61
+ return;
62
+ }
63
+ rememberLevel(scrollParent.scrollTop - listTop);
64
+ // Высота уходящего уровня держит список, пока новый не доехал
65
+ heldHeightRef.current = listRef.current?.offsetHeight ?? null;
66
+ }, [scrollParent, getListTop, rememberLevel]);
67
+ // Заданная высота снимается, когда строки уровня доехали и держат позицию сами
68
+ const releaseListHeight = (0, react_1.useCallback)(() => {
69
+ const listElement = listRef.current;
70
+ const pinnedHeight = pinnedHeightRef.current;
71
+ if (!scrollParent || !listElement || pinnedHeight === null) {
72
+ return;
73
+ }
74
+ const keptScrollTop = scrollParent.scrollTop;
75
+ pinnedHeightRef.current = null;
76
+ listElement.style.removeProperty('min-height');
77
+ if (scrollParent.scrollTop < keptScrollTop) {
78
+ pinnedHeightRef.current = pinnedHeight;
79
+ listElement.style.minHeight = `${pinnedHeight}px`;
80
+ scrollParent.scrollTop = keptScrollTop;
81
+ }
82
+ }, [scrollParent]);
83
+ const applyLevelPosition = (0, react_1.useCallback)(() => {
84
+ const pendingLevel = pendingLevelRef.current;
85
+ const listElement = listRef.current;
86
+ const listTop = getListTop();
87
+ if (!pendingLevel || !scrollParent || !listElement || listTop === null) {
88
+ return;
89
+ }
90
+ const offset = getLevelPosition(pendingLevel);
91
+ if (offset === undefined) {
92
+ pendingLevelRef.current = null;
93
+ scrollParent.scrollTop = Math.min(scrollParent.scrollTop, listTop);
94
+ return;
95
+ }
96
+ const target = Math.max(listTop + offset, 0);
97
+ // Строки уровня попадают в список на кадр позже, чем меняется сам уровень.
98
+ // Пока их нет, страница короткая, и до сохранённой позиции скролл просто
99
+ // не достаёт
100
+ if (target > scrollParent.scrollHeight - scrollParent.clientHeight) {
101
+ const pinnedHeight = Math.max(offset + scrollParent.clientHeight, pinnedHeightRef.current ?? 0);
102
+ pinnedHeightRef.current = pinnedHeight;
103
+ listElement.style.minHeight = `${pinnedHeight}px`;
104
+ }
105
+ scrollParent.scrollTop = target;
106
+ if (scrollParent.scrollTop < target) {
107
+ return;
108
+ }
109
+ pendingLevelRef.current = null;
110
+ }, [scrollParent, getListTop, getLevelPosition]);
111
+ const heightObserverRef = (0, react_1.useRef)(null);
112
+ const transitionTimerRef = (0, react_1.useRef)(null);
113
+ const stopWatchingLevelContent = (0, react_1.useCallback)(() => {
114
+ heightObserverRef.current?.disconnect();
115
+ heightObserverRef.current = null;
116
+ }, []);
117
+ // Переход открывает список и возвращает контейнеру `scroll-behavior: smooth`
118
+ const finishLevelTransition = (0, react_1.useCallback)(() => {
119
+ if (transitionTimerRef.current !== null) {
120
+ clearTimeout(transitionTimerRef.current);
121
+ transitionTimerRef.current = null;
122
+ }
123
+ listRef.current?.classList.remove(constants_1.infiniteTreeListClassnames.levelTransition);
124
+ scrollParent?.style.removeProperty('scroll-behavior');
125
+ }, [scrollParent]);
126
+ const settleLevelTransition = (0, react_1.useCallback)(() => {
127
+ applyLevelPosition();
128
+ releaseListHeight();
129
+ if (pendingLevelRef.current || pinnedHeightRef.current !== null) {
130
+ return;
131
+ }
132
+ stopWatchingLevelContent();
133
+ finishLevelTransition();
134
+ }, [
135
+ applyLevelPosition,
136
+ releaseListHeight,
137
+ stopWatchingLevelContent,
138
+ finishLevelTransition,
139
+ ]);
140
+ const forceLevelTransitionEnd = (0, react_1.useCallback)(() => {
141
+ applyLevelPosition();
142
+ releaseListHeight();
143
+ stopWatchingLevelContent();
144
+ finishLevelTransition();
145
+ }, [
146
+ applyLevelPosition,
147
+ releaseListHeight,
148
+ stopWatchingLevelContent,
149
+ finishLevelTransition,
150
+ ]);
151
+ const startLevelTransition = (0, react_1.useCallback)(() => {
152
+ const listElement = listRef.current;
153
+ finishLevelTransition();
154
+ listElement?.classList.add(constants_1.infiniteTreeListClassnames.levelTransition);
155
+ scrollParent?.style.setProperty('scroll-behavior', 'auto');
156
+ const heldHeight = heldHeightRef.current;
157
+ if (listElement && heldHeight !== null) {
158
+ pinnedHeightRef.current = heldHeight;
159
+ listElement.style.minHeight = `${heldHeight}px`;
160
+ }
161
+ transitionTimerRef.current = setTimeout(forceLevelTransitionEnd, constants_1.LEVEL_TRANSITION_TIMEOUT_MS);
162
+ }, [finishLevelTransition, forceLevelTransitionEnd, scrollParent]);
163
+ const watchLevelContent = (0, react_1.useCallback)(() => {
164
+ if (heightObserverRef.current) {
165
+ return;
166
+ }
167
+ const contentElement = listRef.current?.querySelector(`#${constants_1.VIRTUOSO_CONTAINER_ID}`);
168
+ if (!contentElement) {
169
+ settleLevelTransition();
170
+ return;
171
+ }
172
+ const observer = new ResizeObserver(([entry]) => {
173
+ // Первый замер приходит сразу за `observe`, когда список ещё пуст:
174
+ // снятый по нему переход показал бы обёртку без строк
175
+ if (!entry || entry.contentRect.height === 0) {
176
+ return;
177
+ }
178
+ settleLevelTransition();
179
+ });
180
+ observer.observe(contentElement);
181
+ heightObserverRef.current = observer;
182
+ }, [settleLevelTransition]);
183
+ (0, react_1.useEffect)(() => () => {
184
+ stopWatchingLevelContent();
185
+ finishLevelTransition();
186
+ }, [stopWatchingLevelContent, finishLevelTransition]);
187
+ const shownLevelRef = (0, react_1.useRef)(levelKey);
188
+ // Позиция выставляется до отрисовки кадра: из обычного эффекта уровень успел
189
+ // бы показаться с чужой позиции, и переход читался бы как прокрутка
190
+ (0, react_1.useLayoutEffect)(() => {
191
+ if (shownLevelRef.current === levelKey) {
192
+ return;
193
+ }
194
+ shownLevelRef.current = levelKey;
195
+ pendingLevelRef.current = levelKey;
196
+ // Высота, заданная прошлому переходу, к новому уровню не относится
197
+ pinnedHeightRef.current = null;
198
+ listRef.current?.style.removeProperty('min-height');
199
+ startLevelTransition();
200
+ applyLevelPosition();
201
+ watchLevelContent();
202
+ }, [levelKey, applyLevelPosition, watchLevelContent, startLevelTransition]);
43
203
  return {
44
204
  scrollParent,
205
+ listRef,
45
206
  tailRegistry,
46
207
  isEndReachedWithScroll,
208
+ saveLevelSnapshot,
209
+ dropLevelSnapshot: forgetLevel,
47
210
  virtuosoProps: {
48
211
  id: constants_1.VIRTUOSO_CONTAINER_ID,
49
212
  ref: virtuosoRef,
50
213
  overscan: constants_1.OVERSCAN,
214
+ restoreStateFrom: levelState,
215
+ // Из снимка нужны только высоты строк: позицию уровня список выставляет
216
+ // сам. Иначе `Virtuoso` уводит скролл в начало и возвращается к
217
+ // сохранённому месту собственной прокруткой
218
+ initialTopMostItemIndex: 0,
51
219
  rangeChanged: handleRangeChanged,
52
220
  endReached: handleEndReach,
53
221
  totalListHeightChanged: recalculateVerticalScroll,
54
222
  isScrolling: handleScrollingChange,
55
223
  },
56
- onTopButtonProps: {
57
- buttonRef: scrollToTopButtonRef,
58
- handleScrollToTop,
59
- scrollRef,
60
- },
224
+ onTopButtonProps,
61
225
  };
62
226
  };
63
227
  exports.useListScroll = useListScroll;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Смещение элемента внутри скролл-контейнера
3
+ */
4
+ export declare const getOffsetTop: (element: HTMLElement, scroller: HTMLElement) => number;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOffsetTop = void 0;
4
+ /**
5
+ * Смещение элемента внутри скролл-контейнера
6
+ */
7
+ const getOffsetTop = (element, scroller) => element.getBoundingClientRect().top -
8
+ scroller.getBoundingClientRect().top +
9
+ scroller.scrollTop;
10
+ exports.getOffsetTop = getOffsetTop;
@@ -0,0 +1 @@
1
+ export * from './getOffsetTop';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./getOffsetTop"), exports);
@@ -0,0 +1 @@
1
+ export * from './getOffsetTop';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./getOffsetTop"), exports);
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './useNodeTitleValidation';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./useNodeTitleValidation"), exports);
@@ -0,0 +1,14 @@
1
+ export type UseNodeTitleValidationParams = {
2
+ /**
3
+ * Флаг мобильного отображения
4
+ */
5
+ isMobile: boolean;
6
+ /**
7
+ * Id узла, чей уровень отображается
8
+ */
9
+ currentNodeId?: string;
10
+ /**
11
+ * Заголовок отображаемого узла из его данных
12
+ */
13
+ title?: string;
14
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import type { UseNodeTitleValidationParams } from './types';
2
+ /**
3
+ * Проверяет, что у узла, содержимое которого отображается, задан `title`
4
+ */
5
+ export declare const useNodeTitleValidation: ({ isMobile, currentNodeId, title, }: UseNodeTitleValidationParams) => void;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useNodeTitleValidation = void 0;
4
+ const react_1 = require("react");
5
+ /**
6
+ * Проверяет, что у узла, содержимое которого отображается, задан `title`
7
+ */
8
+ const useNodeTitleValidation = ({ isMobile, currentNodeId, title, }) => {
9
+ const warnedNodeIdsRef = (0, react_1.useRef)(new Set());
10
+ (0, react_1.useEffect)(() => {
11
+ if (!isMobile || !currentNodeId) {
12
+ return;
13
+ }
14
+ if (title || warnedNodeIdsRef.current.has(currentNodeId)) {
15
+ return;
16
+ }
17
+ warnedNodeIdsRef.current.add(currentNodeId);
18
+ // biome-ignore lint/suspicious/noConsole: Предупреждение для интеграторов
19
+ console.warn(`InfiniteTreeList: у узла "${currentNodeId}" не задан параметр title`);
20
+ }, [isMobile, currentNodeId, title]);
21
+ };
22
+ exports.useNodeTitleValidation = useNodeTitleValidation;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export declare const InfiniteTreeListWrapper: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
3
+ theme?: import("@emotion/react").Theme | undefined;
4
+ as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
5
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InfiniteTreeListWrapper = void 0;
4
+ const styled_1 = require("../styled");
5
+ const constants_1 = require("./constants");
6
+ exports.InfiniteTreeListWrapper = styled_1.styled.div `
7
+ /* Убираем якорь на android устройствах */
8
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
9
+ overflow-anchor: none;
10
+
11
+ ${({ theme }) => theme.breakpoints.up('mobile')} {
12
+ &.${constants_1.infiniteTreeListClassnames.loading},
13
+ &.${constants_1.infiniteTreeListClassnames.error},
14
+ &.${constants_1.infiniteTreeListClassnames.noData} {
15
+ height: 100%;
16
+ }
17
+ }
18
+
19
+ ${({ theme }) => theme.breakpoints.down('mobile')} {
20
+ overflow: hidden;
21
+
22
+ height: auto;
23
+ margin: ${({ theme }) => theme.spacing(0, 4, 4)};
24
+
25
+ background-color: ${({ theme }) => theme.palette.background.default};
26
+ border: 1px solid ${({ theme }) => theme.palette.components.border.default};
27
+ border-radius: ${({ theme }) => theme.shape.medium};
28
+
29
+ &.${constants_1.infiniteTreeListClassnames.loading},
30
+ &.${constants_1.infiniteTreeListClassnames.error},
31
+ &.${constants_1.infiniteTreeListClassnames.noData} {
32
+ height: ${({ theme }) => `calc(100% - ${theme.spacing(4)})`};
33
+ }
34
+
35
+ /* Смена уровня пересоздаёт список: строки нового уровня встают на место
36
+ не в том же кадре, поэтому до их появления виден фон обёртки.
37
+ Высоту на это время держит min-height от самого списка */
38
+ &.${constants_1.infiniteTreeListClassnames.levelTransition} {
39
+ #${constants_1.VIRTUOSO_CONTAINER_ID} {
40
+ visibility: hidden;
41
+ }
42
+ }
43
+ }
44
+ `;
@@ -11,6 +11,10 @@ export type InfiniteTreeListDataBase = {
11
11
  * Статическое дерево описывается полем `children` и флага не требует
12
12
  */
13
13
  hasChildren?: boolean;
14
+ /**
15
+ * Заголовок узла в шапке уровня на мобильной ширине.
16
+ */
17
+ title?: string;
14
18
  /**
15
19
  * Дополнительные поля
16
20
  */
@@ -1,26 +1,35 @@
1
1
  /// <reference types="react" />
2
2
  import { type ContentStateProps } from '../../ContentState';
3
+ import type { LevelHeaderProps } from '../LevelHeader';
3
4
  import type { ListFooterContext } from '../ListFooter';
4
- import type { InfiniteTreeListData, InfiniteTreeListProps } from '../types';
5
+ import type { FlattenTree, InfiniteTreeListData, InfiniteTreeListProps } from '../types';
5
6
  type UseLogicParams<TData extends InfiniteTreeListData<TData>> = InfiniteTreeListProps<TData>;
6
7
  /**
7
8
  * Логика списка: сводит плоский список, данные дочерних элементов, скролл
8
9
  * и анимацию появления строк в props для `Virtuoso` и дочерних компонентов
9
10
  */
10
11
  export declare const useLogic: <TData extends InfiniteTreeListData<TData>>({ initialExpandedLevel, items, onRetry, errorMsg, isError, isLoading, scrollRef, isEndReached, onLoadMore, renderItem, renderParent, itemSkeleton, endOfScrollMsg, noDataImgSrc, errorImgSrc, }: UseLogicParams<TData>) => {
11
- flatList: import("../types").FlattenTree<TData>[];
12
- onToggle: ({ id: itemId }: InfiniteTreeListData) => void;
12
+ displayedList: FlattenTree<TData>[];
13
+ levelKey: string;
14
+ lastRowId: string | undefined;
15
+ levelHeaderProps: LevelHeaderProps | undefined;
16
+ onToggle: (item: InfiniteTreeListData) => void;
13
17
  nodePaginationMap: Record<string, import("../InfiniteTreeListContext").NodePagination>;
14
18
  registerChildren: (itemId: string, childrenState: import("../types").InfiniteTreeChildrenPagination) => void;
15
19
  notifyExpand: (itemId: string, onOpen?: (() => void) | undefined) => void;
16
- parentItems: import("../types").FlattenTree<TData>[];
20
+ parentItems: FlattenTree<TData>[];
17
21
  acquireParentSlot: (itemId: string) => HTMLDivElement | null;
18
22
  contentStateProps: Omit<ContentStateProps, "children">;
23
+ isNoData: boolean;
24
+ state: "error" | "loading" | "noData" | undefined;
19
25
  scrollParent: HTMLElement | null;
26
+ listRef: import("react").RefObject<HTMLDivElement | null>;
20
27
  virtuosoProps: {
21
28
  id: string;
22
29
  ref: import("react").RefObject<import("react-virtuoso").VirtuosoHandle | null>;
23
30
  overscan: number;
31
+ restoreStateFrom: import("react-virtuoso").StateSnapshot | undefined;
32
+ initialTopMostItemIndex: number;
24
33
  rangeChanged: (range: import("react-virtuoso").ListRange) => void;
25
34
  endReached: () => void;
26
35
  totalListHeightChanged: () => void;
@@ -39,7 +48,6 @@ export declare const useLogic: <TData extends InfiniteTreeListData<TData>>({ ini
39
48
  renderParent: (item: TData & {
40
49
  meta: import("../types").InfiniteTreeItemMeta;
41
50
  }) => import("react").ReactNode;
42
- items: TData[];
43
51
  onRetry: () => void;
44
52
  noDataImgSrc: string | undefined;
45
53
  enterAnimation: import("../hooks").EnterAnimationResult;