@vuu-ui/vuu-table 0.0.26

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 (260) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +0 -0
  3. package/cjs/Row.css.js +6 -0
  4. package/cjs/Row.css.js.map +1 -0
  5. package/cjs/Row.js +130 -0
  6. package/cjs/Row.js.map +1 -0
  7. package/cjs/Table.css.js +6 -0
  8. package/cjs/Table.css.js.map +1 -0
  9. package/cjs/Table.js +285 -0
  10. package/cjs/Table.js.map +1 -0
  11. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css.js +6 -0
  12. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css.js.map +1 -0
  13. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js +42 -0
  14. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js.map +1 -0
  15. package/cjs/cell-renderers/input-cell/InputCell.css.js +6 -0
  16. package/cjs/cell-renderers/input-cell/InputCell.css.js.map +1 -0
  17. package/cjs/cell-renderers/input-cell/InputCell.js +58 -0
  18. package/cjs/cell-renderers/input-cell/InputCell.js.map +1 -0
  19. package/cjs/cell-renderers/toggle-cell/ToggleCell.css.js +6 -0
  20. package/cjs/cell-renderers/toggle-cell/ToggleCell.css.js.map +1 -0
  21. package/cjs/cell-renderers/toggle-cell/ToggleCell.js +68 -0
  22. package/cjs/cell-renderers/toggle-cell/ToggleCell.js.map +1 -0
  23. package/cjs/column-header-pill/ColumnHeaderPill.css.js +6 -0
  24. package/cjs/column-header-pill/ColumnHeaderPill.css.js.map +1 -0
  25. package/cjs/column-header-pill/ColumnHeaderPill.js +53 -0
  26. package/cjs/column-header-pill/ColumnHeaderPill.js.map +1 -0
  27. package/cjs/column-header-pill/GroupColumnPill.css.js +6 -0
  28. package/cjs/column-header-pill/GroupColumnPill.css.js.map +1 -0
  29. package/cjs/column-header-pill/GroupColumnPill.js +29 -0
  30. package/cjs/column-header-pill/GroupColumnPill.js.map +1 -0
  31. package/cjs/column-header-pill/SortIndicator.css.js +6 -0
  32. package/cjs/column-header-pill/SortIndicator.css.js.map +1 -0
  33. package/cjs/column-header-pill/SortIndicator.js +27 -0
  34. package/cjs/column-header-pill/SortIndicator.js.map +1 -0
  35. package/cjs/column-menu/ColumnMenu.css.js +6 -0
  36. package/cjs/column-menu/ColumnMenu.css.js.map +1 -0
  37. package/cjs/column-menu/ColumnMenu.js +30 -0
  38. package/cjs/column-menu/ColumnMenu.js.map +1 -0
  39. package/cjs/column-resizing/ColumnResizer.css.js +6 -0
  40. package/cjs/column-resizing/ColumnResizer.css.js.map +1 -0
  41. package/cjs/column-resizing/ColumnResizer.js +72 -0
  42. package/cjs/column-resizing/ColumnResizer.js.map +1 -0
  43. package/cjs/column-resizing/useTableColumnResize.js +55 -0
  44. package/cjs/column-resizing/useTableColumnResize.js.map +1 -0
  45. package/cjs/context-menu/buildContextMenuDescriptors.js +214 -0
  46. package/cjs/context-menu/buildContextMenuDescriptors.js.map +1 -0
  47. package/cjs/context-menu/useHandleTableContextMenu.js +81 -0
  48. package/cjs/context-menu/useHandleTableContextMenu.js.map +1 -0
  49. package/cjs/header-cell/GroupHeaderCell.css.js +6 -0
  50. package/cjs/header-cell/GroupHeaderCell.css.js.map +1 -0
  51. package/cjs/header-cell/GroupHeaderCell.js +117 -0
  52. package/cjs/header-cell/GroupHeaderCell.js.map +1 -0
  53. package/cjs/header-cell/HeaderCell.css.js +6 -0
  54. package/cjs/header-cell/HeaderCell.css.js.map +1 -0
  55. package/cjs/header-cell/HeaderCell.js +109 -0
  56. package/cjs/header-cell/HeaderCell.js.map +1 -0
  57. package/cjs/index.js +36 -0
  58. package/cjs/index.js.map +1 -0
  59. package/cjs/moving-window.js +61 -0
  60. package/cjs/moving-window.js.map +1 -0
  61. package/cjs/table-cell/TableCell.css.js +6 -0
  62. package/cjs/table-cell/TableCell.css.js.map +1 -0
  63. package/cjs/table-cell/TableCell.js +72 -0
  64. package/cjs/table-cell/TableCell.js.map +1 -0
  65. package/cjs/table-cell/TableGroupCell.css.js +6 -0
  66. package/cjs/table-cell/TableGroupCell.css.js.map +1 -0
  67. package/cjs/table-cell/TableGroupCell.js +54 -0
  68. package/cjs/table-cell/TableGroupCell.js.map +1 -0
  69. package/cjs/table-config.js +25 -0
  70. package/cjs/table-config.js.map +1 -0
  71. package/cjs/table-dom-utils.js +60 -0
  72. package/cjs/table-dom-utils.js.map +1 -0
  73. package/cjs/table-header/TableHeader.js +87 -0
  74. package/cjs/table-header/TableHeader.js.map +1 -0
  75. package/cjs/table-header/useTableHeader.js +72 -0
  76. package/cjs/table-header/useTableHeader.js.map +1 -0
  77. package/cjs/useCell.js +28 -0
  78. package/cjs/useCell.js.map +1 -0
  79. package/cjs/useCellEditing.js +79 -0
  80. package/cjs/useCellEditing.js.map +1 -0
  81. package/cjs/useControlledTableNavigation.js +43 -0
  82. package/cjs/useControlledTableNavigation.js.map +1 -0
  83. package/cjs/useDataSource.js +104 -0
  84. package/cjs/useDataSource.js.map +1 -0
  85. package/cjs/useInitialValue.js +11 -0
  86. package/cjs/useInitialValue.js.map +1 -0
  87. package/cjs/useKeyboardNavigation.js +304 -0
  88. package/cjs/useKeyboardNavigation.js.map +1 -0
  89. package/cjs/useRowClassNameGenerators.js +34 -0
  90. package/cjs/useRowClassNameGenerators.js.map +1 -0
  91. package/cjs/useRowHeight.js +43 -0
  92. package/cjs/useRowHeight.js.map +1 -0
  93. package/cjs/useSelection.js +64 -0
  94. package/cjs/useSelection.js.map +1 -0
  95. package/cjs/useTable.js +553 -0
  96. package/cjs/useTable.js.map +1 -0
  97. package/cjs/useTableAndColumnSettings.js +128 -0
  98. package/cjs/useTableAndColumnSettings.js.map +1 -0
  99. package/cjs/useTableContextMenu.js +42 -0
  100. package/cjs/useTableContextMenu.js.map +1 -0
  101. package/cjs/useTableModel.js +297 -0
  102. package/cjs/useTableModel.js.map +1 -0
  103. package/cjs/useTableScroll.js +396 -0
  104. package/cjs/useTableScroll.js.map +1 -0
  105. package/cjs/useTableViewport.js +122 -0
  106. package/cjs/useTableViewport.js.map +1 -0
  107. package/esm/Row.css.js +4 -0
  108. package/esm/Row.css.js.map +1 -0
  109. package/esm/Row.js +127 -0
  110. package/esm/Row.js.map +1 -0
  111. package/esm/Table.css.js +4 -0
  112. package/esm/Table.css.js.map +1 -0
  113. package/esm/Table.js +283 -0
  114. package/esm/Table.js.map +1 -0
  115. package/esm/cell-renderers/checkbox-cell/CheckboxCell.css.js +4 -0
  116. package/esm/cell-renderers/checkbox-cell/CheckboxCell.css.js.map +1 -0
  117. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js +40 -0
  118. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js.map +1 -0
  119. package/esm/cell-renderers/input-cell/InputCell.css.js +4 -0
  120. package/esm/cell-renderers/input-cell/InputCell.css.js.map +1 -0
  121. package/esm/cell-renderers/input-cell/InputCell.js +56 -0
  122. package/esm/cell-renderers/input-cell/InputCell.js.map +1 -0
  123. package/esm/cell-renderers/toggle-cell/ToggleCell.css.js +4 -0
  124. package/esm/cell-renderers/toggle-cell/ToggleCell.css.js.map +1 -0
  125. package/esm/cell-renderers/toggle-cell/ToggleCell.js +66 -0
  126. package/esm/cell-renderers/toggle-cell/ToggleCell.js.map +1 -0
  127. package/esm/column-header-pill/ColumnHeaderPill.css.js +4 -0
  128. package/esm/column-header-pill/ColumnHeaderPill.css.js.map +1 -0
  129. package/esm/column-header-pill/ColumnHeaderPill.js +51 -0
  130. package/esm/column-header-pill/ColumnHeaderPill.js.map +1 -0
  131. package/esm/column-header-pill/GroupColumnPill.css.js +4 -0
  132. package/esm/column-header-pill/GroupColumnPill.css.js.map +1 -0
  133. package/esm/column-header-pill/GroupColumnPill.js +27 -0
  134. package/esm/column-header-pill/GroupColumnPill.js.map +1 -0
  135. package/esm/column-header-pill/SortIndicator.css.js +4 -0
  136. package/esm/column-header-pill/SortIndicator.css.js.map +1 -0
  137. package/esm/column-header-pill/SortIndicator.js +25 -0
  138. package/esm/column-header-pill/SortIndicator.js.map +1 -0
  139. package/esm/column-menu/ColumnMenu.css.js +4 -0
  140. package/esm/column-menu/ColumnMenu.css.js.map +1 -0
  141. package/esm/column-menu/ColumnMenu.js +28 -0
  142. package/esm/column-menu/ColumnMenu.js.map +1 -0
  143. package/esm/column-resizing/ColumnResizer.css.js +4 -0
  144. package/esm/column-resizing/ColumnResizer.css.js.map +1 -0
  145. package/esm/column-resizing/ColumnResizer.js +70 -0
  146. package/esm/column-resizing/ColumnResizer.js.map +1 -0
  147. package/esm/column-resizing/useTableColumnResize.js +53 -0
  148. package/esm/column-resizing/useTableColumnResize.js.map +1 -0
  149. package/esm/context-menu/buildContextMenuDescriptors.js +212 -0
  150. package/esm/context-menu/buildContextMenuDescriptors.js.map +1 -0
  151. package/esm/context-menu/useHandleTableContextMenu.js +79 -0
  152. package/esm/context-menu/useHandleTableContextMenu.js.map +1 -0
  153. package/esm/header-cell/GroupHeaderCell.css.js +4 -0
  154. package/esm/header-cell/GroupHeaderCell.css.js.map +1 -0
  155. package/esm/header-cell/GroupHeaderCell.js +115 -0
  156. package/esm/header-cell/GroupHeaderCell.js.map +1 -0
  157. package/esm/header-cell/HeaderCell.css.js +4 -0
  158. package/esm/header-cell/HeaderCell.css.js.map +1 -0
  159. package/esm/header-cell/HeaderCell.js +107 -0
  160. package/esm/header-cell/HeaderCell.js.map +1 -0
  161. package/esm/index.js +14 -0
  162. package/esm/index.js.map +1 -0
  163. package/esm/moving-window.js +59 -0
  164. package/esm/moving-window.js.map +1 -0
  165. package/esm/table-cell/TableCell.css.js +4 -0
  166. package/esm/table-cell/TableCell.css.js.map +1 -0
  167. package/esm/table-cell/TableCell.js +70 -0
  168. package/esm/table-cell/TableCell.js.map +1 -0
  169. package/esm/table-cell/TableGroupCell.css.js +4 -0
  170. package/esm/table-cell/TableGroupCell.css.js.map +1 -0
  171. package/esm/table-cell/TableGroupCell.js +52 -0
  172. package/esm/table-cell/TableGroupCell.js.map +1 -0
  173. package/esm/table-config.js +23 -0
  174. package/esm/table-config.js.map +1 -0
  175. package/esm/table-dom-utils.js +51 -0
  176. package/esm/table-dom-utils.js.map +1 -0
  177. package/esm/table-header/TableHeader.js +85 -0
  178. package/esm/table-header/TableHeader.js.map +1 -0
  179. package/esm/table-header/useTableHeader.js +70 -0
  180. package/esm/table-header/useTableHeader.js.map +1 -0
  181. package/esm/useCell.js +26 -0
  182. package/esm/useCell.js.map +1 -0
  183. package/esm/useCellEditing.js +77 -0
  184. package/esm/useCellEditing.js.map +1 -0
  185. package/esm/useControlledTableNavigation.js +41 -0
  186. package/esm/useControlledTableNavigation.js.map +1 -0
  187. package/esm/useDataSource.js +101 -0
  188. package/esm/useDataSource.js.map +1 -0
  189. package/esm/useInitialValue.js +9 -0
  190. package/esm/useInitialValue.js.map +1 -0
  191. package/esm/useKeyboardNavigation.js +300 -0
  192. package/esm/useKeyboardNavigation.js.map +1 -0
  193. package/esm/useRowClassNameGenerators.js +32 -0
  194. package/esm/useRowClassNameGenerators.js.map +1 -0
  195. package/esm/useRowHeight.js +41 -0
  196. package/esm/useRowHeight.js.map +1 -0
  197. package/esm/useSelection.js +62 -0
  198. package/esm/useSelection.js.map +1 -0
  199. package/esm/useTable.js +551 -0
  200. package/esm/useTable.js.map +1 -0
  201. package/esm/useTableAndColumnSettings.js +126 -0
  202. package/esm/useTableAndColumnSettings.js.map +1 -0
  203. package/esm/useTableContextMenu.js +40 -0
  204. package/esm/useTableContextMenu.js.map +1 -0
  205. package/esm/useTableModel.js +293 -0
  206. package/esm/useTableModel.js.map +1 -0
  207. package/esm/useTableScroll.js +393 -0
  208. package/esm/useTableScroll.js.map +1 -0
  209. package/esm/useTableViewport.js +120 -0
  210. package/esm/useTableViewport.js.map +1 -0
  211. package/package.json +42 -0
  212. package/types/Row.d.ts +23 -0
  213. package/types/Table.d.ts +91 -0
  214. package/types/cell-renderers/checkbox-cell/CheckboxCell.d.ts +3 -0
  215. package/types/cell-renderers/checkbox-cell/index.d.ts +1 -0
  216. package/types/cell-renderers/index.d.ts +3 -0
  217. package/types/cell-renderers/input-cell/InputCell.d.ts +3 -0
  218. package/types/cell-renderers/input-cell/index.d.ts +1 -0
  219. package/types/cell-renderers/toggle-cell/ToggleCell.d.ts +3 -0
  220. package/types/cell-renderers/toggle-cell/index.d.ts +1 -0
  221. package/types/column-header-pill/ColumnHeaderPill.d.ts +8 -0
  222. package/types/column-header-pill/GroupColumnPill.d.ts +7 -0
  223. package/types/column-header-pill/SortIndicator.d.ts +6 -0
  224. package/types/column-header-pill/index.d.ts +3 -0
  225. package/types/column-menu/ColumnMenu.d.ts +6 -0
  226. package/types/column-menu/index.d.ts +1 -0
  227. package/types/column-resizing/ColumnResizer.d.ts +7 -0
  228. package/types/column-resizing/index.d.ts +2 -0
  229. package/types/column-resizing/useTableColumnResize.d.ts +15 -0
  230. package/types/context-menu/buildContextMenuDescriptors.d.ts +3 -0
  231. package/types/context-menu/index.d.ts +2 -0
  232. package/types/context-menu/useHandleTableContextMenu.d.ts +20 -0
  233. package/types/header-cell/GroupHeaderCell.d.ts +8 -0
  234. package/types/header-cell/HeaderCell.d.ts +3 -0
  235. package/types/header-cell/index.d.ts +2 -0
  236. package/types/index.d.ts +11 -0
  237. package/types/moving-window.d.ts +14 -0
  238. package/types/table-cell/TableCell.d.ts +3 -0
  239. package/types/table-cell/TableGroupCell.d.ts +3 -0
  240. package/types/table-cell/index.d.ts +2 -0
  241. package/types/table-config.d.ts +25 -0
  242. package/types/table-dom-utils.d.ts +14 -0
  243. package/types/table-header/TableHeader.d.ts +19 -0
  244. package/types/table-header/useTableHeader.d.ts +15 -0
  245. package/types/useCell.d.ts +6 -0
  246. package/types/useCellEditing.d.ts +10 -0
  247. package/types/useControlledTableNavigation.d.ts +7 -0
  248. package/types/useDataSource.d.ts +20 -0
  249. package/types/useInitialValue.d.ts +1 -0
  250. package/types/useKeyboardNavigation.d.ts +36 -0
  251. package/types/useResizeObserver.d.ts +15 -0
  252. package/types/useRowClassNameGenerators.d.ts +3 -0
  253. package/types/useRowHeight.d.ts +8 -0
  254. package/types/useSelection.d.ts +14 -0
  255. package/types/useTable.d.ts +71 -0
  256. package/types/useTableAndColumnSettings.d.ts +15 -0
  257. package/types/useTableContextMenu.d.ts +10 -0
  258. package/types/useTableModel.d.ts +103 -0
  259. package/types/useTableScroll.d.ts +57 -0
  260. package/types/useTableViewport.d.ts +41 -0
