@infinite-table/infinite-react 0.5.1 → 0.5.2

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/README.md +104 -0
  2. package/index.css +896 -0
  3. package/index.d.ts +2264 -0
  4. package/index.esm.css +896 -0
  5. package/index.esm.js +15404 -0
  6. package/index.js +15240 -0
  7. package/package.json +2 -94
  8. package/.vscode/settings.json +0 -3
  9. package/API.md +0 -0
  10. package/build/buildPackageJson.js +0 -43
  11. package/build/scripts/test.js +0 -37
  12. package/bundler.config.js +0 -25
  13. package/globals.d.ts +0 -7
  14. package/rollup.config.js +0 -15
  15. package/run-build-deepmap.js +0 -47
  16. package/run-build.js +0 -45
  17. package/run-dts-concat.js +0 -21
  18. package/src/components/CSSVariableWatch.tsx +0 -82
  19. package/src/components/DataSource/BooleanCollectionState.ts +0 -214
  20. package/src/components/DataSource/BooleanDeepCollectionState.ts +0 -208
  21. package/src/components/DataSource/DataSourceContext.ts +0 -20
  22. package/src/components/DataSource/GroupRowsState.ts +0 -74
  23. package/src/components/DataSource/Indexer.ts +0 -27
  24. package/src/components/DataSource/RowSelectionState.ts +0 -763
  25. package/src/components/DataSource/defaultFilterTypes.ts +0 -64
  26. package/src/components/DataSource/index.tsx +0 -108
  27. package/src/components/DataSource/privateHooks/getChangeDetect.ts +0 -7
  28. package/src/components/DataSource/privateHooks/useLoadData.ts +0 -783
  29. package/src/components/DataSource/publicHooks/useDataSource.ts +0 -19
  30. package/src/components/DataSource/publicHooks/useDataSourceActions.ts +0 -14
  31. package/src/components/DataSource/state/getInitialState.ts +0 -494
  32. package/src/components/DataSource/state/normalizeSortInfo.ts +0 -35
  33. package/src/components/DataSource/state/reducer.ts +0 -466
  34. package/src/components/DataSource/state/rowInfoStatus.ts +0 -27
  35. package/src/components/DataSource/types.ts +0 -548
  36. package/src/components/HeadlessTable/HeadlessTableWithPinnedContainers.tsx +0 -142
  37. package/src/components/HeadlessTable/MappedCells.ts +0 -251
  38. package/src/components/HeadlessTable/RawTable.tsx +0 -98
  39. package/src/components/HeadlessTable/ReactHeadlessTableRenderer.tsx +0 -1516
  40. package/src/components/HeadlessTable/index.tsx +0 -234
  41. package/src/components/InfiniteTable/InfiniteCls.css.ts +0 -164
  42. package/src/components/InfiniteTable/InfiniteTableContext.ts +0 -16
  43. package/src/components/InfiniteTable/api/getImperativeApi.ts +0 -391
  44. package/src/components/InfiniteTable/api/getSelectionApi.ts +0 -364
  45. package/src/components/InfiniteTable/api/type.ts +0 -11
  46. package/src/components/InfiniteTable/components/ActiveCellIndicator.css.ts +0 -51
  47. package/src/components/InfiniteTable/components/ActiveCellIndicator.tsx +0 -116
  48. package/src/components/InfiniteTable/components/ActiveRowIndicator.css.ts +0 -56
  49. package/src/components/InfiniteTable/components/ActiveRowIndicator.tsx +0 -94
  50. package/src/components/InfiniteTable/components/CheckBox.css.ts +0 -13
  51. package/src/components/InfiniteTable/components/CheckBox.tsx +0 -96
  52. package/src/components/InfiniteTable/components/FilterEditors.tsx +0 -52
  53. package/src/components/InfiniteTable/components/InfiniteTableBody/InfiniteTableBody.tsx +0 -27
  54. package/src/components/InfiniteTable/components/InfiniteTableBody/index.tsx +0 -1
  55. package/src/components/InfiniteTable/components/InfiniteTableFooter/InfiniteTableFooter.tsx +0 -31
  56. package/src/components/InfiniteTable/components/InfiniteTableFooter/index.tsx +0 -1
  57. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableColumnHeaderFilter.tsx +0 -102
  58. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeader.tsx +0 -163
  59. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderCell.tsx +0 -574
  60. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderGroup.tsx +0 -79
  61. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderTypes.tsx +0 -25
  62. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderWrapper.tsx +0 -185
  63. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/GroupResizeHandle.tsx +0 -159
  64. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/ResizeHandle.css.ts +0 -124
  65. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/columnResizer.ts +0 -166
  66. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/index.tsx +0 -146
  67. package/src/components/InfiniteTable/components/InfiniteTableHeader/buildColumnAndGroupTree.ts +0 -240
  68. package/src/components/InfiniteTable/components/InfiniteTableHeader/header.css.ts +0 -358
  69. package/src/components/InfiniteTable/components/InfiniteTableHeader/index.tsx +0 -1
  70. package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnGroupResizeHandle.tsx +0 -114
  71. package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnResizeHandle.tsx +0 -146
  72. package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/footer.css.ts +0 -7
  73. package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/index.tsx +0 -110
  74. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCell.tsx +0 -120
  75. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCellTypes.ts +0 -74
  76. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableColumnCell.tsx +0 -457
  77. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRow.tsx +0 -107
  78. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowClassName.ts +0 -6
  79. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowTypes.ts +0 -32
  80. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowUnvirtualized.tsx +0 -75
  81. package/src/components/InfiniteTable/components/InfiniteTableRow/columnRendering.tsx +0 -263
  82. package/src/components/InfiniteTable/components/InfiniteTableRow/index.tsx +0 -1
  83. package/src/components/InfiniteTable/components/InfiniteTableRow/row.css.ts +0 -74
  84. package/src/components/InfiniteTable/components/InfiniteTableRow/useRowDOMProps.ts +0 -199
  85. package/src/components/InfiniteTable/components/LoadMask.css.ts +0 -34
  86. package/src/components/InfiniteTable/components/LoadMask.tsx +0 -27
  87. package/src/components/InfiniteTable/components/ScrollbarPlaceholder.tsx +0 -56
  88. package/src/components/InfiniteTable/components/cell.css.ts +0 -192
  89. package/src/components/InfiniteTable/components/icons/ArrowDown.tsx +0 -14
  90. package/src/components/InfiniteTable/components/icons/ArrowUp.tsx +0 -14
  91. package/src/components/InfiniteTable/components/icons/ExpanderIcon.css.ts +0 -31
  92. package/src/components/InfiniteTable/components/icons/ExpanderIcon.tsx +0 -63
  93. package/src/components/InfiniteTable/components/icons/Icon.tsx +0 -18
  94. package/src/components/InfiniteTable/components/icons/InfiniteTableIconClassName.ts +0 -1
  95. package/src/components/InfiniteTable/components/icons/LoadingIcon.css.ts +0 -8
  96. package/src/components/InfiniteTable/components/icons/LoadingIcon.tsx +0 -45
  97. package/src/components/InfiniteTable/components/icons/MenuIcon.tsx +0 -50
  98. package/src/components/InfiniteTable/components/icons/SortIcon.tsx +0 -113
  99. package/src/components/InfiniteTable/eventHandlers/eventHandlerTypes.ts +0 -57
  100. package/src/components/InfiniteTable/eventHandlers/index.ts +0 -95
  101. package/src/components/InfiniteTable/eventHandlers/keyboardNavigation.ts +0 -232
  102. package/src/components/InfiniteTable/eventHandlers/keyboardSelection.ts +0 -110
  103. package/src/components/InfiniteTable/eventHandlers/onCellClick.ts +0 -94
  104. package/src/components/InfiniteTable/eventHandlers/onKeyDown.ts +0 -25
  105. package/src/components/InfiniteTable/hooks/adjustColumnOrderForAllColumns.ts +0 -70
  106. package/src/components/InfiniteTable/hooks/reorderColumnsOnDrag.ts +0 -476
  107. package/src/components/InfiniteTable/hooks/useAutoSizeColumns.ts +0 -206
  108. package/src/components/InfiniteTable/hooks/useCellClassName.ts +0 -80
  109. package/src/components/InfiniteTable/hooks/useCellRendering.tsx +0 -217
  110. package/src/components/InfiniteTable/hooks/useColumnGroups.ts +0 -71
  111. package/src/components/InfiniteTable/hooks/useColumnMenu.ts +0 -72
  112. package/src/components/InfiniteTable/hooks/useColumnPointerEvents.ts +0 -258
  113. package/src/components/InfiniteTable/hooks/useColumnRowspan.ts +0 -43
  114. package/src/components/InfiniteTable/hooks/useColumnSizeFn.ts +0 -24
  115. package/src/components/InfiniteTable/hooks/useColumnsWhen.ts +0 -582
  116. package/src/components/InfiniteTable/hooks/useComputed.ts +0 -186
  117. package/src/components/InfiniteTable/hooks/useComputedVisibleColumns.ts +0 -219
  118. package/src/components/InfiniteTable/hooks/useDOMProps.ts +0 -306
  119. package/src/components/InfiniteTable/hooks/useEffectWithRaf.ts +0 -47
  120. package/src/components/InfiniteTable/hooks/useInfiniteTable.ts +0 -10
  121. package/src/components/InfiniteTable/hooks/useInfiniteTableState.ts +0 -11
  122. package/src/components/InfiniteTable/hooks/useInternalProps.ts +0 -8
  123. package/src/components/InfiniteTable/hooks/useLicense/LicenseDetails.ts +0 -13
  124. package/src/components/InfiniteTable/hooks/useLicense/crc32.ts +0 -56
  125. package/src/components/InfiniteTable/hooks/useLicense/decode.ts +0 -147
  126. package/src/components/InfiniteTable/hooks/useLicense/useLicense.ts +0 -39
  127. package/src/components/InfiniteTable/hooks/useRerenderOnKeyChange.ts +0 -21
  128. package/src/components/InfiniteTable/hooks/useRowHover.ts +0 -18
  129. package/src/components/InfiniteTable/hooks/useScrollToActiveCell.ts +0 -48
  130. package/src/components/InfiniteTable/hooks/useScrollToActiveRow.ts +0 -44
  131. package/src/components/InfiniteTable/hooks/useScrollbars.ts +0 -51
  132. package/src/components/InfiniteTable/hooks/useToggleGroupRow.ts +0 -56
  133. package/src/components/InfiniteTable/hooks/useUnpinnedRendering.tsx +0 -165
  134. package/src/components/InfiniteTable/hooks/useYourBrain.ts +0 -55
  135. package/src/components/InfiniteTable/index.tsx +0 -352
  136. package/src/components/InfiniteTable/internalProps.ts +0 -4
  137. package/src/components/InfiniteTable/state/computeColumnGroupsDepths.ts +0 -29
  138. package/src/components/InfiniteTable/state/getColumnVisibilityForHideEmptyGroupColumns.ts +0 -127
  139. package/src/components/InfiniteTable/state/getInitialState.ts +0 -375
  140. package/src/components/InfiniteTable/theme.css.ts +0 -556
  141. package/src/components/InfiniteTable/types/InfiniteTableAction.ts +0 -6
  142. package/src/components/InfiniteTable/types/InfiniteTableActionType.ts +0 -12
  143. package/src/components/InfiniteTable/types/InfiniteTableColumn.ts +0 -478
  144. package/src/components/InfiniteTable/types/InfiniteTableComputedValues.ts +0 -43
  145. package/src/components/InfiniteTable/types/InfiniteTableContextValue.ts +0 -12
  146. package/src/components/InfiniteTable/types/InfiniteTableInternalProps.ts +0 -3
  147. package/src/components/InfiniteTable/types/InfiniteTableProps.ts +0 -511
  148. package/src/components/InfiniteTable/types/InfiniteTableState.ts +0 -195
  149. package/src/components/InfiniteTable/types/Utility.ts +0 -35
  150. package/src/components/InfiniteTable/types/index.ts +0 -96
  151. package/src/components/InfiniteTable/utilities.css.ts +0 -179
  152. package/src/components/InfiniteTable/utils/MultiRowSelector.ts +0 -111
  153. package/src/components/InfiniteTable/utils/RenderHookComponentForInfinite.tsx +0 -52
  154. package/src/components/InfiniteTable/utils/adjustColumnOrderForPinning.ts +0 -33
  155. package/src/components/InfiniteTable/utils/assignFiltered.ts +0 -29
  156. package/src/components/InfiniteTable/utils/defaultGetColumContextMenuItems.tsx +0 -108
  157. package/src/components/InfiniteTable/utils/getColumnComputedType.ts +0 -33
  158. package/src/components/InfiniteTable/utils/getColumnForGroupBy.tsx +0 -313
  159. package/src/components/InfiniteTable/utils/getComputedVisibleColumns.ts +0 -773
  160. package/src/components/InfiniteTable/utils/getContextMenuForColumn.tsx +0 -72
  161. package/src/components/InfiniteTable/utils/infiniteDOMUtils.ts +0 -189
  162. package/src/components/InfiniteTable/utils/mapToObject.ts +0 -20
  163. package/src/components/InfiniteTable/utils/moveXatY.ts +0 -25
  164. package/src/components/InfiniteTable/utils/objectValuesExcept.ts +0 -9
  165. package/src/components/InfiniteTable/utils/progressiveSpeedScroller.ts +0 -158
  166. package/src/components/InfiniteTable/utils/rafFn.ts +0 -13
  167. package/src/components/InfiniteTable/utils/toCSSVarName.ts +0 -1
  168. package/src/components/InfiniteTable/utils/toMap.ts +0 -24
  169. package/src/components/Menu/Menu.tsx +0 -750
  170. package/src/components/Menu/MenuCls.css.ts +0 -139
  171. package/src/components/Menu/MenuContext.ts +0 -10
  172. package/src/components/Menu/MenuContextValue.ts +0 -15
  173. package/src/components/Menu/MenuProps.ts +0 -98
  174. package/src/components/Menu/MenuState.ts +0 -56
  175. package/src/components/Menu/MenuTriangleContext.ts +0 -352
  176. package/src/components/Menu/childrenToRuntimeItems.tsx +0 -103
  177. package/src/components/Menu/getMenuState.tsx +0 -119
  178. package/src/components/Menu/index.tsx +0 -88
  179. package/src/components/Menu/propToIdentifyMenu.ts +0 -1
  180. package/src/components/RawList/AvoidReactDiff.tsx +0 -48
  181. package/src/components/RawList/MappedItems.ts +0 -143
  182. package/src/components/RawList/ReactVirtualRenderer.tsx +0 -307
  183. package/src/components/RawList/index.tsx +0 -42
  184. package/src/components/RawList/types.ts +0 -23
  185. package/src/components/RawList/useVirtualRenderer.ts +0 -36
  186. package/src/components/RenderHookComponent.tsx +0 -10
  187. package/src/components/ResizeObserver/index.tsx +0 -170
  188. package/src/components/VirtualBrain/MatrixBrain.ts +0 -1621
  189. package/src/components/VirtualBrain/ScrollListener.ts +0 -39
  190. package/src/components/VirtualBrain/index.ts +0 -664
  191. package/src/components/VirtualList/ColumnListWithExternalScrolling.tsx +0 -78
  192. package/src/components/VirtualList/InfiniteListRootClassName.ts +0 -1
  193. package/src/components/VirtualList/RowListWithExternalScrolling.tsx +0 -120
  194. package/src/components/VirtualList/SpacePlaceholder.tsx +0 -32
  195. package/src/components/VirtualList/VirtualList.css.ts +0 -29
  196. package/src/components/VirtualList/VirtualList.tsx +0 -141
  197. package/src/components/VirtualList/VirtualRowList.tsx +0 -34
  198. package/src/components/VirtualList/types.ts +0 -56
  199. package/src/components/VirtualList/useCorrectHeightForRowElements.ts +0 -14
  200. package/src/components/VirtualScrollContainer/VirtualScrollContainer.css.ts +0 -51
  201. package/src/components/VirtualScrollContainer/getScrollableClassName.ts +0 -30
  202. package/src/components/VirtualScrollContainer/index.tsx +0 -63
  203. package/src/components/flexbox/index.ts +0 -562
  204. package/src/components/hooks/useComponentState/index.tsx +0 -562
  205. package/src/components/hooks/useComponentState/types.ts +0 -32
  206. package/src/components/hooks/useEffectOnceWithProperUnmount.ts +0 -33
  207. package/src/components/hooks/useEffectWithChanges.ts +0 -56
  208. package/src/components/hooks/useImmutableRef.ts +0 -7
  209. package/src/components/hooks/useInterceptedMap.ts +0 -71
  210. package/src/components/hooks/useLatest.tsx +0 -8
  211. package/src/components/hooks/useLazyLatest.ts +0 -23
  212. package/src/components/hooks/useMemoShallowObjectMerge.ts +0 -16
  213. package/src/components/hooks/useMounted.ts +0 -18
  214. package/src/components/hooks/useOnMount.ts +0 -21
  215. package/src/components/hooks/useOnScroll.ts +0 -34
  216. package/src/components/hooks/useOnce.ts +0 -10
  217. package/src/components/hooks/useOverlay/index.tsx +0 -418
  218. package/src/components/hooks/usePrevious.ts +0 -8
  219. package/src/components/hooks/usePropertyOld.ts +0 -168
  220. package/src/components/hooks/useRerender.ts +0 -12
  221. package/src/components/hooks/xuseProperty.ts +0 -165
  222. package/src/components/types/CellPosition.ts +0 -4
  223. package/src/components/types/NonUndefined.ts +0 -1
  224. package/src/components/types/RemoveObject.ts +0 -22
  225. package/src/components/types/Renderable.ts +0 -3
  226. package/src/components/types/ScrollPosition.ts +0 -7
  227. package/src/components/types/Setter.ts +0 -2
  228. package/src/components/types/Size.ts +0 -6
  229. package/src/components/types/SubscriptionCallback.ts +0 -10
  230. package/src/components/types/VoidFn.ts +0 -1
  231. package/src/components/utils/buildSubscriptionCallback.tsx +0 -60
  232. package/src/components/utils/clamp.ts +0 -3
  233. package/src/components/utils/debounce.ts +0 -16
  234. package/src/components/utils/decamelize.ts +0 -11
  235. package/src/components/utils/discardCallsWithEqualArg.ts +0 -42
  236. package/src/components/utils/getRenderIndexes.ts +0 -33
  237. package/src/components/utils/getScrollbarWidth.ts +0 -31
  238. package/src/components/utils/getVirtualRenderCount.ts +0 -21
  239. package/src/components/utils/isControlled.ts +0 -12
  240. package/src/components/utils/isControlledValue.ts +0 -5
  241. package/src/index.tsx +0 -34
  242. package/src/test.tsx +0 -18
  243. package/src/utils/DeepMap/index.ts +0 -588
  244. package/src/utils/DeepMap/once.ts +0 -16
  245. package/src/utils/DeepMap/sortAscending.ts +0 -1
  246. package/src/utils/DeepMap/tsconfig.deepmap.json +0 -17
  247. package/src/utils/DeepMap/xpackage.json +0 -26
  248. package/src/utils/debug.ts +0 -40
  249. package/src/utils/deepClone.ts +0 -38
  250. package/src/utils/getGlobal.ts +0 -3
  251. package/src/utils/groupAndPivot/defaultToKey.ts +0 -3
  252. package/src/utils/groupAndPivot/getGroupKeysForDataItem.ts +0 -19
  253. package/src/utils/groupAndPivot/getPivotColumnsAndColumnGroups.ts +0 -361
  254. package/src/utils/groupAndPivot/index.ts +0 -1229
  255. package/src/utils/groupAndPivot/types.ts +0 -10
  256. package/src/utils/join.ts +0 -4
  257. package/src/utils/mathIntersection.ts +0 -21
  258. package/src/utils/minified.d.ts +0 -2
  259. package/src/utils/minified.js +0 -6
  260. package/src/utils/multisort/index.ts +0 -151
  261. package/src/utils/multisort/sortTypes.ts +0 -25
  262. package/src/utils/notes-status.md +0 -92
  263. package/src/utils/pageGeometry/ConvexPoly.ts +0 -34
  264. package/src/utils/pageGeometry/Point.ts +0 -51
  265. package/src/utils/pageGeometry/PolyWithPoints.ts +0 -52
  266. package/src/utils/pageGeometry/Rectangle.ts +0 -98
  267. package/src/utils/pageGeometry/Triangle.ts +0 -16
  268. package/src/utils/pageGeometry/alignment/index.ts +0 -221
  269. package/src/utils/pageGeometry/polyContainsPoint.ts +0 -182
  270. package/src/utils/pageGeometry/types.ts +0 -3
  271. package/src/utils/proxyFnCall.ts +0 -46
  272. package/src/utils/raf.ts +0 -13
  273. package/src/utils/selectParent.ts +0 -18
  274. package/src/utils/shallowEqualObjects.ts +0 -49
  275. package/src/utils/stripVar.ts +0 -3
  276. package/src/utils/toUpperFirst.ts +0 -5
  277. package/todo.md +0 -2
  278. package/tsconfig.build.json +0 -8
  279. package/tsconfig.dev.json +0 -7
  280. package/tsconfig.json +0 -30
  281. package/tsconfig.typebundler.json +0 -13
  282. package/typedoc.json +0 -4
