@astral/ui 4.105.0 → 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 (247) 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/InfiniteTreeList/InfiniteTreeList.js +16 -2
  22. package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.d.ts +4 -0
  23. package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.js +1 -0
  24. package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.d.ts +2 -2
  25. package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.js +3 -1
  26. package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/styles.js +8 -0
  27. package/components/InfiniteTreeList/InfiniteTreeListItem/InfiniteTreeListItem.js +7 -4
  28. package/components/InfiniteTreeList/InfiniteTreeListItem/constants.d.ts +2 -0
  29. package/components/InfiniteTreeList/InfiniteTreeListItem/constants.js +2 -0
  30. package/components/InfiniteTreeList/InfiniteTreeListItem/index.d.ts +1 -0
  31. package/components/InfiniteTreeList/InfiniteTreeListItem/index.js +1 -0
  32. package/components/InfiniteTreeList/InfiniteTreeListItem/styles.d.ts +14 -0
  33. package/components/InfiniteTreeList/InfiniteTreeListItem/styles.js +66 -2
  34. package/components/InfiniteTreeList/LevelHeader/LevelHeader.d.ts +5 -0
  35. package/components/InfiniteTreeList/LevelHeader/LevelHeader.js +17 -0
  36. package/components/InfiniteTreeList/LevelHeader/constants.d.ts +3 -0
  37. package/components/InfiniteTreeList/LevelHeader/constants.js +3 -0
  38. package/components/InfiniteTreeList/LevelHeader/index.d.ts +2 -0
  39. package/components/InfiniteTreeList/LevelHeader/index.js +2 -0
  40. package/components/InfiniteTreeList/LevelHeader/styles.d.ts +365 -0
  41. package/components/InfiniteTreeList/LevelHeader/styles.js +51 -0
  42. package/components/InfiniteTreeList/LevelHeader/types.d.ts +14 -0
  43. package/components/InfiniteTreeList/LevelHeader/types.js +1 -0
  44. package/components/InfiniteTreeList/ListFooter/styles.js +8 -0
  45. package/components/InfiniteTreeList/OnTopButton/styles.js +7 -0
  46. package/components/InfiniteTreeList/ParentItems/Item/Item.js +10 -2
  47. package/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.d.ts +1 -0
  48. package/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.js +10 -2
  49. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/NoDataRow.js +2 -2
  50. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/styles.d.ts +3 -0
  51. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/styles.js +11 -0
  52. package/components/InfiniteTreeList/TreeItem/TreeItem.js +6 -3
  53. package/components/InfiniteTreeList/TreeItem/styles.js +19 -0
  54. package/components/InfiniteTreeList/TreeItem/useLogic/useLogic.d.ts +2 -1
  55. package/components/InfiniteTreeList/TreeItem/useLogic/useLogic.js +5 -4
  56. package/components/InfiniteTreeList/constants.d.ts +21 -0
  57. package/components/InfiniteTreeList/constants.js +21 -0
  58. package/components/InfiniteTreeList/hooks/index.d.ts +2 -0
  59. package/components/InfiniteTreeList/hooks/index.js +2 -0
  60. package/components/InfiniteTreeList/hooks/useLevelNavigation/index.d.ts +2 -0
  61. package/components/InfiniteTreeList/hooks/useLevelNavigation/index.js +2 -0
  62. package/components/InfiniteTreeList/hooks/useLevelNavigation/types.d.ts +15 -0
  63. package/components/InfiniteTreeList/hooks/useLevelNavigation/types.js +1 -0
  64. package/components/InfiniteTreeList/hooks/useLevelNavigation/useLevelNavigation.d.ts +15 -0
  65. package/components/InfiniteTreeList/hooks/useLevelNavigation/useLevelNavigation.js +48 -0
  66. package/components/InfiniteTreeList/hooks/useListScroll/hooks/index.d.ts +3 -0
  67. package/components/InfiniteTreeList/hooks/useListScroll/hooks/index.js +3 -0
  68. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/index.d.ts +2 -0
  69. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/index.js +2 -0
  70. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/types.d.ts +16 -0
  71. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/types.js +1 -0
  72. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/useLevelSnapshots.d.ts +12 -0
  73. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/useLevelSnapshots.js +42 -0
  74. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/index.d.ts +2 -0
  75. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/index.js +2 -0
  76. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/types.d.ts +12 -0
  77. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/types.js +1 -0
  78. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/useScrollToTopButton.d.ts +15 -0
  79. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/useScrollToTopButton.js +27 -0
  80. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/index.d.ts +2 -0
  81. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/index.js +2 -0
  82. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/types.d.ts +11 -0
  83. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/types.js +1 -0
  84. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/useTailWatcher.d.ts +12 -0
  85. package/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/useTailWatcher.js +39 -0
  86. package/components/InfiniteTreeList/hooks/useListScroll/types.d.ts +14 -2
  87. package/components/InfiniteTreeList/hooks/useListScroll/useListScroll.d.ts +9 -6
  88. package/components/InfiniteTreeList/hooks/useListScroll/useListScroll.js +192 -28
  89. package/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/getOffsetTop.d.ts +4 -0
  90. package/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/getOffsetTop.js +6 -0
  91. package/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/index.d.ts +1 -0
  92. package/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/index.js +1 -0
  93. package/components/InfiniteTreeList/hooks/useListScroll/utils/index.d.ts +1 -0
  94. package/components/InfiniteTreeList/hooks/useListScroll/utils/index.js +1 -0
  95. package/components/InfiniteTreeList/hooks/useNodeTitleValidation/index.d.ts +2 -0
  96. package/components/InfiniteTreeList/hooks/useNodeTitleValidation/index.js +2 -0
  97. package/components/InfiniteTreeList/hooks/useNodeTitleValidation/types.d.ts +14 -0
  98. package/components/InfiniteTreeList/hooks/useNodeTitleValidation/types.js +1 -0
  99. package/components/InfiniteTreeList/hooks/useNodeTitleValidation/useNodeTitleValidation.d.ts +5 -0
  100. package/components/InfiniteTreeList/hooks/useNodeTitleValidation/useNodeTitleValidation.js +18 -0
  101. package/components/InfiniteTreeList/styles.d.ts +5 -0
  102. package/components/InfiniteTreeList/styles.js +41 -0
  103. package/components/InfiniteTreeList/types.d.ts +4 -0
  104. package/components/InfiniteTreeList/useLogic/useLogic.d.ts +13 -5
  105. package/components/InfiniteTreeList/useLogic/useLogic.js +165 -27
  106. package/components/InfiniteTreeList/utils/checkHasFooterContent/checkHasFooterContent.d.ts +5 -0
  107. package/components/InfiniteTreeList/utils/checkHasFooterContent/checkHasFooterContent.js +4 -0
  108. package/components/InfiniteTreeList/utils/checkHasFooterContent/index.d.ts +1 -0
  109. package/components/InfiniteTreeList/utils/checkHasFooterContent/index.js +1 -0
  110. package/components/InfiniteTreeList/utils/checkHasNested/checkHasNested.d.ts +6 -0
  111. package/components/InfiniteTreeList/utils/checkHasNested/checkHasNested.js +5 -0
  112. package/components/InfiniteTreeList/utils/checkHasNested/index.d.ts +1 -0
  113. package/components/InfiniteTreeList/utils/checkHasNested/index.js +1 -0
  114. package/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.d.ts +8 -3
  115. package/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.js +30 -12
  116. package/components/InfiniteTreeList/utils/flattenTree/flattenTree.js +2 -1
  117. package/components/InfiniteTreeList/utils/getLevelKey/getLevelKey.d.ts +4 -0
  118. package/components/InfiniteTreeList/utils/getLevelKey/getLevelKey.js +5 -0
  119. package/components/InfiniteTreeList/utils/getLevelKey/index.d.ts +1 -0
  120. package/components/InfiniteTreeList/utils/getLevelKey/index.js +1 -0
  121. package/components/InfiniteTreeList/utils/index.d.ts +3 -0
  122. package/components/InfiniteTreeList/utils/index.js +3 -0
  123. package/components/useScrollManagement/useScrollManagement.js +7 -6
  124. package/node/components/ActionCellBase/ActionCellBase.js +10 -1
  125. package/node/components/ActionCellBase/MainAction/MainAction.js +6 -0
  126. package/node/components/ActionCellBase/MainAction/MainIconButton/MainIconButton.js +7 -4
  127. package/node/components/ActionCellBase/MainAction/MainIconButton/constants.d.ts +3 -0
  128. package/node/components/ActionCellBase/MainAction/MainIconButton/constants.js +7 -0
  129. package/node/components/ActionCellBase/MainAction/MainIconButton/styles.d.ts +11 -0
  130. package/node/components/ActionCellBase/MainAction/MainIconButton/styles.js +12 -0
  131. package/node/components/ActionCellBase/MainAction/MobileMainButton/MobileMainButton.d.ts +14 -0
  132. package/node/components/ActionCellBase/MainAction/MobileMainButton/MobileMainButton.js +21 -0
  133. package/node/components/ActionCellBase/MainAction/MobileMainButton/index.d.ts +1 -0
  134. package/node/components/ActionCellBase/MainAction/MobileMainButton/index.js +17 -0
  135. package/node/components/ActionCellBase/MainAction/MobileMainButton/styles.d.ts +11 -0
  136. package/node/components/ActionCellBase/MainAction/MobileMainButton/styles.js +10 -0
  137. package/node/components/ActionCellBase/SecondaryAction/SecondaryAction.js +2 -2
  138. package/node/components/ActionCellBase/SecondaryAction/styles.d.ts +4 -0
  139. package/node/components/ActionCellBase/SecondaryAction/styles.js +12 -0
  140. package/node/components/ActionCellBase/constants.d.ts +4 -0
  141. package/node/components/ActionCellBase/constants.js +8 -0
  142. package/node/components/ActionCellBase/styles.js +11 -0
  143. package/node/components/ActionCellBase/types.d.ts +25 -0
  144. package/node/components/InfiniteTreeList/InfiniteTreeList.js +16 -2
  145. package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.d.ts +4 -0
  146. package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.js +1 -0
  147. package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.d.ts +2 -2
  148. package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.js +3 -1
  149. package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/styles.js +8 -0
  150. package/node/components/InfiniteTreeList/InfiniteTreeListItem/InfiniteTreeListItem.js +6 -3
  151. package/node/components/InfiniteTreeList/InfiniteTreeListItem/constants.d.ts +2 -0
  152. package/node/components/InfiniteTreeList/InfiniteTreeListItem/constants.js +2 -0
  153. package/node/components/InfiniteTreeList/InfiniteTreeListItem/index.d.ts +1 -0
  154. package/node/components/InfiniteTreeList/InfiniteTreeListItem/index.js +3 -0
  155. package/node/components/InfiniteTreeList/InfiniteTreeListItem/styles.d.ts +14 -0
  156. package/node/components/InfiniteTreeList/InfiniteTreeListItem/styles.js +67 -3
  157. package/node/components/InfiniteTreeList/LevelHeader/LevelHeader.d.ts +5 -0
  158. package/node/components/InfiniteTreeList/LevelHeader/LevelHeader.js +21 -0
  159. package/node/components/InfiniteTreeList/LevelHeader/constants.d.ts +3 -0
  160. package/node/components/InfiniteTreeList/LevelHeader/constants.js +6 -0
  161. package/node/components/InfiniteTreeList/LevelHeader/index.d.ts +2 -0
  162. package/node/components/InfiniteTreeList/LevelHeader/index.js +18 -0
  163. package/node/components/InfiniteTreeList/LevelHeader/styles.d.ts +365 -0
  164. package/node/components/InfiniteTreeList/LevelHeader/styles.js +54 -0
  165. package/node/components/InfiniteTreeList/LevelHeader/types.d.ts +14 -0
  166. package/node/components/InfiniteTreeList/LevelHeader/types.js +2 -0
  167. package/node/components/InfiniteTreeList/ListFooter/styles.js +8 -0
  168. package/node/components/InfiniteTreeList/OnTopButton/styles.js +7 -0
  169. package/node/components/InfiniteTreeList/ParentItems/Item/Item.js +10 -2
  170. package/node/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.d.ts +1 -0
  171. package/node/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.js +10 -2
  172. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/NoDataRow.js +2 -2
  173. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/styles.d.ts +3 -0
  174. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/styles.js +14 -0
  175. package/node/components/InfiniteTreeList/TreeItem/TreeItem.js +6 -3
  176. package/node/components/InfiniteTreeList/TreeItem/styles.js +19 -0
  177. package/node/components/InfiniteTreeList/TreeItem/useLogic/useLogic.d.ts +2 -1
  178. package/node/components/InfiniteTreeList/TreeItem/useLogic/useLogic.js +4 -3
  179. package/node/components/InfiniteTreeList/constants.d.ts +21 -0
  180. package/node/components/InfiniteTreeList/constants.js +22 -1
  181. package/node/components/InfiniteTreeList/hooks/index.d.ts +2 -0
  182. package/node/components/InfiniteTreeList/hooks/index.js +2 -0
  183. package/node/components/InfiniteTreeList/hooks/useLevelNavigation/index.d.ts +2 -0
  184. package/node/components/InfiniteTreeList/hooks/useLevelNavigation/index.js +18 -0
  185. package/node/components/InfiniteTreeList/hooks/useLevelNavigation/types.d.ts +15 -0
  186. package/node/components/InfiniteTreeList/hooks/useLevelNavigation/types.js +2 -0
  187. package/node/components/InfiniteTreeList/hooks/useLevelNavigation/useLevelNavigation.d.ts +15 -0
  188. package/node/components/InfiniteTreeList/hooks/useLevelNavigation/useLevelNavigation.js +52 -0
  189. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/index.d.ts +3 -0
  190. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/index.js +19 -0
  191. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/index.d.ts +2 -0
  192. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/index.js +18 -0
  193. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/types.d.ts +16 -0
  194. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/types.js +2 -0
  195. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/useLevelSnapshots.d.ts +12 -0
  196. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useLevelSnapshots/useLevelSnapshots.js +46 -0
  197. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/index.d.ts +2 -0
  198. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/index.js +18 -0
  199. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/types.d.ts +12 -0
  200. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/types.js +2 -0
  201. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/useScrollToTopButton.d.ts +15 -0
  202. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useScrollToTopButton/useScrollToTopButton.js +31 -0
  203. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/index.d.ts +2 -0
  204. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/index.js +18 -0
  205. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/types.d.ts +11 -0
  206. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/types.js +2 -0
  207. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/useTailWatcher.d.ts +12 -0
  208. package/node/components/InfiniteTreeList/hooks/useListScroll/hooks/useTailWatcher/useTailWatcher.js +43 -0
  209. package/node/components/InfiniteTreeList/hooks/useListScroll/types.d.ts +14 -2
  210. package/node/components/InfiniteTreeList/hooks/useListScroll/useListScroll.d.ts +9 -6
  211. package/node/components/InfiniteTreeList/hooks/useListScroll/useListScroll.js +190 -26
  212. package/node/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/getOffsetTop.d.ts +4 -0
  213. package/node/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/getOffsetTop.js +10 -0
  214. package/node/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/index.d.ts +1 -0
  215. package/node/components/InfiniteTreeList/hooks/useListScroll/utils/getOffsetTop/index.js +17 -0
  216. package/node/components/InfiniteTreeList/hooks/useListScroll/utils/index.d.ts +1 -0
  217. package/node/components/InfiniteTreeList/hooks/useListScroll/utils/index.js +17 -0
  218. package/node/components/InfiniteTreeList/hooks/useNodeTitleValidation/index.d.ts +2 -0
  219. package/node/components/InfiniteTreeList/hooks/useNodeTitleValidation/index.js +18 -0
  220. package/node/components/InfiniteTreeList/hooks/useNodeTitleValidation/types.d.ts +14 -0
  221. package/node/components/InfiniteTreeList/hooks/useNodeTitleValidation/types.js +2 -0
  222. package/node/components/InfiniteTreeList/hooks/useNodeTitleValidation/useNodeTitleValidation.d.ts +5 -0
  223. package/node/components/InfiniteTreeList/hooks/useNodeTitleValidation/useNodeTitleValidation.js +22 -0
  224. package/node/components/InfiniteTreeList/styles.d.ts +5 -0
  225. package/node/components/InfiniteTreeList/styles.js +44 -0
  226. package/node/components/InfiniteTreeList/types.d.ts +4 -0
  227. package/node/components/InfiniteTreeList/useLogic/useLogic.d.ts +13 -5
  228. package/node/components/InfiniteTreeList/useLogic/useLogic.js +162 -24
  229. package/node/components/InfiniteTreeList/utils/checkHasFooterContent/checkHasFooterContent.d.ts +5 -0
  230. package/node/components/InfiniteTreeList/utils/checkHasFooterContent/checkHasFooterContent.js +8 -0
  231. package/node/components/InfiniteTreeList/utils/checkHasFooterContent/index.d.ts +1 -0
  232. package/node/components/InfiniteTreeList/utils/checkHasFooterContent/index.js +17 -0
  233. package/node/components/InfiniteTreeList/utils/checkHasNested/checkHasNested.d.ts +6 -0
  234. package/node/components/InfiniteTreeList/utils/checkHasNested/checkHasNested.js +9 -0
  235. package/node/components/InfiniteTreeList/utils/checkHasNested/index.d.ts +1 -0
  236. package/node/components/InfiniteTreeList/utils/checkHasNested/index.js +17 -0
  237. package/node/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.d.ts +8 -3
  238. package/node/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.js +30 -12
  239. package/node/components/InfiniteTreeList/utils/flattenTree/flattenTree.js +2 -1
  240. package/node/components/InfiniteTreeList/utils/getLevelKey/getLevelKey.d.ts +4 -0
  241. package/node/components/InfiniteTreeList/utils/getLevelKey/getLevelKey.js +9 -0
  242. package/node/components/InfiniteTreeList/utils/getLevelKey/index.d.ts +1 -0
  243. package/node/components/InfiniteTreeList/utils/getLevelKey/index.js +17 -0
  244. package/node/components/InfiniteTreeList/utils/index.d.ts +3 -0
  245. package/node/components/InfiniteTreeList/utils/index.js +3 -0
  246. package/node/components/useScrollManagement/useScrollManagement.js +6 -5
  247. package/package.json +1 -1