@@ -0,0 +1,91 @@
1
+ import { DataSource, SchemaColumn, SelectionChangeHandler, VuuFeatureInvocationMessage } from "@vuu-ui/vuu-data-types";
2
+ import { TableConfig, TableConfigChangeHandler, TableRowClickHandler, TableRowSelectHandler, TableSelectionModel } from "@vuu-ui/vuu-table-types";
3
+ import type { DragDropState } from "@vuu-ui/vuu-ui-controls";
4
+ import { DragStartHandler, dragStrategy, MeasuredContainerProps } from "@vuu-ui/vuu-ui-controls";
5
+ import { FC, ForwardedRef } from "react";
6
+ import { RowProps } from "./Row";
7
+ import { ScrollingAPI } from "./useTableScroll";
8
+ export type TableNavigationStyle = "none" | "cell" | "row";
9
+ export interface TableProps extends Omit<MeasuredContainerProps, "onDragStart" | "onDrop" | "onSelect"> {
10
+ Row?: FC<RowProps>;
11
+ allowConfigEditing?: boolean;
12
+ allowDragDrop?: boolean | dragStrategy;
13
+ /**
14
+ * required if a fully featured column picker is to be available
15
+ */
16
+ availableColumns?: SchemaColumn[];
17
+ /**
18
+ * Provide configuration settings for Table. At minimun, column
19
+ * descriptors must be provided.
20
+ */
21
+ config: TableConfig;
22
+ dataSource: DataSource;
23
+ disableFocus?: boolean;
24
+ /**
25
+ * Pixel height of headers. If specified here, this will take precedence over CSS
26
+ * values and Table will not respond to density changes. Default value is 125% of
27
+ * rowHeight, whether set vis rowHeight prop or CSS.
28
+ */
29
+ headerHeight?: number;
30
+ /**
31
+ * Defined how focus navigation within data cells will be handled by table.
32
+ * Default is cell.
33
+ */
34
+ highlightedIndex?: number;
35
+ navigationStyle?: TableNavigationStyle;
36
+ /**
37
+ * required if a fully featured column picker is to be available.
38
+ * Available columns can be changed by the addition or removal of
39
+ * one or more calculated columns.
40
+ */
41
+ onAvailableColumnsChange?: (columns: SchemaColumn[]) => void;
42
+ /**
43
+ * This callback will be invoked any time a config attribute of TableConfig
44
+ * is changed. By persisting this value and providing it to the Table as a
45
+ * prop, table state can be persisted across sessions.
46
+ */
47
+ onConfigChange?: TableConfigChangeHandler;
48
+ onDragStart?: DragStartHandler;
49
+ onDrop?: (dragDropState: DragDropState) => void;
50
+ /**
51
+ * When a Vuu feature e.g. context menu action, has been invoked, the Vuu server
52
+ * response must be handled. This callback provides that response.
53
+ */
54
+ onFeatureInvocation?: (message: VuuFeatureInvocationMessage) => void;
55
+ onHighlight?: (idx: number) => void;
56
+ /**
57
+ * callback invoked when user 'clicks' a table row. CLick triggered either
58
+ * via mouse click or keyboard (default ENTER);
59
+ */
60
+ onRowClick?: TableRowClickHandler;
61
+ onSelect?: TableRowSelectHandler;
62
+ onSelectionChange?: SelectionChangeHandler;
63
+ renderBufferSize?: number;
64
+ /**
65
+ * Pixel height of rows. If specified here, this will take precedence over CSS
66
+ * values and Table will not respond to density changes.
67
+ */
68
+ rowHeight?: number;
69
+ /**
70
+ * imperative API for scrolling table
71
+ */
72
+ scrollingApiRef?: ForwardedRef<ScrollingAPI>;
73
+ /**
74
+ * Selection Bookends style the left and right edge of a selection block.
75
+ * They are optional, value defaults to zero.
76
+ * TODO this should just live in CSS
77
+ */
78
+ selectionBookendWidth?: number;
79
+ selectionModel?: TableSelectionModel;
80
+ /**
81
+ * if false, table rendered without headers. Useful when table is being included in a
82
+ * composite component.
83
+ */
84
+ showColumnHeaders?: boolean;
85
+ /**
86
+ * if false, column headers will not display menu icon. Menu items are still available
87
+ * from contexct menu
88
+ */
89
+ showColumnHeaderMenus?: boolean;
90
+ }
91
+ export declare const Table: import("react").ForwardRefExoticComponent<TableProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import { TableCellRendererProps } from "@vuu-ui/vuu-table-types";
3
+ export declare const CheckboxCell: React.FC<TableCellRendererProps>;
@@ -0,0 +1 @@
1
+ export * from "./CheckboxCell";
@@ -0,0 +1,3 @@
1
+ export * from "./checkbox-cell";
2
+ export * from "./input-cell";
3
+ export * from "./toggle-cell";
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { TableCellRendererProps } from "@vuu-ui/vuu-table-types";
3
+ export declare const InputCell: ({ column, columnMap, onCommit, row, }: TableCellRendererProps) => JSX.Element;
@@ -0,0 +1 @@
1
+ export * from "./InputCell";
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { TableCellRendererProps } from "@vuu-ui/vuu-table-types";
3
+ export declare const ToggleCell: import("react").NamedExoticComponent<TableCellRendererProps>;
@@ -0,0 +1 @@
1
+ export * from "./ToggleCell";
@@ -0,0 +1,8 @@
1
+ import { RuntimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
2
+ import { HTMLAttributes } from "react";
3
+ export interface ColumnHeaderPillProps extends HTMLAttributes<HTMLDivElement> {
4
+ column: RuntimeColumnDescriptor;
5
+ removable?: boolean;
6
+ onRemove?: (column: RuntimeColumnDescriptor) => void;
7
+ }
8
+ export declare const ColumnHeaderPill: ({ children, className, column, onRemove, removable, ...htmlAttributes }: ColumnHeaderPillProps) => JSX.Element;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { RuntimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
3
+ import { ColumnHeaderPillProps } from "./ColumnHeaderPill";
4
+ export interface GroupColumnPillProps extends ColumnHeaderPillProps {
5
+ column: RuntimeColumnDescriptor;
6
+ }
7
+ export declare const GroupColumnPill: ({ column, ...columnHeaderProps }: GroupColumnPillProps) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import { RuntimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
3
+ export interface SortIndicatorProps {
4
+ column: RuntimeColumnDescriptor;
5
+ }
6
+ export declare const SortIndicator: ({ column }: SortIndicatorProps) => JSX.Element | null;
@@ -0,0 +1,3 @@
1
+ export * from "./ColumnHeaderPill";
2
+ export * from "./GroupColumnPill";
3
+ export * from "./SortIndicator";
@@ -0,0 +1,6 @@
1
+ import { RuntimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
2
+ import { HTMLAttributes } from "react";
3
+ export interface ColumnMenuProps extends HTMLAttributes<HTMLSpanElement> {
4
+ column: RuntimeColumnDescriptor;
5
+ }
6
+ export declare const ColumnMenu: ({ className, column }: ColumnMenuProps) => JSX.Element;
@@ -0,0 +1 @@
1
+ export * from "./ColumnMenu";
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ export interface TableColumnResizerProps {
3
+ onDrag: (evt: MouseEvent, moveBy: number, totalDistanceMoved: number) => void;
4
+ onDragEnd: (evt: MouseEvent, totalDistanceMoved: number) => void;
5
+ onDragStart: (evt: React.MouseEvent) => void;
6
+ }
7
+ export declare const ColumnResizer: ({ onDrag, onDragEnd, onDragStart, }: TableColumnResizerProps) => JSX.Element;
@@ -0,0 +1,2 @@
1
+ export * from "./ColumnResizer";
2
+ export * from "./useTableColumnResize";
@@ -0,0 +1,15 @@
1
+ import { Heading, ResizePhase, RuntimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
2
+ import { RefObject } from "react";
3
+ export type ResizeHandler = (evt: MouseEvent, moveBy: number) => void;
4
+ export interface CellResizeHookProps {
5
+ column: RuntimeColumnDescriptor | Heading;
6
+ onResize?: (phase: ResizePhase, columnName: string, width?: number) => void;
7
+ rootRef: RefObject<HTMLDivElement>;
8
+ }
9
+ export interface CellResizeHookResult {
10
+ isResizing: boolean;
11
+ onDrag: (evt: MouseEvent, moveBy: number, totalDistanceMoved: number) => void;
12
+ onDragStart: (evt: React.MouseEvent) => void;
13
+ onDragEnd: (evt: MouseEvent) => void;
14
+ }
15
+ export declare const useTableColumnResize: ({ column, onResize, rootRef, }: CellResizeHookProps) => CellResizeHookResult;
@@ -0,0 +1,3 @@
1
+ import { DataSource, MenuBuilder } from "@vuu-ui/vuu-data-types";
2
+ export type ContextMenuLocation = "header" | "filter" | "grid";
3
+ export declare const buildContextMenuDescriptors: (dataSource?: DataSource) => MenuBuilder;
@@ -0,0 +1,2 @@
1
+ export * from "./buildContextMenuDescriptors";
2
+ export * from "./useHandleTableContextMenu";
@@ -0,0 +1,20 @@
1
+ import { RuntimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
2
+ import { Filter } from "@vuu-ui/vuu-filter-types";
3
+ import { VuuFilter } from "@vuu-ui/vuu-protocol-types";
4
+ import { DataSource, MenuActionHandler } from "@vuu-ui/vuu-data-types";
5
+ import { PersistentColumnAction } from "../useTableModel";
6
+ export interface ContextMenuOptions {
7
+ column?: RuntimeColumnDescriptor;
8
+ filter?: Filter;
9
+ sort?: VuuFilter;
10
+ }
11
+ export interface ContextMenuHookProps {
12
+ dataSource?: DataSource;
13
+ /**
14
+ * A persistent Column Operation is any manipulation of a table column that should be
15
+ * persisted across user sessions. e.g. if user pins a column, column should still be
16
+ * pinned next time user opens app.
17
+ */
18
+ onPersistentColumnOperation: (action: PersistentColumnAction) => void;
19
+ }
20
+ export declare const useHandleTableContextMenu: ({ dataSource, onPersistentColumnOperation, }: ContextMenuHookProps) => MenuActionHandler;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { ColumnDescriptor, GroupColumnDescriptor, HeaderCellProps, RuntimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
3
+ export interface GroupHeaderCellProps extends Omit<HeaderCellProps, "onDragStart" | "onDrag" | "onDragEnd"> {
4
+ column: GroupColumnDescriptor;
5
+ onMoveColumn?: (columns: ColumnDescriptor[]) => void;
6
+ onRemoveColumn: (column: RuntimeColumnDescriptor) => void;
7
+ }
8
+ export declare const GroupHeaderCell: ({ column: groupColumn, className: classNameProp, onMoveColumn, onRemoveColumn, onResize, ...htmlAttributes }: GroupHeaderCellProps) => JSX.Element;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { HeaderCellProps } from "@vuu-ui/vuu-table-types";
3
+ export declare const HeaderCell: ({ className: classNameProp, column, onClick, onResize, showMenu, ...htmlAttributes }: HeaderCellProps) => JSX.Element;
@@ -0,0 +1,2 @@
1
+ export * from "./GroupHeaderCell";
2
+ export * from "./HeaderCell";
@@ -0,0 +1,11 @@
1
+ export { GroupHeaderCell as GroupHeaderCellNext } from "./header-cell";
2
+ export * from "./header-cell";
3
+ export * from "./Table";
4
+ export * from "./table-cell";
5
+ export * from "./table-config";
6
+ export * from "./cell-renderers";
7
+ export type { RowProps } from "./Row";
8
+ export * from "./useControlledTableNavigation";
9
+ export * from "./useTableModel";
10
+ export * from "./useTableScroll";
11
+ export * from "./useTableViewport";
@@ -0,0 +1,14 @@
1
+ import { DataSourceRow } from "@vuu-ui/vuu-data-types";
2
+ import { VuuRange } from "@vuu-ui/vuu-protocol-types";
3
+ export declare class MovingWindow {
4
+ data: DataSourceRow[];
5
+ rowCount: number;
6
+ private range;
7
+ constructor({ from, to }: VuuRange);
8
+ setRowCount: (rowCount: number) => void;
9
+ add(data: DataSourceRow): void;
10
+ getAtIndex(index: number): DataSourceRow | undefined;
11
+ isWithinRange(index: number): boolean;
12
+ setRange({ from, to }: VuuRange): void;
13
+ getSelectedRows(): DataSourceRow[];
14
+ }
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { TableCellProps } from "@vuu-ui/vuu-table-types";
3
+ export declare const TableCell: ({ column, columnMap, onClick, onDataEdited, row, }: TableCellProps) => JSX.Element;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { TableCellProps } from "@vuu-ui/vuu-table-types";
3
+ export declare const TableGroupCell: ({ column, columnMap, onClick, row, }: TableCellProps) => JSX.Element;
@@ -0,0 +1,2 @@
1
+ export * from "./TableCell";
2
+ export * from "./TableGroupCell";
@@ -0,0 +1,25 @@
1
+ import { ColumnDescriptor, TableConfig } from "@vuu-ui/vuu-table-types";
2
+ export type MoveColumnTableConfigAction = {
3
+ type: "col-move";
4
+ column: ColumnDescriptor;
5
+ fromIndex: number;
6
+ toIndex: number;
7
+ };
8
+ export type ResizeColumnTableConfigAction = {
9
+ type: "col-size";
10
+ column: ColumnDescriptor;
11
+ width: number;
12
+ };
13
+ export type SubscribeColumnTableConfigAction = {
14
+ type: "subscribed";
15
+ column: ColumnDescriptor;
16
+ value: boolean;
17
+ };
18
+ export type UpdateColumnPropertyTableConfigAction = {
19
+ type: "column-prop";
20
+ column: ColumnDescriptor;
21
+ property: keyof ColumnDescriptor;
22
+ value: boolean | number | string;
23
+ };
24
+ export type TableConfigAction = MoveColumnTableConfigAction | ResizeColumnTableConfigAction | UpdateColumnPropertyTableConfigAction;
25
+ export declare const updateTableConfig: (config: TableConfig, action: TableConfigAction) => TableConfig;
@@ -0,0 +1,14 @@
1
+ import { RefObject } from "react";
2
+ import { ScrollDirection } from "./useTableScroll";
3
+ /**
4
+ * [rowIndex, colIndex
5
+ */
6
+ export type CellPos = [number, number];
7
+ export declare const headerCellQuery: (colIdx: number) => string;
8
+ export declare const dataCellQuery: (rowIdx: number, colIdx: number) => string;
9
+ export declare const getTableCell: (containerRef: RefObject<HTMLElement>, [rowIdx, colIdx]: CellPos) => HTMLElement;
10
+ export declare const cellIsEditable: (cell: HTMLDivElement | null) => boolean | undefined;
11
+ export declare const cellIsTextInput: (cell: HTMLElement) => boolean;
12
+ export declare function getRowIndex(rowEl?: HTMLElement): number;
13
+ export declare const closestRowIndex: (el: HTMLElement) => number;
14
+ export declare const howFarIsRowOutsideViewport: (rowEl: HTMLElement, totalHeaderHeight: number, contentContainer?: Element | null) => readonly [ScrollDirection | undefined, number | undefined];
@@ -0,0 +1,19 @@
1
+ /// <reference types="react" />
2
+ import { VuuSortType } from "@vuu-ui/vuu-protocol-types";
3
+ import { ColumnDescriptor, RuntimeColumnDescriptor, TableColumnResizeHandler, TableConfig, TableHeadings } from "@vuu-ui/vuu-table-types";
4
+ export type ColumnSortHandler = (column: ColumnDescriptor, addToExistingSort: boolean, sortType?: VuuSortType) => void;
5
+ export interface TableHeaderProps {
6
+ classBase?: string;
7
+ columns: RuntimeColumnDescriptor[];
8
+ headings: TableHeadings;
9
+ onResizeColumn: TableColumnResizeHandler;
10
+ onMoveColumn: (columns: ColumnDescriptor[]) => void;
11
+ onMoveGroupColumn: (columns: ColumnDescriptor[]) => void;
12
+ onRemoveGroupColumn: (column: RuntimeColumnDescriptor) => void;
13
+ onSortColumn: ColumnSortHandler;
14
+ showColumnHeaderMenus: boolean;
15
+ tableConfig: TableConfig;
16
+ tableId: string;
17
+ virtualColSpan?: number;
18
+ }
19
+ export declare const TableHeader: import("react").MemoExoticComponent<({ classBase, columns, headings, onMoveColumn, onMoveGroupColumn, onRemoveGroupColumn, onResizeColumn, onSortColumn, showColumnHeaderMenus, tableConfig, tableId, virtualColSpan, }: TableHeaderProps) => JSX.Element>;
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
3
+ import { TableHeaderProps } from "./TableHeader";
4
+ export interface TableHeaderHookProps extends Pick<TableHeaderProps, "columns" | "onMoveColumn" | "onSortColumn" | "tableConfig"> {
5
+ label?: string;
6
+ onMoveColumn: (columns: ColumnDescriptor[]) => void;
7
+ onSortColumn: (column: ColumnDescriptor, addToExistingSort: boolean) => void;
8
+ }
9
+ export declare const useTableHeader: ({ columns, onMoveColumn, onSortColumn, tableConfig, }: TableHeaderHookProps) => {
10
+ draggableColumn: JSX.Element | undefined;
11
+ draggedColumnIndex: number | undefined;
12
+ onClick: (evt: React.MouseEvent | React.KeyboardEvent) => void;
13
+ onMouseDown: import("react").MouseEventHandler<Element> | undefined;
14
+ setContainerRef: (instance: HTMLDivElement | null) => void;
15
+ };
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import { RuntimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
3
+ export declare const useCell: (column: RuntimeColumnDescriptor, classBase: string, isHeader?: boolean) => {
4
+ className: string;
5
+ style: import("react").CSSProperties;
6
+ };
@@ -0,0 +1,10 @@
1
+ import { FocusEventHandler, KeyboardEvent as ReactKeyboardEvent, MouseEvent } from "react";
2
+ export interface CellEditingHookProps {
3
+ navigate: () => void;
4
+ }
5
+ export declare const useCellEditing: ({ navigate }: CellEditingHookProps) => {
6
+ onBlur: FocusEventHandler<Element>;
7
+ onDoubleClick: (e: MouseEvent<HTMLElement>) => void;
8
+ onFocus: FocusEventHandler<Element>;
9
+ onKeyDown: (e: ReactKeyboardEvent<HTMLElement>) => void;
10
+ };
@@ -0,0 +1,7 @@
1
+ import { KeyboardEventHandler } from "react";
2
+ export declare const useControlledTableNavigation: (initialValue: number, rowCount: number) => {
3
+ highlightedIndexRef: import("react").MutableRefObject<number | undefined>;
4
+ onHighlight: (idx: number) => void;
5
+ onKeyDown: KeyboardEventHandler<Element>;
6
+ tableRef: import("react").RefObject<HTMLDivElement>;
7
+ };
@@ -0,0 +1,20 @@
1
+ /// <reference types="react" />
2
+ import { DataSource, DataSourceRow, DataSourceSubscribedMessage, VuuFeatureInvocationMessage } from "@vuu-ui/vuu-data-types";
3
+ import { VuuRange } from "@vuu-ui/vuu-protocol-types";
4
+ import { GridAction } from "@vuu-ui/vuu-table-types";
5
+ export interface DataSourceHookProps {
6
+ dataSource: DataSource;
7
+ onFeatureInvocation?: (message: VuuFeatureInvocationMessage) => void;
8
+ onSizeChange: (size: number) => void;
9
+ onSubscribed: (subscription: DataSourceSubscribedMessage) => void;
10
+ range?: VuuRange;
11
+ renderBufferSize?: number;
12
+ }
13
+ export declare const isVuuFeatureInvocation: (action: GridAction) => action is VuuFeatureInvocationMessage;
14
+ export declare const useDataSource: ({ dataSource, onFeatureInvocation, onSizeChange, onSubscribed, range, renderBufferSize, }: DataSourceHookProps) => {
15
+ data: DataSourceRow[];
16
+ dataRef: import("react").MutableRefObject<DataSourceRow[]>;
17
+ getSelectedRows: () => DataSourceRow[];
18
+ range: VuuRange;
19
+ setRange: (range: VuuRange) => void;
20
+ };
@@ -0,0 +1 @@
1
+ export declare const useInitialValue: <T = unknown>(value: T) => T;
@@ -0,0 +1,36 @@
1
+ import { VuuRange } from "@vuu-ui/vuu-protocol-types";
2
+ import { KeyboardEvent, MouseEvent, RefObject } from "react";
3
+ import { TableNavigationStyle } from "./Table";
4
+ import { ScrollRequestHandler } from "./useTableScroll";
5
+ export declare const isNavigationKey: (key: string, navigationStyle: TableNavigationStyle) => key is NavigationKey;
6
+ type ArrowKey = "ArrowUp" | "ArrowDown" | "ArrowLeft" | "ArrowRight";
7
+ type PageKey = "Home" | "End" | "PageUp" | "PageDown";
8
+ type NavigationKey = PageKey | ArrowKey;
9
+ export declare const isPagingKey: (key: string) => key is PageKey;
10
+ export interface NavigationHookProps {
11
+ containerRef: RefObject<HTMLElement>;
12
+ columnCount?: number;
13
+ defaultHighlightedIndex?: number;
14
+ disableFocus?: boolean;
15
+ disableHighlightOnFocus?: boolean;
16
+ highlightedIndex?: number;
17
+ label?: string;
18
+ navigationStyle: TableNavigationStyle;
19
+ viewportRange: VuuRange;
20
+ onHighlight?: (idx: number) => void;
21
+ requestScroll?: ScrollRequestHandler;
22
+ restoreLastFocus?: boolean;
23
+ rowCount?: number;
24
+ selected?: unknown;
25
+ viewportRowCount: number;
26
+ }
27
+ export declare const useKeyboardNavigation: ({ columnCount, containerRef, disableFocus, defaultHighlightedIndex, disableHighlightOnFocus, highlightedIndex: highlightedIndexProp, navigationStyle, requestScroll, onHighlight, rowCount, viewportRowCount, }: NavigationHookProps) => {
28
+ highlightedIndexRef: import("react").MutableRefObject<number | undefined>;
29
+ navigate: () => void;
30
+ onClick: (evt: MouseEvent) => void;
31
+ onFocus: () => void;
32
+ onKeyDown: (e: KeyboardEvent) => void;
33
+ onMouseLeave: (() => void) | undefined;
34
+ onMouseMove: ((evt: MouseEvent) => void) | undefined;
35
+ };
36
+ export {};
@@ -0,0 +1,15 @@
1
+ import { RefObject } from "react";
2
+ export declare const WidthHeight: string[];
3
+ export declare const WidthOnly: string[];
4
+ export type measurements<T = string | number> = {
5
+ height?: T;
6
+ clientHeight?: number;
7
+ clientWidth?: number;
8
+ contentHeight?: number;
9
+ contentWidth?: number;
10
+ scrollHeight?: number;
11
+ scrollWidth?: number;
12
+ width?: T;
13
+ };
14
+ export type ResizeHandler = (measurements: measurements<number>) => void;
15
+ export declare function useResizeObserver(ref: RefObject<Element | HTMLElement | null>, dimensions: string[], onResize: ResizeHandler, reportInitialSize?: boolean): void;
@@ -0,0 +1,3 @@
1
+ import { TableConfig } from "@vuu-ui/vuu-table-types";
2
+ import { RowClassNameGenerator } from "@vuu-ui/vuu-utils";
3
+ export declare const useRowClassNameGenerators: ({ rowClassNameGenerators, }: TableConfig) => RowClassNameGenerator | undefined;
@@ -0,0 +1,8 @@
1
+ interface RowHeightHookProps {
2
+ rowHeight?: number;
3
+ }
4
+ export declare const useRowHeight: ({ rowHeight: rowHeightProp, }: RowHeightHookProps) => {
5
+ rowHeight: number;
6
+ rowRef: (instance: HTMLDivElement | null) => void;
7
+ };
8
+ export {};
@@ -0,0 +1,14 @@
1
+ import { TableRowClickHandlerInternal, TableRowSelectHandlerInternal, TableSelectionModel } from "@vuu-ui/vuu-table-types";
2
+ import { SelectionChangeHandler } from "@vuu-ui/vuu-data-types";
3
+ import { KeyboardEventHandler, MutableRefObject } from "react";
4
+ export interface SelectionHookProps {
5
+ highlightedIndexRef: MutableRefObject<number | undefined>;
6
+ selectionKeys?: string[];
7
+ selectionModel: TableSelectionModel;
8
+ onSelect?: TableRowSelectHandlerInternal;
9
+ onSelectionChange: SelectionChangeHandler;
10
+ }
11
+ export declare const useSelection: ({ highlightedIndexRef, selectionKeys, selectionModel, onSelect, onSelectionChange, }: SelectionHookProps) => {
12
+ onKeyDown: KeyboardEventHandler<HTMLElement>;
13
+ onRowClick: TableRowClickHandlerInternal;
14
+ };
@@ -0,0 +1,71 @@
1
+ import { DataSourceRow } from "@vuu-ui/vuu-data-types";
2
+ import { ColumnDescriptor, DataCellEditHandler, TableRowClickHandlerInternal, RuntimeColumnDescriptor, TableColumnResizeHandler, TableConfig, TableSelectionModel } from "@vuu-ui/vuu-table-types";
3
+ import { VuuSortType } from "@vuu-ui/vuu-protocol-types";
4
+ import { MeasuredProps, MeasuredSize } from "@vuu-ui/vuu-ui-controls";
5
+ import { FocusEvent, KeyboardEvent, RefObject } from "react";
6
+ import { TableProps } from "./Table";
7
+ export interface TableHookProps extends MeasuredProps, Pick<TableProps, "allowDragDrop" | "availableColumns" | "config" | "dataSource" | "disableFocus" | "highlightedIndex" | "id" | "navigationStyle" | "onAvailableColumnsChange" | "onConfigChange" | "onDragStart" | "onDrop" | "onFeatureInvocation" | "onHighlight" | "onSelect" | "onSelectionChange" | "onRowClick" | "renderBufferSize" | "scrollingApiRef"> {
8
+ containerRef: RefObject<HTMLDivElement>;
9
+ headerHeight: number;
10
+ rowHeight: number;
11
+ selectionModel: TableSelectionModel;
12
+ size: MeasuredSize;
13
+ }
14
+ export declare const useTable: ({ allowDragDrop, availableColumns, config, containerRef, dataSource, disableFocus, headerHeight, highlightedIndex: highlightedIndexProp, id, navigationStyle, onAvailableColumnsChange, onConfigChange, onDragStart, onDrop, onFeatureInvocation, onHighlight, onRowClick: onRowClickProp, onSelect, onSelectionChange, renderBufferSize, rowHeight, scrollingApiRef, selectionModel, size, }: TableHookProps) => {
15
+ "aria-rowcount": number;
16
+ rowClassNameGenerator: import("@vuu-ui/vuu-utils").RowClassNameGenerator | undefined;
17
+ draggableRow: JSX.Element | undefined;
18
+ onBlur: import("react").FocusEventHandler<Element>;
19
+ onDoubleClick: (e: import("react").MouseEvent<HTMLElement, MouseEvent>) => void;
20
+ onFocus: (e: FocusEvent<HTMLElement>) => void;
21
+ onKeyDown: (e: KeyboardEvent<HTMLElement>) => void;
22
+ onMouseDown: import("react").MouseEventHandler<Element> | undefined;
23
+ columnMap: import("@vuu-ui/vuu-utils").ColumnMap;
24
+ columns: RuntimeColumnDescriptor[];
25
+ data: DataSourceRow[];
26
+ getRowOffset: import("@vuu-ui/vuu-utils").RowOffsetFunc;
27
+ handleContextMenuAction: import("@vuu-ui/vuu-data-types").MenuActionHandler;
28
+ headings: import("@vuu-ui/vuu-table-types").TableHeadings;
29
+ highlightedIndex: number | undefined;
30
+ menuBuilder: import("@vuu-ui/vuu-data-types").MenuBuilder<string, unknown>;
31
+ onContextMenu: (evt: import("react").MouseEvent<HTMLElement, MouseEvent>) => void;
32
+ onDataEdited: DataCellEditHandler;
33
+ onMoveColumn: (columns: ColumnDescriptor[]) => void;
34
+ onMoveGroupColumn: (columns: ColumnDescriptor[]) => void;
35
+ onRemoveGroupColumn: (column: RuntimeColumnDescriptor) => void;
36
+ onRowClick: TableRowClickHandlerInternal;
37
+ onSortColumn: (column: ColumnDescriptor, extendSort?: any, sortType?: VuuSortType) => void;
38
+ onResizeColumn: TableColumnResizeHandler;
39
+ onToggleGroup: (row: DataSourceRow, column: RuntimeColumnDescriptor) => void;
40
+ scrollProps: {
41
+ columnsWithinViewport: RuntimeColumnDescriptor[];
42
+ scrollbarContainerRef: (el: HTMLDivElement | null) => void;
43
+ contentContainerRef: (el: HTMLDivElement | null) => void;
44
+ virtualColSpan: number;
45
+ };
46
+ tableAttributes: {
47
+ columnDefaultWidth?: number | undefined;
48
+ columnFormatHeader?: "capitalize" | "uppercase" | undefined;
49
+ columnSeparators?: boolean | undefined;
50
+ rowSeparators?: boolean | undefined;
51
+ zebraStripes?: boolean | undefined;
52
+ };
53
+ tableConfig: Readonly<TableConfig>;
54
+ viewportMeasurements: {
55
+ appliedPageSize: number;
56
+ contentHeight: number;
57
+ horizontalScrollbarHeight: number;
58
+ isVirtualScroll: boolean;
59
+ pinnedWidthLeft: number;
60
+ pinnedWidthRight: number;
61
+ rowCount: number;
62
+ contentWidth: number;
63
+ totalHeaderHeight: number;
64
+ verticalScrollbarWidth: number;
65
+ viewportBodyHeight: number;
66
+ viewportWidth: number;
67
+ };
68
+ onClick: (evt: import("react").MouseEvent<Element, MouseEvent>) => void;
69
+ onMouseLeave: (() => void) | undefined;
70
+ onMouseMove: ((evt: import("react").MouseEvent<Element, MouseEvent>) => void) | undefined;
71
+ };
@@ -0,0 +1,15 @@
1
+ import { DataSourceConfig, SchemaColumn } from "@vuu-ui/vuu-data-types";
2
+ import { ColumnDescriptor, TableConfig } from "@vuu-ui/vuu-table-types";
3
+ import { ColumnActionColumnSettings } from "./useTableModel";
4
+ export interface TableAndColumnSettingsHookProps {
5
+ availableColumns: SchemaColumn[];
6
+ onAvailableColumnsChange?: (columns: SchemaColumn[]) => void;
7
+ onConfigChange: (config: TableConfig) => void;
8
+ onCreateCalculatedColumn: (column: ColumnDescriptor) => void;
9
+ onDataSourceConfigChange: (dataSourceConfig: DataSourceConfig) => void;
10
+ tableConfig: TableConfig;
11
+ }
12
+ export declare const useTableAndColumnSettings: ({ availableColumns: availableColumnsProps, onAvailableColumnsChange, onConfigChange, onCreateCalculatedColumn, onDataSourceConfigChange, tableConfig, }: TableAndColumnSettingsHookProps) => {
13
+ showColumnSettingsPanel: (action: ColumnActionColumnSettings) => void;
14
+ showTableSettingsPanel: () => void;
15
+ };
@@ -0,0 +1,10 @@
1
+ import { DataSource, DataSourceRow } from "@vuu-ui/vuu-data-types";
2
+ import { RuntimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
3
+ import { MouseEvent } from "react";
4
+ export interface TableContextMenuHookProps {
5
+ columns: RuntimeColumnDescriptor[];
6
+ data: DataSourceRow[];
7
+ dataSource: DataSource;
8
+ getSelectedRows: () => DataSourceRow[];
9
+ }
10
+ export declare const useTableContextMenu: ({ columns, data, dataSource, getSelectedRows, }: TableContextMenuHookProps) => (evt: MouseEvent<HTMLElement>) => void;