@@ -1,574 +0,0 @@
1
- import * as React from 'react';
2
- import { useCallback, useContext, useEffect, useRef } from 'react';
3
- import { createPortal } from 'react-dom';
4
-
5
- import { join } from '../../../../utils/join';
6
- import { stripVar } from '../../../../utils/stripVar';
7
- import { defaultFilterTypes } from '../../../DataSource/defaultFilterTypes';
8
- import {
9
- useDataSource,
10
- useDataSourceContextValue,
11
- } from '../../../DataSource/publicHooks/useDataSource';
12
- import {
13
- DataSourceFilterValueItem,
14
- DataSourcePropFilterTypes,
15
- } from '../../../DataSource/types';
16
- import { setupResizeObserver } from '../../../ResizeObserver';
17
- import { debounce } from '../../../utils/debounce';
18
- import { useCellClassName } from '../../hooks/useCellClassName';
19
- import { useColumnPointerEvents } from '../../hooks/useColumnPointerEvents';
20
- import { useInfiniteTable } from '../../hooks/useInfiniteTable';
21
- import { internalProps } from '../../internalProps';
22
- import { InternalVars, ThemeVars } from '../../theme.css';
23
- import { InfiniteTableFilterEditorProps } from '../../types';
24
- import type {
25
- InfiniteTableColumnHeaderParam,
26
- InfiniteTableColumnHeaderRenderFunction,
27
- InfiniteTableComputedColumn,
28
- InfiniteTableHeaderCellContextType,
29
- } from '../../types/InfiniteTableColumn';
30
- import { cursor, flex, justifyContent, userSelect } from '../../utilities.css';
31
- import { RenderHeaderCellHookComponent } from '../../utils/RenderHookComponentForInfinite';
32
- import { SelectionCheckboxCls } from '../cell.css';
33
- import { InfiniteCheckBox } from '../CheckBox';
34
- import { defaultFilterEditors, StringFilterEditor } from '../FilterEditors';
35
- import { MenuIcon } from '../icons/MenuIcon';
36
- import { SortIcon } from '../icons/SortIcon';
37
- import {
38
- InfiniteTableCell,
39
- InfiniteTableCellClassName,
40
- } from '../InfiniteTableRow/InfiniteTableCell';
41
- import { InfiniteTableHeaderCellProps } from '../InfiniteTableRow/InfiniteTableCellTypes';
42
-
43
- import {
44
- CellCls,
45
- HeaderCellRecipe,
46
- HeaderCellProxy,
47
- HeaderSortIconCls,
48
- HeaderCellContentRecipe,
49
- HeaderCellContentVariantsType,
50
- HeaderSortIconRecipe,
51
- } from './header.css';
52
- import {
53
- InfiniteTableColumnHeaderFilter,
54
- InfiniteTableColumnHeaderFilterEmpty,
55
- } from './InfiniteTableColumnHeaderFilter';
56
- import { useColumnResizeHandle } from './useColumnResizeHandle';
57
-
58
- export const defaultRenderSelectionCheckBox: InfiniteTableColumnHeaderRenderFunction<
59
- any
60
- > = (params) => {
61
- const { allRowsSelected, someRowsSelected, api } = params;
62
-
63
- const selected = allRowsSelected ? true : someRowsSelected ? null : false;
64
-
65
- return (
66
- <InfiniteCheckBox
67
- domProps={{
68
- className: SelectionCheckboxCls,
69
- }}
70
- onChange={(selected) => {
71
- if (selected) {
72
- api.selectionApi.selectAll();
73
- } else {
74
- api.selectionApi.deselectAll();
75
- }
76
- }}
77
- checked={selected}
78
- />
79
- );
80
- };
81
-
82
- export const InfiniteTableHeaderCellContext = React.createContext<
83
- InfiniteTableHeaderCellContextType<any>
84
- >(null as any as InfiniteTableHeaderCellContextType<any>);
85
-
86
- const { rootClassName } = internalProps;
87
-
88
- export const InfiniteTableHeaderCellClassName = `${rootClassName}HeaderCell`;
89
-
90
- export function getColumnFilterType<T>(
91
- column: InfiniteTableComputedColumn<T>,
92
- filterTypes: DataSourcePropFilterTypes<T> = defaultFilterTypes,
93
- ) {
94
- let columnFilterType: string =
95
- column.computedFilterValue?.filterType || column.filterType || '';
96
-
97
- if (!columnFilterType) {
98
- let colFilterType = column.type;
99
-
100
- if (colFilterType && !Array.isArray(colFilterType)) {
101
- colFilterType = [colFilterType];
102
- }
103
-
104
- if (colFilterType) {
105
- columnFilterType = (colFilterType! as string[]).reduce((acc, type) => {
106
- if (!acc && filterTypes[type]) {
107
- return type;
108
- }
109
- return acc;
110
- }, '');
111
- }
112
- }
113
-
114
- if (!filterTypes[columnFilterType]) {
115
- columnFilterType = Object.keys(filterTypes)[0] || 'string';
116
- }
117
-
118
- return columnFilterType;
119
- }
120
-
121
- const columnZIndexAtIndex = stripVar(InternalVars.columnZIndexAtIndex);
122
-
123
- const spacer = <div className={flex['1']}></div>;
124
- export function InfiniteTableHeaderCell<T>(
125
- props: InfiniteTableHeaderCellProps<T>,
126
- ) {
127
- const column: InfiniteTableComputedColumn<T> = props.column;
128
-
129
- const {
130
- computed: { showColumnFilters },
131
- imperativeApi: api,
132
- componentState: {
133
- portalDOMRef,
134
- columnHeaderHeight,
135
- filterEditors,
136
- columnReorderDragColumnId,
137
- onColumnMenuClick,
138
- },
139
- } = useInfiniteTable<T>();
140
-
141
- const { allRowsSelected, someRowsSelected, selectionMode } =
142
- useDataSource<T>();
143
-
144
- const dragging = columnReorderDragColumnId === column.id;
145
-
146
- const { onResize, height, width, headerOptions, columnsMap } = props;
147
-
148
- const sortInfo = column.computedSortInfo;
149
-
150
- let header = column.header;
151
-
152
- const ref = useCallback(
153
- (node: HTMLElement | null) => {
154
- domRef.current = node;
155
- props.domRef?.(node);
156
- },
157
- [props.domRef],
158
- );
159
-
160
- const alwaysShow = headerOptions.alwaysReserveSpaceForSortIcon;
161
-
162
- const sortIcon =
163
- column.computedSortable && (column.computedSorted || alwaysShow) ? (
164
- <SortIcon
165
- index={
166
- column.computedMultiSort ? column.computedSortIndex + 1 : undefined
167
- }
168
- className={`${InfiniteTableHeaderCellClassName}__sort-icon ${HeaderSortIconCls} ${HeaderSortIconRecipe(
169
- {
170
- align: column.align || 'start',
171
- },
172
- )}`}
173
- direction={
174
- column.computedSorted ? (column.computedSortedAsc ? 1 : -1) : 0
175
- }
176
- />
177
- ) : null;
178
-
179
- const align = column.align || 'start';
180
-
181
- const menuIcon = (
182
- <MenuIcon
183
- style={{
184
- [align === 'end'
185
- ? 'marginInlineStart'
186
- : 'marginInlineEnd']: `calc(${ThemeVars.components.HeaderCell.resizeHandleActiveAreaWidth} / 2)`,
187
- }}
188
- domProps={{
189
- onClick: (event) => {
190
- onColumnMenuClick({
191
- target: event.target as HTMLElement,
192
- column,
193
- });
194
- },
195
- }}
196
- />
197
- );
198
-
199
- const renderParam: InfiniteTableColumnHeaderParam<T> = {
200
- dragging,
201
- domRef: ref,
202
- column,
203
- columnsMap,
204
- columnSortInfo: sortInfo,
205
- columnFilterValue: column.computedFilterValue,
206
- someRowsSelected,
207
- allRowsSelected,
208
- selectionMode,
209
- api,
210
- renderBag: {
211
- sortIcon,
212
- menuIcon:
213
- align === 'end' ? (
214
- <>
215
- {menuIcon}
216
- {spacer}
217
- </>
218
- ) : (
219
- <>
220
- {spacer}
221
- {menuIcon}
222
- </>
223
- ),
224
- selectionCheckBox: null,
225
- header:
226
- column.header && typeof column.header !== 'function'
227
- ? column.header
228
- : column.name,
229
- },
230
- };
231
-
232
- const renderChildren = () => {
233
- if (column.renderSortIcon) {
234
- renderParam.renderBag.sortIcon = (
235
- <RenderHeaderCellHookComponent
236
- render={column.renderSortIcon}
237
- renderParam={{
238
- ...renderParam,
239
- renderBag: { ...renderParam.renderBag },
240
- }}
241
- />
242
- );
243
- }
244
-
245
- if (typeof column.renderMenuIcon === 'function') {
246
- renderParam.renderBag.menuIcon = (
247
- <RenderHeaderCellHookComponent
248
- render={column.renderMenuIcon}
249
- renderParam={renderParam}
250
- />
251
- );
252
- }
253
-
254
- if (column.renderSelectionCheckBox && selectionMode === 'multi-row') {
255
- // make selectionCheckBox available in the render bag
256
- // when we have column.renderSelectionCheckBox defined as a function
257
- // as people might want to use the default value
258
- // and enhance it
259
- renderParam.renderBag.selectionCheckBox = (
260
- <RenderHeaderCellHookComponent
261
- render={defaultRenderSelectionCheckBox}
262
- renderParam={renderParam}
263
- />
264
- );
265
-
266
- const renderHeaderSelectionCheckBox =
267
- column.renderHeaderSelectionCheckBox ?? column.renderSelectionCheckBox;
268
- if (
269
- renderHeaderSelectionCheckBox &&
270
- renderHeaderSelectionCheckBox !== true
271
- ) {
272
- renderParam.renderBag.selectionCheckBox = (
273
- <RenderHeaderCellHookComponent
274
- render={renderHeaderSelectionCheckBox}
275
- renderParam={{
276
- ...renderParam,
277
- renderBag: { ...renderParam.renderBag },
278
- }}
279
- />
280
- );
281
- }
282
- }
283
-
284
- if (header instanceof Function) {
285
- renderParam.renderBag.header = (
286
- <RenderHeaderCellHookComponent
287
- render={header}
288
- renderParam={{
289
- ...renderParam,
290
- renderBag: { ...renderParam.renderBag },
291
- }}
292
- />
293
- );
294
- }
295
-
296
- if (column.renderHeader) {
297
- return (
298
- <RenderHeaderCellHookComponent
299
- render={column.renderHeader}
300
- renderParam={renderParam}
301
- />
302
- );
303
- }
304
-
305
- const theMenuIcon =
306
- column.renderMenuIcon === false ? null : align === 'end' ? (
307
- <>
308
- {renderParam.renderBag.menuIcon}
309
- {spacer}
310
- </>
311
- ) : (
312
- <>
313
- {spacer}
314
- {renderParam.renderBag.menuIcon}
315
- </>
316
- );
317
-
318
- return (
319
- <>
320
- {align === 'end' ? theMenuIcon : null}
321
- {align !== 'end' ? renderParam.renderBag.selectionCheckBox : null}
322
- {align === 'end' ? renderParam.renderBag.sortIcon : null}
323
-
324
- {renderParam.renderBag.header}
325
-
326
- {align !== 'end' ? renderParam.renderBag.sortIcon : null}
327
- {align === 'end' ? renderParam.renderBag.selectionCheckBox : null}
328
- {align !== 'end' ? theMenuIcon : null}
329
- </>
330
- );
331
- };
332
-
333
- const domRef = useRef<HTMLElement | null>(null);
334
-
335
- const {
336
- componentActions: dataSourceActions,
337
- getState: getDataSourceState,
338
- componentState: { filterDelay, filterTypes },
339
- } = useDataSourceContextValue<T>();
340
-
341
- useEffect(() => {
342
- let clearOnResize: null | (() => void) = null;
343
- const node = domRef.current;
344
-
345
- if (onResize && node) {
346
- clearOnResize = setupResizeObserver(node, onResize);
347
- }
348
-
349
- return () => {
350
- clearOnResize?.();
351
- };
352
- }, [domRef.current, props.onResize]);
353
-
354
- let style: React.CSSProperties = {
355
- // height: column.computedFiltered? height*2: height,
356
- height: height,
357
- };
358
-
359
- if (column.headerStyle) {
360
- style =
361
- typeof column.headerStyle === 'function'
362
- ? { ...style, ...(column.headerStyle(renderParam) || {}) }
363
- : { ...style, ...column.headerStyle };
364
- }
365
-
366
- const headerClassName =
367
- typeof column.headerClassName === 'function'
368
- ? column.headerClassName(renderParam)
369
- : column.headerClassName;
370
-
371
- const { onPointerDown, proxyPosition } = useColumnPointerEvents({
372
- columnId: column.id,
373
- domRef,
374
- });
375
-
376
- let draggingProxy = null;
377
-
378
- if (dragging && proxyPosition) {
379
- draggingProxy = (
380
- <div
381
- key={column.id}
382
- className={`${InfiniteTableHeaderCellClassName}Proxy ${HeaderCellProxy}`}
383
- style={{
384
- position: 'absolute',
385
- height,
386
- width,
387
- left: proxyPosition!.left ?? 0,
388
-
389
- top: proxyPosition!.top ?? 0,
390
- zIndex: 1_000_000_000,
391
- }}
392
- >
393
- {renderParam.renderBag.header}
394
- </div>
395
- );
396
-
397
- draggingProxy = createPortal(draggingProxy, portalDOMRef.current!);
398
- }
399
- const ContextProvider =
400
- InfiniteTableHeaderCellContext.Provider as React.Provider<
401
- InfiniteTableHeaderCellContextType<T>
402
- >;
403
-
404
- const contentRecipeVariants: HeaderCellContentVariantsType = {
405
- filtered: column.computedFiltered,
406
- };
407
-
408
- const setFilterValue = useCallback(
409
- (filterValue: DataSourceFilterValueItem<T>) => {
410
- const state = getDataSourceState();
411
- let newFilterValue = state.filterValue ?? [];
412
-
413
- let found = false;
414
- newFilterValue = newFilterValue.map((currentFilterValue) => {
415
- if (
416
- (filterValue.id && currentFilterValue.id === filterValue.id) ||
417
- (filterValue.field && currentFilterValue.field === column.field)
418
- ) {
419
- found = true;
420
- return filterValue;
421
- }
422
-
423
- return currentFilterValue;
424
- });
425
-
426
- if (!found) {
427
- newFilterValue.push(filterValue);
428
- }
429
-
430
- // we now filter away the empty filter values
431
- newFilterValue = newFilterValue.filter((filterValue) => {
432
- const filterType = filterTypes[filterValue.filterType];
433
- if (
434
- !filterType ||
435
- filterType.emptyValues.has(filterValue.filterValue)
436
- ) {
437
- return false;
438
- }
439
- return true;
440
- });
441
-
442
- dataSourceActions.filterValue = newFilterValue;
443
- },
444
- [column, filterTypes],
445
- );
446
-
447
- const debouncedOnFilterValueChange = React.useMemo(() => {
448
- const fn = (filterValue: any) => {
449
- let newFilterValueForColumn: DataSourceFilterValueItem<T>;
450
- if (column.computedFilterValue) {
451
- newFilterValueForColumn = {
452
- ...column.computedFilterValue,
453
- };
454
- } else {
455
- const filterType = column.computedFilterType;
456
- const filterValueForColumn: Partial<DataSourceFilterValueItem<T>> = {
457
- filterType,
458
- operator: filterTypes[filterType].defaultOperator,
459
- filterValue,
460
- valueGetter: column.valueGetter,
461
- };
462
- if (column.field) {
463
- filterValueForColumn.field = column.field;
464
- } else {
465
- filterValueForColumn.id = column.id;
466
- }
467
-
468
- newFilterValueForColumn =
469
- filterValueForColumn as DataSourceFilterValueItem<T>;
470
- }
471
-
472
- newFilterValueForColumn.filterValue = filterValue;
473
-
474
- setFilterValue(newFilterValueForColumn);
475
- };
476
-
477
- if (filterDelay > 0) {
478
- return debounce(fn, { wait: filterDelay });
479
- }
480
-
481
- return fn;
482
- }, [
483
- filterDelay,
484
- setFilterValue,
485
- column.computedFilterValue,
486
- column.id,
487
- column.field,
488
- column.computedFilterType,
489
- ]);
490
-
491
- const filterType = column.computedFilterType;
492
-
493
- const FilterEditor = (filterEditors[filterType] ||
494
- defaultFilterEditors[filterType] ||
495
- StringFilterEditor) as React.FC<InfiniteTableFilterEditorProps<T>>;
496
-
497
- const resizeHandle = useColumnResizeHandle(column);
498
-
499
- const zIndex = `var(${columnZIndexAtIndex}-${column.computedVisibleIndex})`;
500
- style.zIndex = zIndex;
501
- return (
502
- <ContextProvider value={renderParam}>
503
- <InfiniteTableCell<T>
504
- domRef={ref}
505
- cellType="header"
506
- column={column}
507
- data-name={`HeaderCell`}
508
- data-column-id={column.id}
509
- // this is used by ReactHeadlessRenderer - look for #updatezindex
510
- data-z-index={zIndex}
511
- style={style}
512
- width={width}
513
- onPointerDown={onPointerDown}
514
- contentClassName={join(
515
- HeaderCellContentRecipe(contentRecipeVariants),
516
- justifyContent[column.align ?? 'start'],
517
- )}
518
- contentStyle={showColumnFilters ? { height: height / 2 } : undefined}
519
- className={join(
520
- InfiniteTableHeaderCellClassName,
521
- userSelect.none,
522
- column.computedSortable ? cursor.pointer : '',
523
- headerClassName,
524
-
525
- useCellClassName(
526
- column,
527
- [InfiniteTableHeaderCellClassName, InfiniteTableCellClassName],
528
- HeaderCellRecipe,
529
- {
530
- dragging,
531
- rowSelected: false,
532
- zebra: false,
533
- rowActive: false,
534
- groupRow: false,
535
- rowExpanded: false,
536
- },
537
- ),
538
- CellCls,
539
- )}
540
- cssEllipsis={column.headerCssEllipsis ?? column.cssEllipsis ?? true}
541
- afterChildren={
542
- <>
543
- {showColumnFilters ? (
544
- column.computedFilterable ? (
545
- <InfiniteTableColumnHeaderFilter
546
- filterEditor={FilterEditor}
547
- filterTypes={filterTypes}
548
- onChange={debouncedOnFilterValueChange}
549
- columnFilterType={filterType}
550
- columnLabel={column.field || column.name || column.id}
551
- columnFilterValue={column.computedFilterValue}
552
- columnHeaderHeight={columnHeaderHeight}
553
- />
554
- ) : (
555
- <InfiniteTableColumnHeaderFilterEmpty />
556
- )
557
- ) : null}
558
- {resizeHandle}
559
- </>
560
- }
561
- renderChildren={renderChildren}
562
- />
563
- {draggingProxy}
564
- </ContextProvider>
565
- );
566
- }
567
-
568
- export function useInfiniteHeaderCell<T>() {
569
- const result = useContext(
570
- InfiniteTableHeaderCellContext,
571
- ) as InfiniteTableHeaderCellContextType<T>;
572
-
573
- return result;
574
- }
@@ -1,79 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { join } from '../../../../utils/join';
4
- import { stripVar } from '../../../../utils/stripVar';
5
- import { rootClassName } from '../../internalProps';
6
- import { InternalVars } from '../../theme.css';
7
- import { cssEllipsisClassName } from '../../utilities.css';
8
-
9
- import { HeaderGroupCls } from './header.css';
10
-
11
- import { useColumnGroupResizeHandle } from './useColumnGroupResizeHandle';
12
-
13
- import type { InfiniteTableHeaderGroupProps } from './InfiniteTableHeaderTypes';
14
-
15
- export const TableHeaderGroupClassName = `${rootClassName}HeaderGroup`;
16
-
17
- const columnWidthAtIndex = stripVar(InternalVars.columnWidthAtIndex);
18
- const columnZIndexAtIndex = stripVar(InternalVars.columnZIndexAtIndex);
19
-
20
- export function InfiniteTableHeaderGroup<T>(
21
- props: InfiniteTableHeaderGroupProps<T>,
22
- ) {
23
- const { columnGroup, height, columns, bodyBrain, columnGroupsMaxDepth } =
24
- props;
25
-
26
- let { header } = columnGroup;
27
-
28
- if (header instanceof Function) {
29
- header = header({
30
- columnGroup,
31
- });
32
- }
33
-
34
- const handle = useColumnGroupResizeHandle(columns, {
35
- bodyBrain,
36
- groupHeight: height,
37
- columnGroup,
38
- columnGroupsMaxDepth,
39
- });
40
-
41
- const firstColumn = columns[0];
42
- const width =
43
- columns.length > 1
44
- ? `calc( ` +
45
- columns
46
- .map(
47
- (col) => `var(${columnWidthAtIndex}-${col.computedVisibleIndex})`,
48
- )
49
- .join(' + ') +
50
- ' )'
51
- : `var(${columnWidthAtIndex}-${firstColumn.computedVisibleIndex})`;
52
-
53
- // the zIndexes are bigger at groups that are at the top
54
- // also groups to the left have a higher zIndex
55
-
56
- const zIndex = `calc(var(${columnZIndexAtIndex}-${
57
- firstColumn.computedVisibleIndex
58
- }) + ${columnGroupsMaxDepth - columnGroup.depth})`;
59
-
60
- return (
61
- <div
62
- ref={props.domRef}
63
- data-group-id={columnGroup.uniqueGroupId}
64
- className={join(HeaderGroupCls, TableHeaderGroupClassName)}
65
- style={{ width, height }}
66
- data-z-index={zIndex}
67
- >
68
- <div
69
- className={join(
70
- `${TableHeaderGroupClassName}__header-content`,
71
- cssEllipsisClassName,
72
- )}
73
- >
74
- {header}
75
- </div>
76
- {handle}
77
- </div>
78
- );
79
- }
@@ -1,25 +0,0 @@
1
- import { InfiniteTableComputedColumn } from '../..';
2
- import { MatrixBrain } from '../../../VirtualBrain/MatrixBrain';
3
- import { InfiniteTableComputedColumnGroup } from '../../types/InfiniteTableProps';
4
-
5
- import { ColumnAndGroupTreeInfo } from './buildColumnAndGroupTree';
6
-
7
- export type InfiniteTableHeaderProps<T> = {
8
- repaintId?: string | number;
9
- headerBrain: MatrixBrain;
10
- bodyBrain: MatrixBrain;
11
- columns: InfiniteTableComputedColumn<T>[];
12
- columnHeaderHeight: number;
13
- columnGroupsMaxDepth: number;
14
- columnAndGroupTreeInfo?: ColumnAndGroupTreeInfo<T>;
15
- };
16
-
17
- export type InfiniteTableHeaderGroupProps<T> = {
18
- bodyBrain: MatrixBrain;
19
- columns: InfiniteTableComputedColumn<T>[];
20
- columnGroup: InfiniteTableComputedColumnGroup;
21
- columnGroupsMaxDepth: number;
22
- height: number;
23
- width: number;
24
- domRef?: React.RefCallback<HTMLElement>;
25
- };