@infinite-table/infinite-react 0.4.13 → 0.5.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 (282) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/API.md +0 -0
  3. package/build/buildPackageJson.js +43 -0
  4. package/build/scripts/test.js +37 -0
  5. package/bundler.config.js +25 -0
  6. package/globals.d.ts +7 -0
  7. package/package.json +95 -3
  8. package/rollup.config.js +15 -0
  9. package/run-build-deepmap.js +47 -0
  10. package/run-build.js +45 -0
  11. package/run-dts-concat.js +21 -0
  12. package/src/components/CSSVariableWatch.tsx +82 -0
  13. package/src/components/DataSource/BooleanCollectionState.ts +214 -0
  14. package/src/components/DataSource/BooleanDeepCollectionState.ts +208 -0
  15. package/src/components/DataSource/DataSourceContext.ts +20 -0
  16. package/src/components/DataSource/GroupRowsState.ts +74 -0
  17. package/src/components/DataSource/Indexer.ts +27 -0
  18. package/src/components/DataSource/RowSelectionState.ts +763 -0
  19. package/src/components/DataSource/defaultFilterTypes.ts +64 -0
  20. package/src/components/DataSource/index.tsx +108 -0
  21. package/src/components/DataSource/privateHooks/getChangeDetect.ts +7 -0
  22. package/src/components/DataSource/privateHooks/useLoadData.ts +783 -0
  23. package/src/components/DataSource/publicHooks/useDataSource.ts +19 -0
  24. package/src/components/DataSource/publicHooks/useDataSourceActions.ts +14 -0
  25. package/src/components/DataSource/state/getInitialState.ts +494 -0
  26. package/src/components/DataSource/state/normalizeSortInfo.ts +35 -0
  27. package/src/components/DataSource/state/reducer.ts +466 -0
  28. package/src/components/DataSource/state/rowInfoStatus.ts +27 -0
  29. package/src/components/DataSource/types.ts +548 -0
  30. package/src/components/HeadlessTable/HeadlessTableWithPinnedContainers.tsx +142 -0
  31. package/src/components/HeadlessTable/MappedCells.ts +251 -0
  32. package/src/components/HeadlessTable/RawTable.tsx +98 -0
  33. package/src/components/HeadlessTable/ReactHeadlessTableRenderer.tsx +1516 -0
  34. package/src/components/HeadlessTable/index.tsx +234 -0
  35. package/src/components/InfiniteTable/InfiniteCls.css.ts +164 -0
  36. package/src/components/InfiniteTable/InfiniteTableContext.ts +16 -0
  37. package/src/components/InfiniteTable/api/getImperativeApi.ts +391 -0
  38. package/src/components/InfiniteTable/api/getSelectionApi.ts +364 -0
  39. package/src/components/InfiniteTable/api/type.ts +11 -0
  40. package/src/components/InfiniteTable/components/ActiveCellIndicator.css.ts +51 -0
  41. package/src/components/InfiniteTable/components/ActiveCellIndicator.tsx +116 -0
  42. package/src/components/InfiniteTable/components/ActiveRowIndicator.css.ts +56 -0
  43. package/src/components/InfiniteTable/components/ActiveRowIndicator.tsx +94 -0
  44. package/src/components/InfiniteTable/components/CheckBox.css.ts +13 -0
  45. package/src/components/InfiniteTable/components/CheckBox.tsx +96 -0
  46. package/src/components/InfiniteTable/components/FilterEditors.tsx +52 -0
  47. package/src/components/InfiniteTable/components/InfiniteTableBody/InfiniteTableBody.tsx +27 -0
  48. package/src/components/InfiniteTable/components/InfiniteTableBody/index.tsx +1 -0
  49. package/src/components/InfiniteTable/components/InfiniteTableFooter/InfiniteTableFooter.tsx +31 -0
  50. package/src/components/InfiniteTable/components/InfiniteTableFooter/index.tsx +1 -0
  51. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableColumnHeaderFilter.tsx +102 -0
  52. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeader.tsx +163 -0
  53. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderCell.tsx +574 -0
  54. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderGroup.tsx +79 -0
  55. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderTypes.tsx +25 -0
  56. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderWrapper.tsx +185 -0
  57. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/GroupResizeHandle.tsx +159 -0
  58. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/ResizeHandle.css.ts +124 -0
  59. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/columnResizer.ts +166 -0
  60. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/index.tsx +146 -0
  61. package/src/components/InfiniteTable/components/InfiniteTableHeader/buildColumnAndGroupTree.ts +240 -0
  62. package/src/components/InfiniteTable/components/InfiniteTableHeader/header.css.ts +358 -0
  63. package/src/components/InfiniteTable/components/InfiniteTableHeader/index.tsx +1 -0
  64. package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnGroupResizeHandle.tsx +114 -0
  65. package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnResizeHandle.tsx +146 -0
  66. package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/footer.css.ts +7 -0
  67. package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/index.tsx +110 -0
  68. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCell.tsx +120 -0
  69. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCellTypes.ts +74 -0
  70. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableColumnCell.tsx +457 -0
  71. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRow.tsx +107 -0
  72. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowClassName.ts +6 -0
  73. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowTypes.ts +32 -0
  74. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowUnvirtualized.tsx +75 -0
  75. package/src/components/InfiniteTable/components/InfiniteTableRow/columnRendering.tsx +263 -0
  76. package/src/components/InfiniteTable/components/InfiniteTableRow/index.tsx +1 -0
  77. package/src/components/InfiniteTable/components/InfiniteTableRow/row.css.ts +74 -0
  78. package/src/components/InfiniteTable/components/InfiniteTableRow/useRowDOMProps.ts +199 -0
  79. package/src/components/InfiniteTable/components/LoadMask.css.ts +34 -0
  80. package/src/components/InfiniteTable/components/LoadMask.tsx +27 -0
  81. package/src/components/InfiniteTable/components/ScrollbarPlaceholder.tsx +56 -0
  82. package/src/components/InfiniteTable/components/cell.css.ts +192 -0
  83. package/src/components/InfiniteTable/components/icons/ArrowDown.tsx +14 -0
  84. package/src/components/InfiniteTable/components/icons/ArrowUp.tsx +14 -0
  85. package/src/components/InfiniteTable/components/icons/ExpanderIcon.css.ts +31 -0
  86. package/src/components/InfiniteTable/components/icons/ExpanderIcon.tsx +63 -0
  87. package/src/components/InfiniteTable/components/icons/Icon.tsx +18 -0
  88. package/src/components/InfiniteTable/components/icons/InfiniteTableIconClassName.ts +1 -0
  89. package/src/components/InfiniteTable/components/icons/LoadingIcon.css.ts +8 -0
  90. package/src/components/InfiniteTable/components/icons/LoadingIcon.tsx +45 -0
  91. package/src/components/InfiniteTable/components/icons/MenuIcon.tsx +50 -0
  92. package/src/components/InfiniteTable/components/icons/SortIcon.tsx +113 -0
  93. package/src/components/InfiniteTable/eventHandlers/eventHandlerTypes.ts +57 -0
  94. package/src/components/InfiniteTable/eventHandlers/index.ts +95 -0
  95. package/src/components/InfiniteTable/eventHandlers/keyboardNavigation.ts +232 -0
  96. package/src/components/InfiniteTable/eventHandlers/keyboardSelection.ts +110 -0
  97. package/src/components/InfiniteTable/eventHandlers/onCellClick.ts +94 -0
  98. package/src/components/InfiniteTable/eventHandlers/onKeyDown.ts +25 -0
  99. package/src/components/InfiniteTable/hooks/adjustColumnOrderForAllColumns.ts +70 -0
  100. package/src/components/InfiniteTable/hooks/reorderColumnsOnDrag.ts +476 -0
  101. package/src/components/InfiniteTable/hooks/useAutoSizeColumns.ts +206 -0
  102. package/src/components/InfiniteTable/hooks/useCellClassName.ts +80 -0
  103. package/src/components/InfiniteTable/hooks/useCellRendering.tsx +217 -0
  104. package/src/components/InfiniteTable/hooks/useColumnGroups.ts +71 -0
  105. package/src/components/InfiniteTable/hooks/useColumnMenu.ts +72 -0
  106. package/src/components/InfiniteTable/hooks/useColumnPointerEvents.ts +258 -0
  107. package/src/components/InfiniteTable/hooks/useColumnRowspan.ts +43 -0
  108. package/src/components/InfiniteTable/hooks/useColumnSizeFn.ts +24 -0
  109. package/src/components/InfiniteTable/hooks/useColumnsWhen.ts +582 -0
  110. package/src/components/InfiniteTable/hooks/useComputed.ts +186 -0
  111. package/src/components/InfiniteTable/hooks/useComputedVisibleColumns.ts +219 -0
  112. package/src/components/InfiniteTable/hooks/useDOMProps.ts +306 -0
  113. package/src/components/InfiniteTable/hooks/useEffectWithRaf.ts +47 -0
  114. package/src/components/InfiniteTable/hooks/useInfiniteTable.ts +10 -0
  115. package/src/components/InfiniteTable/hooks/useInfiniteTableState.ts +11 -0
  116. package/src/components/InfiniteTable/hooks/useInternalProps.ts +8 -0
  117. package/src/components/InfiniteTable/hooks/useLicense/LicenseDetails.ts +13 -0
  118. package/src/components/InfiniteTable/hooks/useLicense/crc32.ts +56 -0
  119. package/src/components/InfiniteTable/hooks/useLicense/decode.ts +147 -0
  120. package/src/components/InfiniteTable/hooks/useLicense/useLicense.ts +39 -0
  121. package/src/components/InfiniteTable/hooks/useRerenderOnKeyChange.ts +21 -0
  122. package/src/components/InfiniteTable/hooks/useRowHover.ts +18 -0
  123. package/src/components/InfiniteTable/hooks/useScrollToActiveCell.ts +48 -0
  124. package/src/components/InfiniteTable/hooks/useScrollToActiveRow.ts +44 -0
  125. package/src/components/InfiniteTable/hooks/useScrollbars.ts +51 -0
  126. package/src/components/InfiniteTable/hooks/useToggleGroupRow.ts +56 -0
  127. package/src/components/InfiniteTable/hooks/useUnpinnedRendering.tsx +165 -0
  128. package/src/components/InfiniteTable/hooks/useYourBrain.ts +55 -0
  129. package/src/components/InfiniteTable/index.tsx +352 -0
  130. package/src/components/InfiniteTable/internalProps.ts +4 -0
  131. package/src/components/InfiniteTable/state/computeColumnGroupsDepths.ts +29 -0
  132. package/src/components/InfiniteTable/state/getColumnVisibilityForHideEmptyGroupColumns.ts +127 -0
  133. package/src/components/InfiniteTable/state/getInitialState.ts +375 -0
  134. package/src/components/InfiniteTable/theme.css.ts +556 -0
  135. package/src/components/InfiniteTable/types/InfiniteTableAction.ts +6 -0
  136. package/src/components/InfiniteTable/types/InfiniteTableActionType.ts +12 -0
  137. package/src/components/InfiniteTable/types/InfiniteTableColumn.ts +478 -0
  138. package/src/components/InfiniteTable/types/InfiniteTableComputedValues.ts +43 -0
  139. package/src/components/InfiniteTable/types/InfiniteTableContextValue.ts +12 -0
  140. package/src/components/InfiniteTable/types/InfiniteTableInternalProps.ts +3 -0
  141. package/src/components/InfiniteTable/types/InfiniteTableProps.ts +511 -0
  142. package/src/components/InfiniteTable/types/InfiniteTableState.ts +195 -0
  143. package/src/components/InfiniteTable/types/Utility.ts +35 -0
  144. package/src/components/InfiniteTable/types/index.ts +96 -0
  145. package/src/components/InfiniteTable/utilities.css.ts +179 -0
  146. package/src/components/InfiniteTable/utils/MultiRowSelector.ts +111 -0
  147. package/src/components/InfiniteTable/utils/RenderHookComponentForInfinite.tsx +52 -0
  148. package/src/components/InfiniteTable/utils/adjustColumnOrderForPinning.ts +33 -0
  149. package/src/components/InfiniteTable/utils/assignFiltered.ts +29 -0
  150. package/src/components/InfiniteTable/utils/defaultGetColumContextMenuItems.tsx +108 -0
  151. package/src/components/InfiniteTable/utils/getColumnComputedType.ts +33 -0
  152. package/src/components/InfiniteTable/utils/getColumnForGroupBy.tsx +313 -0
  153. package/src/components/InfiniteTable/utils/getComputedVisibleColumns.ts +773 -0
  154. package/src/components/InfiniteTable/utils/getContextMenuForColumn.tsx +72 -0
  155. package/src/components/InfiniteTable/utils/infiniteDOMUtils.ts +189 -0
  156. package/src/components/InfiniteTable/utils/mapToObject.ts +20 -0
  157. package/src/components/InfiniteTable/utils/moveXatY.ts +25 -0
  158. package/src/components/InfiniteTable/utils/objectValuesExcept.ts +9 -0
  159. package/src/components/InfiniteTable/utils/progressiveSpeedScroller.ts +158 -0
  160. package/src/components/InfiniteTable/utils/rafFn.ts +13 -0
  161. package/src/components/InfiniteTable/utils/toCSSVarName.ts +1 -0
  162. package/src/components/InfiniteTable/utils/toMap.ts +24 -0
  163. package/src/components/Menu/Menu.tsx +750 -0
  164. package/src/components/Menu/MenuCls.css.ts +139 -0
  165. package/src/components/Menu/MenuContext.ts +10 -0
  166. package/src/components/Menu/MenuContextValue.ts +15 -0
  167. package/src/components/Menu/MenuProps.ts +98 -0
  168. package/src/components/Menu/MenuState.ts +56 -0
  169. package/src/components/Menu/MenuTriangleContext.ts +352 -0
  170. package/src/components/Menu/childrenToRuntimeItems.tsx +103 -0
  171. package/src/components/Menu/getMenuState.tsx +119 -0
  172. package/src/components/Menu/index.tsx +88 -0
  173. package/src/components/Menu/propToIdentifyMenu.ts +1 -0
  174. package/src/components/RawList/AvoidReactDiff.tsx +48 -0
  175. package/src/components/RawList/MappedItems.ts +143 -0
  176. package/src/components/RawList/ReactVirtualRenderer.tsx +307 -0
  177. package/src/components/RawList/index.tsx +42 -0
  178. package/src/components/RawList/types.ts +23 -0
  179. package/src/components/RawList/useVirtualRenderer.ts +36 -0
  180. package/src/components/RenderHookComponent.tsx +10 -0
  181. package/src/components/ResizeObserver/index.tsx +170 -0
  182. package/src/components/VirtualBrain/MatrixBrain.ts +1621 -0
  183. package/src/components/VirtualBrain/ScrollListener.ts +39 -0
  184. package/src/components/VirtualBrain/index.ts +664 -0
  185. package/src/components/VirtualList/ColumnListWithExternalScrolling.tsx +78 -0
  186. package/src/components/VirtualList/InfiniteListRootClassName.ts +1 -0
  187. package/src/components/VirtualList/RowListWithExternalScrolling.tsx +120 -0
  188. package/src/components/VirtualList/SpacePlaceholder.tsx +32 -0
  189. package/src/components/VirtualList/VirtualList.css.ts +29 -0
  190. package/src/components/VirtualList/VirtualList.tsx +141 -0
  191. package/src/components/VirtualList/VirtualRowList.tsx +34 -0
  192. package/src/components/VirtualList/types.ts +56 -0
  193. package/src/components/VirtualList/useCorrectHeightForRowElements.ts +14 -0
  194. package/src/components/VirtualScrollContainer/VirtualScrollContainer.css.ts +51 -0
  195. package/src/components/VirtualScrollContainer/getScrollableClassName.ts +30 -0
  196. package/src/components/VirtualScrollContainer/index.tsx +63 -0
  197. package/src/components/flexbox/index.ts +562 -0
  198. package/src/components/hooks/useComponentState/index.tsx +562 -0
  199. package/src/components/hooks/useComponentState/types.ts +32 -0
  200. package/src/components/hooks/useEffectOnceWithProperUnmount.ts +33 -0
  201. package/src/components/hooks/useEffectWithChanges.ts +56 -0
  202. package/src/components/hooks/useImmutableRef.ts +7 -0
  203. package/src/components/hooks/useInterceptedMap.ts +71 -0
  204. package/src/components/hooks/useLatest.tsx +8 -0
  205. package/src/components/hooks/useLazyLatest.ts +23 -0
  206. package/src/components/hooks/useMemoShallowObjectMerge.ts +16 -0
  207. package/src/components/hooks/useMounted.ts +18 -0
  208. package/src/components/hooks/useOnMount.ts +21 -0
  209. package/src/components/hooks/useOnScroll.ts +34 -0
  210. package/src/components/hooks/useOnce.ts +10 -0
  211. package/src/components/hooks/useOverlay/index.tsx +418 -0
  212. package/src/components/hooks/usePrevious.ts +8 -0
  213. package/src/components/hooks/usePropertyOld.ts +168 -0
  214. package/src/components/hooks/useRerender.ts +12 -0
  215. package/src/components/hooks/xuseProperty.ts +165 -0
  216. package/src/components/types/CellPosition.ts +4 -0
  217. package/src/components/types/NonUndefined.ts +1 -0
  218. package/src/components/types/RemoveObject.ts +22 -0
  219. package/src/components/types/Renderable.ts +3 -0
  220. package/src/components/types/ScrollPosition.ts +7 -0
  221. package/src/components/types/Setter.ts +2 -0
  222. package/src/components/types/Size.ts +6 -0
  223. package/src/components/types/SubscriptionCallback.ts +10 -0
  224. package/src/components/types/VoidFn.ts +1 -0
  225. package/src/components/utils/buildSubscriptionCallback.tsx +60 -0
  226. package/src/components/utils/clamp.ts +3 -0
  227. package/src/components/utils/debounce.ts +16 -0
  228. package/src/components/utils/decamelize.ts +11 -0
  229. package/src/components/utils/discardCallsWithEqualArg.ts +42 -0
  230. package/src/components/utils/getRenderIndexes.ts +33 -0
  231. package/src/components/utils/getScrollbarWidth.ts +31 -0
  232. package/src/components/utils/getVirtualRenderCount.ts +21 -0
  233. package/src/components/utils/isControlled.ts +12 -0
  234. package/src/components/utils/isControlledValue.ts +5 -0
  235. package/src/index.tsx +34 -0
  236. package/src/test.tsx +18 -0
  237. package/src/utils/DeepMap/index.ts +588 -0
  238. package/src/utils/DeepMap/once.ts +16 -0
  239. package/src/utils/DeepMap/sortAscending.ts +1 -0
  240. package/src/utils/DeepMap/tsconfig.deepmap.json +17 -0
  241. package/src/utils/DeepMap/xpackage.json +26 -0
  242. package/src/utils/debug.ts +40 -0
  243. package/src/utils/deepClone.ts +38 -0
  244. package/src/utils/getGlobal.ts +3 -0
  245. package/src/utils/groupAndPivot/defaultToKey.ts +3 -0
  246. package/src/utils/groupAndPivot/getGroupKeysForDataItem.ts +19 -0
  247. package/src/utils/groupAndPivot/getPivotColumnsAndColumnGroups.ts +361 -0
  248. package/src/utils/groupAndPivot/index.ts +1229 -0
  249. package/src/utils/groupAndPivot/types.ts +10 -0
  250. package/src/utils/join.ts +4 -0
  251. package/src/utils/mathIntersection.ts +21 -0
  252. package/src/utils/minified.d.ts +2 -0
  253. package/src/utils/minified.js +6 -0
  254. package/src/utils/multisort/index.ts +151 -0
  255. package/src/utils/multisort/sortTypes.ts +25 -0
  256. package/src/utils/notes-status.md +92 -0
  257. package/src/utils/pageGeometry/ConvexPoly.ts +34 -0
  258. package/src/utils/pageGeometry/Point.ts +51 -0
  259. package/src/utils/pageGeometry/PolyWithPoints.ts +52 -0
  260. package/src/utils/pageGeometry/Rectangle.ts +98 -0
  261. package/src/utils/pageGeometry/Triangle.ts +16 -0
  262. package/src/utils/pageGeometry/alignment/index.ts +221 -0
  263. package/src/utils/pageGeometry/polyContainsPoint.ts +182 -0
  264. package/src/utils/pageGeometry/types.ts +3 -0
  265. package/src/utils/proxyFnCall.ts +46 -0
  266. package/src/utils/raf.ts +13 -0
  267. package/src/utils/selectParent.ts +18 -0
  268. package/src/utils/shallowEqualObjects.ts +49 -0
  269. package/src/utils/stripVar.ts +3 -0
  270. package/src/utils/toUpperFirst.ts +5 -0
  271. package/todo.md +2 -0
  272. package/tsconfig.build.json +8 -0
  273. package/tsconfig.dev.json +7 -0
  274. package/tsconfig.json +30 -0
  275. package/tsconfig.typebundler.json +13 -0
  276. package/typedoc.json +4 -0
  277. package/README.md +0 -104
  278. package/index.css +0 -857
  279. package/index.d.ts +0 -2111
  280. package/index.esm.css +0 -857
  281. package/index.esm.js +0 -13695
  282. package/index.js +0 -13565