@@ -1,14 +1,16 @@
1
- import { useCallback, useContext, useMemo, useRef } from 'react';
1
+ import { useCallback, useContext, useEffect, useMemo, useRef } from 'react';
2
2
  import { ConfigContext } from '../../ConfigProvider';
3
+ import { useViewportType } from '../../useViewportType';
3
4
  import { CHILDREN_SKELETON_COUNT } from '../constants';
4
- import { useChildrenState, useEnterAnimation, useExpandNotifier, useFlatTree, useListScroll, } from '../hooks';
5
- import { createParentSlots } from '../utils';
5
+ import { useChildrenState, useEnterAnimation, useExpandNotifier, useFlatTree, useLevelNavigation, useListScroll, useNodeTitleValidation, } from '../hooks';
6
+ import { checkHasFooterContent, countDirectChildren, createParentSlots, getLevelKey, } from '../utils';
6
7
  /**
7
8
  * Логика списка: сводит плоский список, данные дочерних элементов, скролл
8
9
  * и анимацию появления строк в props для `Virtuoso` и дочерних компонентов
9
10
  */
10
11
  export const useLogic = ({ initialExpandedLevel, items, onRetry, errorMsg, isError, isLoading, scrollRef, isEndReached, onLoadMore, renderItem, renderParent, itemSkeleton, endOfScrollMsg, noDataImgSrc, errorImgSrc, }) => {
11
12
  const { imagesMap } = useContext(ConfigContext);
13
+ const { isMobile } = useViewportType();
12
14
  const enterAnimation = useEnterAnimation();
13
15
  const parentSlotsRef = useRef(null);
14
16
  if (!parentSlotsRef.current) {
@@ -25,6 +27,7 @@ export const useLogic = ({ initialExpandedLevel, items, onRetry, errorMsg, isErr
25
27
  enterAnimation,
26
28
  onCollapse: resetExpandNotification,
27
29
  });
30
+ const skeletonCount = itemSkeleton ? CHILDREN_SKELETON_COUNT : 1;
28
31
  const { registerChildren, nodePaginationMap, parentItems } = useChildrenState({
29
32
  items,
30
33
  flatList,
@@ -34,49 +37,185 @@ export const useLogic = ({ initialExpandedLevel, items, onRetry, errorMsg, isErr
34
37
  enterAnimation,
35
38
  insertChildren,
36
39
  syncChildrenPlaceholders,
37
- skeletonCount: itemSkeleton ? CHILDREN_SKELETON_COUNT : 1,
40
+ skeletonCount,
38
41
  releaseParentSlot,
39
42
  });
40
- const { scrollParent, tailRegistry, isEndReachedWithScroll, virtuosoProps, onTopButtonProps, } = useListScroll({
43
+ const checkNodeExists = useCallback((nodeId) => flatList.some(({ id }) => id === nodeId), [flatList]);
44
+ const { currentNodeId, baseNodeId, activeLevelKeys, hasUpperLevel, isRootLevel, enterNode, leaveNode, } = useLevelNavigation({ items, isMobile, checkNodeExists });
45
+ const isBaseNodeExpanded = Boolean(baseNodeId && expandedIds.has(baseNodeId));
46
+ // Если корневой узел 1, то базовым уровнем становятся его дочерние элементы на
47
+ // мобильных устройствах
48
+ useEffect(() => {
49
+ if (!isMobile || !baseNodeId || isBaseNodeExpanded) {
50
+ return;
51
+ }
52
+ onToggle({ id: baseNodeId });
53
+ }, [isMobile, baseNodeId, isBaseNodeExpanded, onToggle]);
54
+ const currentNode = useMemo(() => {
55
+ if (!currentNodeId) {
56
+ return undefined;
57
+ }
58
+ return flatList.find(({ id }) => id === currentNodeId);
59
+ }, [currentNodeId, flatList]);
60
+ const levelTitle = currentNode?.title;
61
+ useNodeTitleValidation({
62
+ isMobile,
63
+ currentNodeId: currentNode?.id,
64
+ title: levelTitle,
65
+ });
66
+ const displayedList = useMemo(() => {
67
+ if (!isMobile) {
68
+ return flatList;
69
+ }
70
+ if (!currentNodeId) {
71
+ return flatList.filter((item) => item.meta.level === 0);
72
+ }
73
+ return flatList.filter((item) => item.meta.parentId === currentNodeId);
74
+ }, [isMobile, flatList, currentNodeId]);
75
+ // Уровни живут только на мобильной ширине
76
+ const levelKey = getLevelKey(isMobile ? currentNodeId : undefined);
77
+ const { scrollParent, listRef, tailRegistry, isEndReachedWithScroll, virtuosoProps, onTopButtonProps, saveLevelSnapshot, dropLevelSnapshot, } = useListScroll({
41
78
  scrollRef,
42
79
  isEndReached,
43
80
  onLoadMore,
44
- flatListRef,
81
+ displayedList,
45
82
  enterAnimation,
83
+ isRootLevel,
84
+ levelKey,
85
+ activeLevelKeys,
46
86
  });
47
- const contentStateProps = useMemo(() => {
48
- const isNoData = !items?.length;
49
- return {
50
- // Проверка на текущие элементы списка необходима для рендера loading состояния при подгрузке данных
51
- // вместо общего LoadingPlaceholder на всю страницу
52
- isLoading: isNoData && isLoading,
53
- isError: isNoData && isError,
54
- loadingTitle: 'Загрузка данных',
55
- errorState: {
56
- imgAlt: 'Что-то пошло не так',
57
- errorList: [errorMsg || ''],
58
- imgSrc: errorImgSrc ?? imagesMap.defaultErrorImgSrc,
59
- onRetry,
60
- },
61
- };
62
- }, [items, isLoading, isError, errorMsg, errorImgSrc, onRetry, imagesMap]);
87
+ // Смена уровня — не появление строк, анимировать их не нужно
88
+ const prevLevelKeyRef = useRef(levelKey);
89
+ useEffect(() => {
90
+ if (prevLevelKeyRef.current === levelKey) {
91
+ return;
92
+ }
93
+ prevLevelKeyRef.current = levelKey;
94
+ enterAnimation.reset();
95
+ }, [levelKey, enterAnimation]);
96
+ const prepareNodeChildren = useCallback((listItem) => {
97
+ if (!expandedIdsRef.current.has(listItem.id)) {
98
+ onToggle(listItem);
99
+ }
100
+ const hasChildrenInList = Boolean(listItem.children?.length) ||
101
+ countDirectChildren(flatListRef.current, listItem.id) > 0;
102
+ if (!hasChildrenInList) {
103
+ syncChildrenPlaceholders(listItem.id, true, skeletonCount);
104
+ }
105
+ }, [
106
+ onToggle,
107
+ flatListRef,
108
+ expandedIdsRef,
109
+ syncChildrenPlaceholders,
110
+ skeletonCount,
111
+ ]);
112
+ // На мобильной ширине дети узла открываются отдельным уровнем
113
+ const handleEnterNode = useCallback((item) => {
114
+ const listItem = flatListRef.current.find(({ id }) => id === item.id);
115
+ if (!listItem?.meta.hasNested) {
116
+ return;
117
+ }
118
+ prepareNodeChildren(listItem);
119
+ // Открытие уровня — не появление строк, анимировать их не нужно
120
+ enterAnimation.reset();
121
+ saveLevelSnapshot();
122
+ // Переход внутрь узла показывает уровень с начала
123
+ dropLevelSnapshot(getLevelKey(item.id));
124
+ enterNode(item.id);
125
+ }, [
126
+ flatListRef,
127
+ prepareNodeChildren,
128
+ enterAnimation,
129
+ saveLevelSnapshot,
130
+ dropLevelSnapshot,
131
+ enterNode,
132
+ ]);
133
+ const handleToggle = useCallback((item) => {
134
+ if (isMobile) {
135
+ handleEnterNode(item);
136
+ return;
137
+ }
138
+ onToggle(item);
139
+ }, [isMobile, handleEnterNode, onToggle]);
140
+ const handleLeaveLevel = useCallback(() => {
141
+ enterAnimation.reset();
142
+ saveLevelSnapshot();
143
+ leaveNode();
144
+ }, [saveLevelSnapshot, leaveNode, enterAnimation]);
145
+ const isNoData = !items?.length;
146
+ const state = useMemo(() => {
147
+ if (!isNoData) {
148
+ return undefined;
149
+ }
150
+ if (isLoading) {
151
+ return 'loading';
152
+ }
153
+ if (isError) {
154
+ return 'error';
155
+ }
156
+ return 'noData';
157
+ }, [isNoData, isLoading, isError]);
158
+ const contentStateProps = useMemo(() => ({
159
+ isLoading: state === 'loading',
160
+ isError: state === 'error',
161
+ loadingTitle: 'Загрузка данных',
162
+ errorState: {
163
+ imgAlt: 'Что-то пошло не так',
164
+ errorList: [errorMsg || ''],
165
+ imgSrc: errorImgSrc ?? imagesMap.defaultErrorImgSrc,
166
+ onRetry,
167
+ },
168
+ }), [state, errorMsg, errorImgSrc, onRetry, imagesMap]);
169
+ // Футер отвечает за корневой список
63
170
  const footerContext = useMemo(() => ({
171
+ isLoading: isRootLevel && isLoading,
172
+ isError: isRootLevel && isError,
173
+ isEndReached: isRootLevel && isEndReachedWithScroll,
174
+ endOfScrollMsg,
175
+ onRetry,
176
+ }), [
177
+ isRootLevel,
64
178
  isLoading,
65
179
  isError,
66
- isEndReached: isEndReachedWithScroll,
180
+ isEndReachedWithScroll,
67
181
  endOfScrollMsg,
68
182
  onRetry,
69
- }), [isLoading, isError, isEndReachedWithScroll, endOfScrollMsg, onRetry]);
183
+ ]);
184
+ const lastRowId = useMemo(() => {
185
+ if (checkHasFooterContent(footerContext)) {
186
+ return undefined;
187
+ }
188
+ return displayedList[displayedList.length - 1]?.id;
189
+ }, [footerContext, displayedList]);
190
+ const levelHeaderProps = useMemo(() => {
191
+ if (!isMobile || !currentNodeId) {
192
+ return undefined;
193
+ }
194
+ if (!levelTitle && !hasUpperLevel) {
195
+ return undefined;
196
+ }
197
+ return {
198
+ title: levelTitle,
199
+ hasBackButton: hasUpperLevel,
200
+ onBack: handleLeaveLevel,
201
+ };
202
+ }, [isMobile, currentNodeId, levelTitle, hasUpperLevel, handleLeaveLevel]);
70
203
  return {
71
- flatList,
72
- onToggle,
204
+ displayedList,
205
+ levelKey,
206
+ lastRowId,
207
+ levelHeaderProps,
208
+ onToggle: handleToggle,
73
209
  nodePaginationMap,
74
210
  registerChildren,
75
211
  notifyExpand,
76
212
  parentItems,
77
213
  acquireParentSlot,
78
214
  contentStateProps,
215
+ isNoData,
216
+ state,
79
217
  scrollParent,
218
+ listRef,
80
219
  virtuosoProps,
81
220
  footerContext,
82
221
  onTopButtonProps,
@@ -85,7 +224,6 @@ export const useLogic = ({ initialExpandedLevel, items, onRetry, errorMsg, isErr
85
224
  // Fallback подставляется один раз: ниже по дереву строка выбирает функцию по
86
225
  // типу узла, не проверяя, передал ли потребитель renderParent
87
226
  renderParent: renderParent ?? renderItem,
88
- items,
89
227
  onRetry,
90
228
  noDataImgSrc,
91
229
  enterAnimation,
@@ -0,0 +1,5 @@
1
+ import type { ListFooterContext } from '../../ListFooter';
2
+ /**
3
+ * Проверяет, покажет ли футер списка placeholder
4
+ */
5
+ export declare const checkHasFooterContent: ({ isLoading, isError, isEndReached, }: ListFooterContext) => boolean;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Проверяет, покажет ли футер списка placeholder
3
+ */
4
+ export const checkHasFooterContent = ({ isLoading, isError, isEndReached, }) => Boolean(isLoading || isError || isEndReached);
@@ -0,0 +1 @@
1
+ export * from './checkHasFooterContent';
@@ -0,0 +1 @@
1
+ export * from './checkHasFooterContent';
@@ -0,0 +1,6 @@
1
+ import type { InfiniteTreeListData } from '../../types';
2
+ /**
3
+ * Проверяет, есть ли у элемента вложенность: тем же признаком список решает,
4
+ * рисовать ли строке Chevron, а мобильный режим — уводит ли строка внутрь узла
5
+ */
6
+ export declare const checkHasNested: <TData extends InfiniteTreeListData<TData>>(item: TData) => boolean;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Проверяет, есть ли у элемента вложенность: тем же признаком список решает,
3
+ * рисовать ли строке Chevron, а мобильный режим — уводит ли строка внутрь узла
4
+ */
5
+ export const checkHasNested = (item) => Boolean(item.children) || item.hasChildren === true;
@@ -0,0 +1 @@
1
+ export * from './checkHasNested';
@@ -0,0 +1 @@
1
+ export * from './checkHasNested';
@@ -1,7 +1,8 @@
1
1
  export type TailRegistry = {
2
2
  /**
3
3
  * Регистрирует хвост ветки. Тот же `parentId` и `itemId` — обновляет callback.
4
- * Новый `itemId` сбрасывает `isLoadMoreRequested`
4
+ * Новый `itemId` сбрасывает `isLoadMoreRequested` и сразу проверяет хвост
5
+ * по последнему известному диапазону
5
6
  */
6
7
  register: (parentId: string, itemId: string, endReached: () => void) => void;
7
8
  /**
@@ -9,10 +10,14 @@ export type TailRegistry = {
9
10
  */
10
11
  unregister: (parentId: string, itemId?: string) => void;
11
12
  /**
12
- * Вызывает `endReached` для хвостов, чей индекс попадает в видимый диапазон.
13
- * `getIndex === -1` пропускает запись
13
+ * Запоминает видимый диапазон и вызывает `endReached` для хвостов, чей индекс
14
+ * в него попадает. `getIndex === -1` пропускает запись
14
15
  */
15
16
  checkRange: (endIndex: number, getIndex: (itemId: string) => number) => void;
17
+ /**
18
+ * Забывает запомненный диапазон: он относится к прежнему набору строк
19
+ */
20
+ forgetRange: () => void;
16
21
  };
17
22
  /**
18
23
  * Реестр хвостов вложенных веток. Живёт на экземпляре списка и переживает
@@ -4,6 +4,22 @@
4
4
  */
5
5
  export const createTailRegistry = () => {
6
6
  const entries = new Map();
7
+ // Диапазон приходит от виртуализации раньше, чем монтируется строка хвоста:
8
+ // без запоминания диапазона хвост, видимый с первого кадра уровня, не
9
+ // сработал бы вовсе
10
+ let lastEndIndex = null;
11
+ let lastGetIndex = null;
12
+ const checkEntry = (entry) => {
13
+ if (entry.isLoadMoreRequested || lastEndIndex === null || !lastGetIndex) {
14
+ return;
15
+ }
16
+ const index = lastGetIndex(entry.itemId);
17
+ if (index === -1 || lastEndIndex < index) {
18
+ return;
19
+ }
20
+ entry.isLoadMoreRequested = true;
21
+ entry.endReached();
22
+ };
7
23
  return {
8
24
  register(parentId, itemId, endReached) {
9
25
  const existing = entries.get(parentId);
@@ -11,7 +27,13 @@ export const createTailRegistry = () => {
11
27
  existing.endReached = endReached;
12
28
  return;
13
29
  }
14
- entries.set(parentId, { itemId, endReached, isLoadMoreRequested: false });
30
+ const entry = {
31
+ itemId,
32
+ endReached,
33
+ isLoadMoreRequested: false,
34
+ };
35
+ entries.set(parentId, entry);
36
+ checkEntry(entry);
15
37
  },
16
38
  unregister(parentId, itemId) {
17
39
  if (itemId === undefined) {
@@ -24,17 +46,13 @@ export const createTailRegistry = () => {
24
46
  }
25
47
  },
26
48
  checkRange(endIndex, getIndex) {
27
- entries.forEach((entry) => {
28
- if (entry.isLoadMoreRequested) {
29
- return;
30
- }
31
- const index = getIndex(entry.itemId);
32
- if (index === -1 || endIndex < index) {
33
- return;
34
- }
35
- entry.isLoadMoreRequested = true;
36
- entry.endReached();
37
- });
49
+ lastEndIndex = endIndex;
50
+ lastGetIndex = getIndex;
51
+ entries.forEach(checkEntry);
52
+ },
53
+ forgetRange() {
54
+ lastEndIndex = null;
55
+ lastGetIndex = null;
38
56
  },
39
57
  };
40
58
  };
@@ -1,3 +1,4 @@
1
+ import { checkHasNested } from '../checkHasNested';
1
2
  /**
2
3
  * Проверяет, подгружаются ли дочерние элементы узла отдельно.
3
4
  */
@@ -15,7 +16,7 @@ export const flattenTree = (items, expandedIds, parentPath = [], level = 0, pare
15
16
  const flattenedItem = {
16
17
  ...item,
17
18
  meta: {
18
- hasNested: Boolean(item.children) || item.hasChildren === true,
19
+ hasNested: checkHasNested(item),
19
20
  isChildrenAsync,
20
21
  level,
21
22
  path,
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Ключ уровня для снимков скролла и пересоздания списка
3
+ */
4
+ export declare const getLevelKey: (nodeId?: string) => string;
@@ -0,0 +1,5 @@
1
+ import { NODE_LEVEL_KEY_PREFIX, ROOT_LEVEL_KEY } from '../../constants';
2
+ /**
3
+ * Ключ уровня для снимков скролла и пересоздания списка
4
+ */
5
+ export const getLevelKey = (nodeId) => nodeId === undefined ? ROOT_LEVEL_KEY : `${NODE_LEVEL_KEY_PREFIX}${nodeId}`;
@@ -0,0 +1 @@
1
+ export * from './getLevelKey';
@@ -0,0 +1 @@
1
+ export * from './getLevelKey';
@@ -1,3 +1,5 @@
1
+ export * from './checkHasFooterContent';
2
+ export * from './checkHasNested';
1
3
  export * from './checkHasSkeletonPlaceholders';
2
4
  export * from './checkIsChildrenPlaceholder';
3
5
  export * from './checkIsChildrenPlaceholderOf';
@@ -12,6 +14,7 @@ export * from './flattenTree';
12
14
  export * from './getEnteringChildren';
13
15
  export * from './getIdsToKeep';
14
16
  export * from './getInitialExpandedIds';
17
+ export * from './getLevelKey';
15
18
  export * from './getNestedItems';
16
19
  export * from './insertChildren';
17
20
  export * from './removeChildren';
@@ -1,3 +1,5 @@
1
+ export * from './checkHasFooterContent';
2
+ export * from './checkHasNested';
1
3
  export * from './checkHasSkeletonPlaceholders';
2
4
  export * from './checkIsChildrenPlaceholder';
3
5
  export * from './checkIsChildrenPlaceholderOf';
@@ -12,6 +14,7 @@ export * from './flattenTree';
12
14
  export * from './getEnteringChildren';
13
15
  export * from './getIdsToKeep';
14
16
  export * from './getInitialExpandedIds';
17
+ export * from './getLevelKey';
15
18
  export * from './getNestedItems';
16
19
  export * from './insertChildren';
17
20
  export * from './removeChildren';
@@ -1,4 +1,4 @@
1
- import { useEffect, useState } from 'react';
1
+ import { useCallback, useEffect, useState } from 'react';
2
2
  import { pageLayoutClassnames } from '../PageLayoutContainer';
3
3
  import { useViewportType } from '../useViewportType';
4
4
  /**
@@ -23,13 +23,14 @@ export const useScrollManagement = ({ scrollRef, isEndReached, onLoadMore, virtu
23
23
  if (scrollRef?.current?.parentElement) {
24
24
  scrollRef.current.parentElement.style.position = 'relative';
25
25
  }
26
- }, [scrollRef]);
27
- const recalculateVerticalScroll = () => {
26
+ }, [scrollRef, isMobile]);
27
+ const recalculateVerticalScroll = useCallback(() => {
28
28
  const list = document.getElementById(virtuosoId);
29
- if (scrollRef?.current && list) {
30
- setHasVerticalScroll(list?.clientHeight > scrollRef.current?.clientHeight);
29
+ if (!scrollParent || !list) {
30
+ return;
31
31
  }
32
- };
32
+ setHasVerticalScroll(list.clientHeight > scrollParent.clientHeight);
33
+ }, [scrollParent, virtuosoId]);
33
34
  const handleEndReach = () => {
34
35
  if (!isEndReached && onLoadMore) {
35
36
  onLoadMore();
@@ -2,12 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ActionCellBase = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const cva_1 = require("../utils/cva");
6
+ const constants_1 = require("./constants");
5
7
  const MainAction_1 = require("./MainAction");
6
8
  const SecondaryAction_1 = require("./SecondaryAction");
7
9
  const styles_1 = require("./styles");
10
+ const actionCellCva = (0, cva_1.cva)(constants_1.actionCellBaseClassnames.root, {
11
+ variants: {
12
+ hasMainActions: {
13
+ true: constants_1.actionCellBaseClassnames.hasMainActions,
14
+ },
15
+ },
16
+ });
8
17
  const ActionCellBase = ({ actions, isDisabledAction, handleWrapperClick, handleActionClick, }) => {
9
18
  const { main, secondary } = actions;
10
- return ((0, jsx_runtime_1.jsxs)(styles_1.Wrapper, { onClick: handleWrapperClick, children: [main.map((action) => {
19
+ return ((0, jsx_runtime_1.jsxs)(styles_1.Wrapper, { onClick: handleWrapperClick, className: actionCellCva({ hasMainActions: Boolean(main.length) }), children: [main.map((action) => {
11
20
  return ((0, jsx_runtime_1.jsx)(MainAction_1.MainAction, { action: action, onActionClick: handleActionClick, isDisabled: isDisabledAction }, action.name));
12
21
  }), secondary && ((0, jsx_runtime_1.jsx)(SecondaryAction_1.SecondaryActions, { actions: secondary, onActionClick: handleActionClick, isDisabled: isDisabledAction }))] }));
13
22
  };
@@ -6,12 +6,18 @@ const react_1 = require("react");
6
6
  const IconDropdownButton_1 = require("../../IconDropdownButton");
7
7
  const MenuItem_1 = require("../../MenuItem");
8
8
  const Tooltip_1 = require("../../Tooltip");
9
+ const useViewportType_1 = require("../../useViewportType");
9
10
  const MainIconButton_1 = require("./MainIconButton");
11
+ const MobileMainButton_1 = require("./MobileMainButton");
10
12
  const MainAction = ({ action, onActionClick, isDisabled, }) => {
13
+ const { isMobile } = (0, useViewportType_1.useViewportType)();
11
14
  if ('actions' in action) {
12
15
  const { disabled, icon, name, disabledReason, actions } = action;
13
16
  return ((0, jsx_runtime_1.jsx)(Tooltip_1.Tooltip, { title: disabledReason || name, withoutContainer: !disabled, placement: "top", children: (0, jsx_runtime_1.jsx)(IconDropdownButton_1.IconDropdownButton, { icon: icon, variant: "text", disabled: isDisabled || disabled, children: actions.map(({ name: nestedActionName, onClick: onClickNested, ...props }) => ((0, react_1.createElement)(MenuItem_1.MenuItem, { ...props, key: nestedActionName, onClick: onActionClick(onClickNested) }, nestedActionName))) }) }, name));
14
17
  }
18
+ if (isMobile && action.isMobilePrimary) {
19
+ return ((0, jsx_runtime_1.jsx)(MobileMainButton_1.MobileMainButton, { action: action, onActionClick: onActionClick, isDisabled: isDisabled }));
20
+ }
15
21
  return ((0, jsx_runtime_1.jsx)(MainIconButton_1.MainIconButton, { action: action, onActionClick: onActionClick, isDisabled: isDisabled }));
16
22
  };
17
23
  exports.MainAction = MainAction;
@@ -3,15 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MainIconButton = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const ConfirmAction_1 = require("../../../ConfirmAction");
6
- const IconButton_1 = require("../../../IconButton");
7
6
  const Tooltip_1 = require("../../../Tooltip");
7
+ const constants_1 = require("./constants");
8
+ const styles_1 = require("./styles");
8
9
  const useLogic_1 = require("./useLogic");
9
10
  const MainIconButton = (props) => {
10
11
  const { tooltipProps } = (0, useLogic_1.useLogic)(props);
11
12
  const { action, onActionClick, isDisabled } = props;
12
- const { name, icon, needConfirm, confirmText, confirmButtonProps, disabledReason, disabled, loading, isBlockingOperation, loadingNote, onClick, ...actions } = action;
13
- const renderButton = (renderProps) => ((0, jsx_runtime_1.jsx)(Tooltip_1.Tooltip, { withoutContainer: !disabled, placement: "top", ...tooltipProps, children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { disabled: isDisabled || disabled, loading: loading, ...actions, variant: "text", ...renderProps, children: icon }) }, name));
14
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: needConfirm ? ((0, jsx_runtime_1.jsx)(ConfirmAction_1.ConfirmAction, { text: confirmText, confirmButtonProps: confirmButtonProps, actionComponent: (renderProps) => renderButton(renderProps), onConfirm: onActionClick(onClick) })) : (renderButton({
13
+ const { name, icon, needConfirm, confirmText, confirmMobileTitle, confirmButtonProps, disabledReason, disabled, loading, isBlockingOperation, loadingNote, onClick, isMobilePrimary, mobileProps, ...actions } = action;
14
+ const renderButton = (renderProps) => ((0, jsx_runtime_1.jsx)(Tooltip_1.Tooltip, { withoutContainer: !disabled, placement: "top", ...tooltipProps, children: (0, jsx_runtime_1.jsx)(styles_1.StyledIconButton, { disabled: isDisabled || disabled, loading: loading, ...actions, variant: "text", ...renderProps, className: constants_1.mainIconButtonClassnames.root, children: icon }) }, name));
15
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: needConfirm ? ((0, jsx_runtime_1.jsx)(ConfirmAction_1.ConfirmAction, { text: confirmText, confirmButtonProps: confirmButtonProps, popoverProps: {
16
+ title: confirmMobileTitle,
17
+ }, actionComponent: (renderProps) => renderButton(renderProps), onConfirm: onActionClick(onClick) })) : (renderButton({
15
18
  onClick: onActionClick(onClick),
16
19
  })) }));
17
20
  };
@@ -0,0 +1,3 @@
1
+ export declare const mainIconButtonClassnames: {
2
+ root: string;
3
+ };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mainIconButtonClassnames = void 0;
4
+ const createUIKitClassname_1 = require("../../../utils/createUIKitClassname");
5
+ exports.mainIconButtonClassnames = {
6
+ root: (0, createUIKitClassname_1.createUIKitClassname)('action-cell-base__main-icon-button'),
7
+ };
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ export declare const StyledIconButton: import("@emotion/styled/dist/declarations/src/types").StyledComponent<Omit<import("../../..").WithoutEmotionSpecific<import("@mui/material").ButtonProps>, "color" | "component" | "size" | "variant" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple"> & {
3
+ variant?: "light" | "link" | "text" | "contained" | "outlined" | undefined;
4
+ loading?: boolean | undefined;
5
+ color?: "primary" | "success" | "warning" | "error" | "grey" | undefined;
6
+ component?: import("react").ElementType | undefined;
7
+ selected?: boolean | undefined;
8
+ size?: "large" | "medium" | undefined;
9
+ } & Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, ""> & import("react").RefAttributes<HTMLButtonElement> & {
10
+ theme?: import("@emotion/react").Theme | undefined;
11
+ }, {}, {}>;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StyledIconButton = void 0;
4
+ const IconButton_1 = require("../../../IconButton");
5
+ const styled_1 = require("../../../styled");
6
+ exports.StyledIconButton = (0, styled_1.styled)(IconButton_1.IconButton) `
7
+ ${({ theme }) => theme.breakpoints.down('mobile')} {
8
+ order: 2;
9
+
10
+ background-color: ${({ theme }) => theme.palette.grey[100]};
11
+ }
12
+ `;
@@ -0,0 +1,14 @@
1
+ import { type IconButtonProps } from '../../../IconButton';
2
+ import { type ActionHandler, type SingleAction } from '../../types';
3
+ export type MobileMainButtonProps<TAction> = {
4
+ action: IconButtonProps & SingleAction<TAction>;
5
+ /**
6
+ * Обработчик клика на действие
7
+ */
8
+ onActionClick: ActionHandler<TAction>;
9
+ /**
10
+ * Если true, action не доступен
11
+ */
12
+ isDisabled?: boolean;
13
+ };
14
+ export declare const MobileMainButton: <TAction>({ action, isDisabled, onActionClick, }: MobileMainButtonProps<TAction>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MobileMainButton = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const ConfirmAction_1 = require("../../../ConfirmAction");
6
+ const styles_1 = require("./styles");
7
+ const MobileMainButton = ({ action, isDisabled, onActionClick, }) => {
8
+ const { mobileProps, name, icon, needConfirm, confirmText, confirmMobileTitle, confirmButtonProps, disabledReason, disabled, loading, isBlockingOperation, loadingNote, onClick, isMobilePrimary, ...actions } = action;
9
+ const text = mobileProps?.text ?? name;
10
+ const color = mobileProps?.color ?? 'primary';
11
+ const renderButton = (renderProps) => ((0, jsx_runtime_1.jsx)(styles_1.StyledButton, { disabled: isDisabled || disabled, loading: loading, color: color, ...actions, variant: "contained", ...renderProps, children: text }));
12
+ if (needConfirm) {
13
+ return ((0, jsx_runtime_1.jsx)(ConfirmAction_1.ConfirmAction, { text: confirmText, confirmButtonProps: confirmButtonProps, popoverProps: {
14
+ title: confirmMobileTitle,
15
+ }, actionComponent: (renderProps) => renderButton(renderProps), onConfirm: onActionClick(onClick) }));
16
+ }
17
+ return renderButton({
18
+ onClick: onActionClick(onClick),
19
+ });
20
+ };
21
+ exports.MobileMainButton = MobileMainButton;
@@ -0,0 +1 @@
1
+ export * from './MobileMainButton';
@@ -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("./MobileMainButton"), exports);