@@ -0,0 +1,358 @@
1
+ import { style } from '@vanilla-extract/css';
2
+ import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
3
+
4
+ import { InfiniteClsRecipe } from '../../InfiniteCls.css';
5
+ import { ThemeVars } from '../../theme.css';
6
+ import {
7
+ alignItems,
8
+ cssEllipsisClassName,
9
+ display,
10
+ flexFlow,
11
+ height,
12
+ justifyContent,
13
+ overflow,
14
+ position,
15
+ visibility,
16
+ width,
17
+ } from '../../utilities.css';
18
+ import {
19
+ CellBorderObject,
20
+ CellCls,
21
+ CellClsVariants,
22
+ ColumnCellVariantsObject,
23
+ } from '../cell.css';
24
+
25
+ export { CellCls, CellClsVariants };
26
+
27
+ export const HeaderSortIconCls = style([position.relative], 'SortIconCls');
28
+
29
+ export const HeaderSortIconRecipe = recipe({
30
+ variants: {
31
+ align: {
32
+ start: {
33
+ marginLeft: ThemeVars.components.HeaderCell.sortIconMargin,
34
+ },
35
+ center: {
36
+ marginLeft: ThemeVars.components.HeaderCell.sortIconMargin,
37
+ },
38
+ end: {
39
+ marginRight: ThemeVars.components.HeaderCell.sortIconMargin,
40
+ },
41
+ },
42
+ },
43
+ });
44
+
45
+ export const HeaderSortIconIndexCls = style({
46
+ lineHeight: 0,
47
+ fontSize: 10,
48
+ borderRadius: '50%',
49
+ padding: 1,
50
+ position: 'absolute',
51
+ transition: 'top 0.2s',
52
+ top: 0,
53
+ right: 2,
54
+ });
55
+
56
+ export const HeaderScrollbarPlaceholderCls = style([
57
+ {
58
+ background: ThemeVars.components.Header.background,
59
+ top: 0,
60
+ right: 0,
61
+ bottom: 0,
62
+ },
63
+ position.absolute,
64
+ ]);
65
+
66
+ export const HeaderClsRecipe = recipe({
67
+ base: [
68
+ // flexFlow.column,
69
+ display.block,
70
+ position.absolute,
71
+ {
72
+ background: ThemeVars.components.Header.background,
73
+ color: ThemeVars.components.Header.color,
74
+ },
75
+ ],
76
+
77
+ variants: {
78
+ pinned: {
79
+ start: {},
80
+ end: {},
81
+ false: {},
82
+ },
83
+ firstInCategory: {
84
+ true: {},
85
+ false: {},
86
+ },
87
+ lastInCategory: {
88
+ true: {},
89
+ false: {},
90
+ },
91
+ overflow: {
92
+ true: { zIndex: 10 },
93
+ false: {},
94
+ },
95
+ },
96
+ compoundVariants: [
97
+ {
98
+ variants: {
99
+ overflow: true,
100
+ pinned: 'start',
101
+ },
102
+ style: {
103
+ ...ColumnCellVariantsObject.pinnedStartLastInCategory,
104
+ vars: {},
105
+ },
106
+ },
107
+ {
108
+ variants: {
109
+ pinned: 'start',
110
+ firstInCategory: true,
111
+ },
112
+ style: ColumnCellVariantsObject.pinnedStartFirstInCategory,
113
+ },
114
+ {
115
+ variants: {
116
+ overflow: true,
117
+ pinned: 'end',
118
+ },
119
+ style: {
120
+ ...ColumnCellVariantsObject.pinnedEndFirstInCategory,
121
+ vars: {},
122
+ },
123
+ },
124
+ {
125
+ variants: {
126
+ pinned: 'end',
127
+ lastInCategory: true,
128
+ },
129
+ style: ColumnCellVariantsObject.pinnedEndLastInCategory,
130
+ },
131
+ ],
132
+ });
133
+
134
+ export const HeaderCellProxy = style([
135
+ {
136
+ background: ThemeVars.components.HeaderCell.hoverBackground,
137
+ color: ThemeVars.components.Cell.color,
138
+ opacity: 0.8,
139
+ padding: ThemeVars.components.Cell.padding,
140
+ paddingLeft: 20,
141
+ zIndex: 2_000,
142
+ },
143
+ cssEllipsisClassName,
144
+ ]);
145
+
146
+ export const HeaderCellRecipe = recipe({
147
+ base: [
148
+ {
149
+ ...CellBorderObject,
150
+ background: ThemeVars.components.HeaderCell.background,
151
+ padding: 0,
152
+ borderRight: ThemeVars.components.Cell.border,
153
+ ':hover': {
154
+ background: ThemeVars.components.HeaderCell.hoverBackground,
155
+ },
156
+ },
157
+
158
+ display.block,
159
+ ],
160
+ variants: {
161
+ rowActive: { false: {}, true: {} },
162
+ rowSelected: { false: {}, true: {}, null: {} },
163
+ zebra: {
164
+ false: {},
165
+ even: {},
166
+ odd: {},
167
+ },
168
+ dragging: {
169
+ true: {},
170
+ false: {},
171
+ },
172
+
173
+ first: {
174
+ true: ColumnCellVariantsObject.first,
175
+ false: {},
176
+ },
177
+ last: {
178
+ true: ColumnCellVariantsObject.last,
179
+ false: {},
180
+ },
181
+ groupByField: {
182
+ true: ColumnCellVariantsObject.groupByField,
183
+ false: {},
184
+ },
185
+ firstInCategory: {
186
+ true: {
187
+ ...ColumnCellVariantsObject.firstInCategory,
188
+ },
189
+ false: {},
190
+ },
191
+ lastInCategory: {
192
+ true: {
193
+ ...ColumnCellVariantsObject.lastInCategory,
194
+ },
195
+ false: {},
196
+ },
197
+ pinned: {
198
+ start: {
199
+ ...ColumnCellVariantsObject.pinnedStart,
200
+
201
+ zIndex: 10,
202
+ // vars: {
203
+ // [ThemeVars.components.Cell.reorderEffectDuration]: '0',
204
+ // },
205
+ },
206
+ end: {
207
+ // vars: {
208
+ // [ThemeVars.components.Cell.reorderEffectDuration]: '0',
209
+ // },
210
+ },
211
+ false: {},
212
+ },
213
+ filtered: {
214
+ true: {},
215
+ false: {},
216
+ },
217
+ },
218
+
219
+ compoundVariants: [
220
+ {
221
+ variants: {
222
+ pinned: 'start',
223
+ lastInCategory: true,
224
+ },
225
+ style: {
226
+ ...ColumnCellVariantsObject.pinnedStartLastInCategory,
227
+ selectors: {
228
+ [`${InfiniteClsRecipe({
229
+ hasPinnedStartOverflow: true,
230
+ })} &`]: {
231
+ vars: {
232
+ [ThemeVars.components.Cell.border]:
233
+ ThemeVars.components.Cell.borderInvisible,
234
+ },
235
+ },
236
+ },
237
+ },
238
+ },
239
+ {
240
+ variants: {
241
+ pinned: 'end',
242
+ firstInCategory: true,
243
+ },
244
+ style: ColumnCellVariantsObject.pinnedEndFirstInCategory,
245
+ },
246
+ {
247
+ variants: {
248
+ pinned: false,
249
+ lastInCategory: true,
250
+ },
251
+ style: {
252
+ // selectors: {
253
+ // [`${InfiniteClsRecipe({
254
+ // hasPinnedEndOverflow: true,
255
+ // })} &`]: {
256
+ borderRight: ThemeVars.components.Cell.border,
257
+ vars: {
258
+ // [ThemeVars.components.Cell.border]:
259
+ // ThemeVars.components.Cell.borderInvisible,
260
+ },
261
+ // },
262
+ // },
263
+ },
264
+ },
265
+ ],
266
+ });
267
+
268
+ export const HeaderMenuIconCls = style(
269
+ [
270
+ position.relative,
271
+ display.flex,
272
+ flexFlow.column,
273
+
274
+ justifyContent.spaceAround,
275
+ visibility.hidden,
276
+ {
277
+ cursor: 'context-menu',
278
+ paddingBlockStart: '2px',
279
+ paddingBlockEnd: '2px',
280
+ width: ThemeVars.components.HeaderCell.iconSize,
281
+ height: ThemeVars.components.HeaderCell.iconSize,
282
+ selectors: {
283
+ '&:active': {
284
+ top: '1px',
285
+ },
286
+ [`${HeaderCellRecipe({})}:hover &`]: {
287
+ visibility: 'visible',
288
+ },
289
+ },
290
+ },
291
+ ],
292
+ 'MenuIconCls',
293
+ );
294
+
295
+ export type HeaderCellVariantsType = RecipeVariants<typeof HeaderCellRecipe>;
296
+
297
+ export const HeaderCellContentRecipe = recipe(
298
+ {
299
+ base: [
300
+ {
301
+ padding: ThemeVars.components.HeaderCell.padding,
302
+ },
303
+ height['100%'],
304
+ width['100%'],
305
+ display.flex,
306
+ flexFlow.row,
307
+ alignItems.center,
308
+ ],
309
+ variants: {
310
+ filtered: {
311
+ false: {},
312
+ true: {},
313
+ },
314
+ },
315
+ },
316
+ 'HeaderCellContentRecipe',
317
+ );
318
+
319
+ export type HeaderCellContentVariantsType = Required<
320
+ RecipeVariants<typeof HeaderCellContentRecipe>
321
+ >;
322
+
323
+ export const HeaderWrapperCls = style([
324
+ {
325
+ background: ThemeVars.components.Header.background,
326
+ },
327
+ overflow.hidden,
328
+ position.relative,
329
+ display.flex,
330
+ flexFlow.row,
331
+ ]);
332
+
333
+ export const HeaderGroupCls = style([
334
+ display.flex,
335
+ flexFlow.row,
336
+ alignItems.center,
337
+ {
338
+ padding: ThemeVars.components.Cell.padding,
339
+ borderBottom: ThemeVars.components.Cell.border,
340
+ borderRight: ThemeVars.components.Cell.border,
341
+ background: ThemeVars.components.HeaderCell.background,
342
+ },
343
+ ]);
344
+
345
+ export const HeaderFilterCls = style([
346
+ display.flex,
347
+ flexFlow.row,
348
+ alignItems.center,
349
+ position.relative,
350
+ {
351
+ // paddingLeft: ThemeVars.components.HeaderCell.paddingX,
352
+ // paddingRight: ThemeVars.components.HeaderCell.paddingY,
353
+
354
+ borderTop: ThemeVars.components.Cell.border,
355
+ },
356
+ ]);
357
+
358
+ export const HeaderFilterEditorCls = style([width['100%'], height['100%']]);
@@ -0,0 +1 @@
1
+ export * from './InfiniteTableHeader';
@@ -0,0 +1,114 @@
1
+ import * as React from 'react';
2
+ import { useCallback } from 'react';
3
+ import { computeGroupResize } from '../../../flexbox';
4
+ import { MatrixBrain } from '../../../VirtualBrain/MatrixBrain';
5
+ import { useInfiniteTable } from '../../hooks/useInfiniteTable';
6
+ import {
7
+ InfiniteTableComputedColumn,
8
+ InfiniteTablePropColumnSizing,
9
+ } from '../../types';
10
+ import { InfiniteTableComputedColumnGroup } from '../../types/InfiniteTableProps';
11
+
12
+ import { GroupResizeHandle } from './ResizeHandle/GroupResizeHandle';
13
+
14
+ export function useColumnGroupResizeHandle<T>(
15
+ groupColumns: InfiniteTableComputedColumn<T>[],
16
+ config: {
17
+ bodyBrain: MatrixBrain;
18
+ groupHeight: number;
19
+ columnGroup: InfiniteTableComputedColumnGroup;
20
+ columnGroupsMaxDepth: number;
21
+ },
22
+ ) {
23
+ const { bodyBrain, groupHeight, columnGroup, columnGroupsMaxDepth } = config;
24
+ const {
25
+ computed: { computedVisibleColumns },
26
+ getState,
27
+ getComputed,
28
+ componentActions,
29
+ } = useInfiniteTable<T>();
30
+
31
+ const lastColumnInGroup = groupColumns[groupColumns.length - 1];
32
+
33
+ const computeResizeForDiff = useCallback(
34
+ (diff: number) => {
35
+ const state = getState();
36
+ const { columnSizing, viewportReservedWidth, bodySize } = state;
37
+
38
+ const columns = getComputed().computedVisibleColumns;
39
+
40
+ let atLeastOneFlex = false;
41
+
42
+ const columnSizingWithFlex = columns.reduce((acc, col) => {
43
+ if (col.computedFlex) {
44
+ acc[col.id] = { ...columnSizing[col.id], flex: col.computedWidth }; // we explicitly need to have here `{ flex: col.computedWidth }` and not `{ flex: col.computedFlex }`
45
+ // this is to make the test #advancedcolumnresizing work
46
+
47
+ atLeastOneFlex = true;
48
+ }
49
+ return acc;
50
+ }, {} as InfiniteTablePropColumnSizing);
51
+
52
+ const columnSizingForResize = atLeastOneFlex
53
+ ? {
54
+ // #advancedcolumnresizing-important
55
+ // yep, this order is correct - first apply current columnSizing from state
56
+ ...columnSizing,
57
+
58
+ // and then for flex columns, we override with actual computed widths from above
59
+ ...columnSizingWithFlex,
60
+ }
61
+ : columnSizing;
62
+
63
+ const result = computeGroupResize({
64
+ availableSize: bodySize.width,
65
+ reservedWidth: viewportReservedWidth || 0,
66
+ dragHandleOffset: diff,
67
+ dragHandlePositionAfter: lastColumnInGroup.computedVisibleIndex,
68
+ columnSizing: columnSizingForResize,
69
+ columnGroupSize: groupColumns.length,
70
+ items: columns.map((c) => {
71
+ return {
72
+ id: c.id,
73
+ resizable: c.computedResizable,
74
+ computedFlex: c.computedFlex,
75
+ computedWidth: c.computedWidth,
76
+ computedMinWidth: c.computedMinWidth,
77
+ computedMaxWidth: c.computedMaxWidth,
78
+ };
79
+ }),
80
+ });
81
+
82
+ return result;
83
+ },
84
+ [lastColumnInGroup],
85
+ );
86
+
87
+ const onColumnResize = useCallback(
88
+ (diff: number) => {
89
+ const { columnSizing, reservedWidth } = computeResizeForDiff(diff);
90
+
91
+ componentActions.viewportReservedWidth = reservedWidth;
92
+
93
+ componentActions.columnSizing = columnSizing;
94
+ },
95
+ [computeResizeForDiff],
96
+ );
97
+
98
+ const groupResizable = groupColumns.some((c) => c.computedResizable);
99
+ const resizeHandle = groupResizable ? (
100
+ <GroupResizeHandle
101
+ brain={bodyBrain}
102
+ style={{
103
+ // height: groupHeight * (columnGroupsMaxDepth - columnGroup.depth + 2),
104
+ height: groupHeight * (columnGroupsMaxDepth - columnGroup.depth + 2),
105
+ }}
106
+ columns={computedVisibleColumns}
107
+ groupColumns={groupColumns}
108
+ computeResize={computeResizeForDiff}
109
+ onResize={onColumnResize}
110
+ />
111
+ ) : null;
112
+
113
+ return resizeHandle;
114
+ }
@@ -0,0 +1,146 @@
1
+ import * as React from 'react';
2
+ import { useCallback } from 'react';
3
+ import { computeResize } from '../../../flexbox';
4
+ import { useInfiniteTable } from '../../hooks/useInfiniteTable';
5
+ import {
6
+ InfiniteTableComputedColumn,
7
+ InfiniteTablePropColumnSizing,
8
+ } from '../../types';
9
+ import { ResizeHandle } from './ResizeHandle';
10
+
11
+ export function useColumnResizeHandle<T>(
12
+ column: InfiniteTableComputedColumn<T>,
13
+ ) {
14
+ const {
15
+ computed: { computedVisibleColumns },
16
+ getState,
17
+ getComputed,
18
+ componentActions,
19
+ } = useInfiniteTable<T>();
20
+ const computeResizeForDiff = useCallback(
21
+ ({
22
+ diff,
23
+ shareSpaceOnResize,
24
+ }: {
25
+ diff: number;
26
+ shareSpaceOnResize: boolean;
27
+ }) => {
28
+ const state = getState();
29
+ const { columnSizing, viewportReservedWidth, bodySize } = state;
30
+
31
+ const columns = getComputed().computedVisibleColumns;
32
+
33
+ let atLeastOneFlex = false;
34
+
35
+ const columnSizingWithFlex = columns.reduce((acc, col) => {
36
+ if (col.computedFlex) {
37
+ acc[col.id] = { ...columnSizing[col.id], flex: col.computedWidth }; // we explicitly need to have here `{ flex: col.computedWidth }` and not `{ flex: col.computedFlex }`
38
+ // this is to make the test #advancedcolumnresizing work
39
+
40
+ atLeastOneFlex = true;
41
+ }
42
+ return acc;
43
+ }, {} as InfiniteTablePropColumnSizing);
44
+
45
+ const columnSizingForResize = atLeastOneFlex
46
+ ? {
47
+ // #advancedcolumnresizing-important
48
+ // yep, this order is correct - first apply current columnSizing from state
49
+ ...columnSizing,
50
+
51
+ // and then for flex columns, we override with actual computed widths from above
52
+ ...columnSizingWithFlex,
53
+ }
54
+ : columnSizing;
55
+
56
+ const result = computeResize({
57
+ shareSpaceOnResize,
58
+ availableSize: bodySize.width,
59
+ reservedWidth: viewportReservedWidth || 0,
60
+ dragHandleOffset: diff,
61
+ dragHandlePositionAfter: column.computedVisibleIndex,
62
+ columnSizing: columnSizingForResize,
63
+ items: columns.map((c) => {
64
+ return {
65
+ id: c.id,
66
+ computedFlex: c.computedFlex,
67
+ computedWidth: c.computedWidth,
68
+ computedMinWidth: c.computedMinWidth,
69
+ computedMaxWidth: c.computedMaxWidth,
70
+ };
71
+ }),
72
+ });
73
+
74
+ // TODO I think this can be removed
75
+
76
+ // if (
77
+ // activeCellIndex &&
78
+ // activeCellIndex[1] >= column.computedVisibleIndex
79
+ // ) {
80
+ // const activeColumn = columns[activeCellIndex[1]];
81
+ // const currentColumn = columns[column.computedVisibleIndex];
82
+
83
+ // if (activeCellIndex[1] === currentColumn.computedVisibleIndex) {
84
+ // setInfiniteColumnWidth(
85
+ // currentColumn.computedVisibleIndex,
86
+ // currentColumn.computedWidth + result.adjustedDiff,
87
+ // domRef.current,
88
+ // );
89
+ // } else if (activeColumn) {
90
+ // setInfiniteColumnOffset(
91
+ // activeColumn.computedVisibleIndex,
92
+ // activeColumn.computedOffset + result.adjustedDiff,
93
+ // domRef.current,
94
+ // );
95
+ // }
96
+
97
+ // if (
98
+ // shareSpaceOnResize &&
99
+ // activeCellIndex[1] === currentColumn.computedVisibleIndex + 1 &&
100
+ // activeColumn
101
+ // ) {
102
+ // setInfiniteColumnWidth(
103
+ // activeColumn.computedVisibleIndex,
104
+ // activeColumn.computedWidth - result.adjustedDiff,
105
+ // domRef.current,
106
+ // );
107
+ // }
108
+ // }
109
+
110
+ return result;
111
+ },
112
+ [column],
113
+ );
114
+
115
+ const onColumnResize = useCallback(
116
+ ({
117
+ diff,
118
+ shareSpaceOnResize,
119
+ }: {
120
+ diff: number;
121
+ shareSpaceOnResize: boolean;
122
+ }) => {
123
+ const { columnSizing, reservedWidth } = computeResizeForDiff({
124
+ diff,
125
+ shareSpaceOnResize,
126
+ });
127
+
128
+ if (!shareSpaceOnResize) {
129
+ componentActions.viewportReservedWidth = reservedWidth;
130
+ }
131
+ componentActions.columnSizing = columnSizing;
132
+ },
133
+ [computeResizeForDiff],
134
+ );
135
+
136
+ const resizeHandle = column.computedResizable ? (
137
+ <ResizeHandle
138
+ columns={computedVisibleColumns}
139
+ columnIndex={column.computedVisibleIndex}
140
+ computeResize={computeResizeForDiff}
141
+ onResize={onColumnResize}
142
+ />
143
+ ) : null;
144
+
145
+ return resizeHandle;
146
+ }
@@ -0,0 +1,7 @@
1
+ import { style } from '@vanilla-extract/css';
2
+ import { ThemeVars } from '../../theme.css';
3
+
4
+ export const FooterCls = style({
5
+ padding: ThemeVars.spacing[2],
6
+ position: 'relative',
7
+ });