@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.
- package/LICENSE +201 -0
- package/README.md +0 -0
- package/cjs/Row.css.js +6 -0
- package/cjs/Row.css.js.map +1 -0
- package/cjs/Row.js +130 -0
- package/cjs/Row.js.map +1 -0
- package/cjs/Table.css.js +6 -0
- package/cjs/Table.css.js.map +1 -0
- package/cjs/Table.js +285 -0
- package/cjs/Table.js.map +1 -0
- package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css.js +6 -0
- package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css.js.map +1 -0
- package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js +42 -0
- package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js.map +1 -0
- package/cjs/cell-renderers/input-cell/InputCell.css.js +6 -0
- package/cjs/cell-renderers/input-cell/InputCell.css.js.map +1 -0
- package/cjs/cell-renderers/input-cell/InputCell.js +58 -0
- package/cjs/cell-renderers/input-cell/InputCell.js.map +1 -0
- package/cjs/cell-renderers/toggle-cell/ToggleCell.css.js +6 -0
- package/cjs/cell-renderers/toggle-cell/ToggleCell.css.js.map +1 -0
- package/cjs/cell-renderers/toggle-cell/ToggleCell.js +68 -0
- package/cjs/cell-renderers/toggle-cell/ToggleCell.js.map +1 -0
- package/cjs/column-header-pill/ColumnHeaderPill.css.js +6 -0
- package/cjs/column-header-pill/ColumnHeaderPill.css.js.map +1 -0
- package/cjs/column-header-pill/ColumnHeaderPill.js +53 -0
- package/cjs/column-header-pill/ColumnHeaderPill.js.map +1 -0
- package/cjs/column-header-pill/GroupColumnPill.css.js +6 -0
- package/cjs/column-header-pill/GroupColumnPill.css.js.map +1 -0
- package/cjs/column-header-pill/GroupColumnPill.js +29 -0
- package/cjs/column-header-pill/GroupColumnPill.js.map +1 -0
- package/cjs/column-header-pill/SortIndicator.css.js +6 -0
- package/cjs/column-header-pill/SortIndicator.css.js.map +1 -0
- package/cjs/column-header-pill/SortIndicator.js +27 -0
- package/cjs/column-header-pill/SortIndicator.js.map +1 -0
- package/cjs/column-menu/ColumnMenu.css.js +6 -0
- package/cjs/column-menu/ColumnMenu.css.js.map +1 -0
- package/cjs/column-menu/ColumnMenu.js +30 -0
- package/cjs/column-menu/ColumnMenu.js.map +1 -0
- package/cjs/column-resizing/ColumnResizer.css.js +6 -0
- package/cjs/column-resizing/ColumnResizer.css.js.map +1 -0
- package/cjs/column-resizing/ColumnResizer.js +72 -0
- package/cjs/column-resizing/ColumnResizer.js.map +1 -0
- package/cjs/column-resizing/useTableColumnResize.js +55 -0
- package/cjs/column-resizing/useTableColumnResize.js.map +1 -0
- package/cjs/context-menu/buildContextMenuDescriptors.js +214 -0
- package/cjs/context-menu/buildContextMenuDescriptors.js.map +1 -0
- package/cjs/context-menu/useHandleTableContextMenu.js +81 -0
- package/cjs/context-menu/useHandleTableContextMenu.js.map +1 -0
- package/cjs/header-cell/GroupHeaderCell.css.js +6 -0
- package/cjs/header-cell/GroupHeaderCell.css.js.map +1 -0
- package/cjs/header-cell/GroupHeaderCell.js +117 -0
- package/cjs/header-cell/GroupHeaderCell.js.map +1 -0
- package/cjs/header-cell/HeaderCell.css.js +6 -0
- package/cjs/header-cell/HeaderCell.css.js.map +1 -0
- package/cjs/header-cell/HeaderCell.js +109 -0
- package/cjs/header-cell/HeaderCell.js.map +1 -0
- package/cjs/index.js +36 -0
- package/cjs/index.js.map +1 -0
- package/cjs/moving-window.js +61 -0
- package/cjs/moving-window.js.map +1 -0
- package/cjs/table-cell/TableCell.css.js +6 -0
- package/cjs/table-cell/TableCell.css.js.map +1 -0
- package/cjs/table-cell/TableCell.js +72 -0
- package/cjs/table-cell/TableCell.js.map +1 -0
- package/cjs/table-cell/TableGroupCell.css.js +6 -0
- package/cjs/table-cell/TableGroupCell.css.js.map +1 -0
- package/cjs/table-cell/TableGroupCell.js +54 -0
- package/cjs/table-cell/TableGroupCell.js.map +1 -0
- package/cjs/table-config.js +25 -0
- package/cjs/table-config.js.map +1 -0
- package/cjs/table-dom-utils.js +60 -0
- package/cjs/table-dom-utils.js.map +1 -0
- package/cjs/table-header/TableHeader.js +87 -0
- package/cjs/table-header/TableHeader.js.map +1 -0
- package/cjs/table-header/useTableHeader.js +72 -0
- package/cjs/table-header/useTableHeader.js.map +1 -0
- package/cjs/useCell.js +28 -0
- package/cjs/useCell.js.map +1 -0
- package/cjs/useCellEditing.js +79 -0
- package/cjs/useCellEditing.js.map +1 -0
- package/cjs/useControlledTableNavigation.js +43 -0
- package/cjs/useControlledTableNavigation.js.map +1 -0
- package/cjs/useDataSource.js +104 -0
- package/cjs/useDataSource.js.map +1 -0
- package/cjs/useInitialValue.js +11 -0
- package/cjs/useInitialValue.js.map +1 -0
- package/cjs/useKeyboardNavigation.js +304 -0
- package/cjs/useKeyboardNavigation.js.map +1 -0
- package/cjs/useRowClassNameGenerators.js +34 -0
- package/cjs/useRowClassNameGenerators.js.map +1 -0
- package/cjs/useRowHeight.js +43 -0
- package/cjs/useRowHeight.js.map +1 -0
- package/cjs/useSelection.js +64 -0
- package/cjs/useSelection.js.map +1 -0
- package/cjs/useTable.js +553 -0
- package/cjs/useTable.js.map +1 -0
- package/cjs/useTableAndColumnSettings.js +128 -0
- package/cjs/useTableAndColumnSettings.js.map +1 -0
- package/cjs/useTableContextMenu.js +42 -0
- package/cjs/useTableContextMenu.js.map +1 -0
- package/cjs/useTableModel.js +297 -0
- package/cjs/useTableModel.js.map +1 -0
- package/cjs/useTableScroll.js +396 -0
- package/cjs/useTableScroll.js.map +1 -0
- package/cjs/useTableViewport.js +122 -0
- package/cjs/useTableViewport.js.map +1 -0
- package/esm/Row.css.js +4 -0
- package/esm/Row.css.js.map +1 -0
- package/esm/Row.js +127 -0
- package/esm/Row.js.map +1 -0
- package/esm/Table.css.js +4 -0
- package/esm/Table.css.js.map +1 -0
- package/esm/Table.js +283 -0
- package/esm/Table.js.map +1 -0
- package/esm/cell-renderers/checkbox-cell/CheckboxCell.css.js +4 -0
- package/esm/cell-renderers/checkbox-cell/CheckboxCell.css.js.map +1 -0
- package/esm/cell-renderers/checkbox-cell/CheckboxCell.js +40 -0
- package/esm/cell-renderers/checkbox-cell/CheckboxCell.js.map +1 -0
- package/esm/cell-renderers/input-cell/InputCell.css.js +4 -0
- package/esm/cell-renderers/input-cell/InputCell.css.js.map +1 -0
- package/esm/cell-renderers/input-cell/InputCell.js +56 -0
- package/esm/cell-renderers/input-cell/InputCell.js.map +1 -0
- package/esm/cell-renderers/toggle-cell/ToggleCell.css.js +4 -0
- package/esm/cell-renderers/toggle-cell/ToggleCell.css.js.map +1 -0
- package/esm/cell-renderers/toggle-cell/ToggleCell.js +66 -0
- package/esm/cell-renderers/toggle-cell/ToggleCell.js.map +1 -0
- package/esm/column-header-pill/ColumnHeaderPill.css.js +4 -0
- package/esm/column-header-pill/ColumnHeaderPill.css.js.map +1 -0
- package/esm/column-header-pill/ColumnHeaderPill.js +51 -0
- package/esm/column-header-pill/ColumnHeaderPill.js.map +1 -0
- package/esm/column-header-pill/GroupColumnPill.css.js +4 -0
- package/esm/column-header-pill/GroupColumnPill.css.js.map +1 -0
- package/esm/column-header-pill/GroupColumnPill.js +27 -0
- package/esm/column-header-pill/GroupColumnPill.js.map +1 -0
- package/esm/column-header-pill/SortIndicator.css.js +4 -0
- package/esm/column-header-pill/SortIndicator.css.js.map +1 -0
- package/esm/column-header-pill/SortIndicator.js +25 -0
- package/esm/column-header-pill/SortIndicator.js.map +1 -0
- package/esm/column-menu/ColumnMenu.css.js +4 -0
- package/esm/column-menu/ColumnMenu.css.js.map +1 -0
- package/esm/column-menu/ColumnMenu.js +28 -0
- package/esm/column-menu/ColumnMenu.js.map +1 -0
- package/esm/column-resizing/ColumnResizer.css.js +4 -0
- package/esm/column-resizing/ColumnResizer.css.js.map +1 -0
- package/esm/column-resizing/ColumnResizer.js +70 -0
- package/esm/column-resizing/ColumnResizer.js.map +1 -0
- package/esm/column-resizing/useTableColumnResize.js +53 -0
- package/esm/column-resizing/useTableColumnResize.js.map +1 -0
- package/esm/context-menu/buildContextMenuDescriptors.js +212 -0
- package/esm/context-menu/buildContextMenuDescriptors.js.map +1 -0
- package/esm/context-menu/useHandleTableContextMenu.js +79 -0
- package/esm/context-menu/useHandleTableContextMenu.js.map +1 -0
- package/esm/header-cell/GroupHeaderCell.css.js +4 -0
- package/esm/header-cell/GroupHeaderCell.css.js.map +1 -0
- package/esm/header-cell/GroupHeaderCell.js +115 -0
- package/esm/header-cell/GroupHeaderCell.js.map +1 -0
- package/esm/header-cell/HeaderCell.css.js +4 -0
- package/esm/header-cell/HeaderCell.css.js.map +1 -0
- package/esm/header-cell/HeaderCell.js +107 -0
- package/esm/header-cell/HeaderCell.js.map +1 -0
- package/esm/index.js +14 -0
- package/esm/index.js.map +1 -0
- package/esm/moving-window.js +59 -0
- package/esm/moving-window.js.map +1 -0
- package/esm/table-cell/TableCell.css.js +4 -0
- package/esm/table-cell/TableCell.css.js.map +1 -0
- package/esm/table-cell/TableCell.js +70 -0
- package/esm/table-cell/TableCell.js.map +1 -0
- package/esm/table-cell/TableGroupCell.css.js +4 -0
- package/esm/table-cell/TableGroupCell.css.js.map +1 -0
- package/esm/table-cell/TableGroupCell.js +52 -0
- package/esm/table-cell/TableGroupCell.js.map +1 -0
- package/esm/table-config.js +23 -0
- package/esm/table-config.js.map +1 -0
- package/esm/table-dom-utils.js +51 -0
- package/esm/table-dom-utils.js.map +1 -0
- package/esm/table-header/TableHeader.js +85 -0
- package/esm/table-header/TableHeader.js.map +1 -0
- package/esm/table-header/useTableHeader.js +70 -0
- package/esm/table-header/useTableHeader.js.map +1 -0
- package/esm/useCell.js +26 -0
- package/esm/useCell.js.map +1 -0
- package/esm/useCellEditing.js +77 -0
- package/esm/useCellEditing.js.map +1 -0
- package/esm/useControlledTableNavigation.js +41 -0
- package/esm/useControlledTableNavigation.js.map +1 -0
- package/esm/useDataSource.js +101 -0
- package/esm/useDataSource.js.map +1 -0
- package/esm/useInitialValue.js +9 -0
- package/esm/useInitialValue.js.map +1 -0
- package/esm/useKeyboardNavigation.js +300 -0
- package/esm/useKeyboardNavigation.js.map +1 -0
- package/esm/useRowClassNameGenerators.js +32 -0
- package/esm/useRowClassNameGenerators.js.map +1 -0
- package/esm/useRowHeight.js +41 -0
- package/esm/useRowHeight.js.map +1 -0
- package/esm/useSelection.js +62 -0
- package/esm/useSelection.js.map +1 -0
- package/esm/useTable.js +551 -0
- package/esm/useTable.js.map +1 -0
- package/esm/useTableAndColumnSettings.js +126 -0
- package/esm/useTableAndColumnSettings.js.map +1 -0
- package/esm/useTableContextMenu.js +40 -0
- package/esm/useTableContextMenu.js.map +1 -0
- package/esm/useTableModel.js +293 -0
- package/esm/useTableModel.js.map +1 -0
- package/esm/useTableScroll.js +393 -0
- package/esm/useTableScroll.js.map +1 -0
- package/esm/useTableViewport.js +120 -0
- package/esm/useTableViewport.js.map +1 -0
- package/package.json +42 -0
- package/types/Row.d.ts +23 -0
- package/types/Table.d.ts +91 -0
- package/types/cell-renderers/checkbox-cell/CheckboxCell.d.ts +3 -0
- package/types/cell-renderers/checkbox-cell/index.d.ts +1 -0
- package/types/cell-renderers/index.d.ts +3 -0
- package/types/cell-renderers/input-cell/InputCell.d.ts +3 -0
- package/types/cell-renderers/input-cell/index.d.ts +1 -0
- package/types/cell-renderers/toggle-cell/ToggleCell.d.ts +3 -0
- package/types/cell-renderers/toggle-cell/index.d.ts +1 -0
- package/types/column-header-pill/ColumnHeaderPill.d.ts +8 -0
- package/types/column-header-pill/GroupColumnPill.d.ts +7 -0
- package/types/column-header-pill/SortIndicator.d.ts +6 -0
- package/types/column-header-pill/index.d.ts +3 -0
- package/types/column-menu/ColumnMenu.d.ts +6 -0
- package/types/column-menu/index.d.ts +1 -0
- package/types/column-resizing/ColumnResizer.d.ts +7 -0
- package/types/column-resizing/index.d.ts +2 -0
- package/types/column-resizing/useTableColumnResize.d.ts +15 -0
- package/types/context-menu/buildContextMenuDescriptors.d.ts +3 -0
- package/types/context-menu/index.d.ts +2 -0
- package/types/context-menu/useHandleTableContextMenu.d.ts +20 -0
- package/types/header-cell/GroupHeaderCell.d.ts +8 -0
- package/types/header-cell/HeaderCell.d.ts +3 -0
- package/types/header-cell/index.d.ts +2 -0
- package/types/index.d.ts +11 -0
- package/types/moving-window.d.ts +14 -0
- package/types/table-cell/TableCell.d.ts +3 -0
- package/types/table-cell/TableGroupCell.d.ts +3 -0
- package/types/table-cell/index.d.ts +2 -0
- package/types/table-config.d.ts +25 -0
- package/types/table-dom-utils.d.ts +14 -0
- package/types/table-header/TableHeader.d.ts +19 -0
- package/types/table-header/useTableHeader.d.ts +15 -0
- package/types/useCell.d.ts +6 -0
- package/types/useCellEditing.d.ts +10 -0
- package/types/useControlledTableNavigation.d.ts +7 -0
- package/types/useDataSource.d.ts +20 -0
- package/types/useInitialValue.d.ts +1 -0
- package/types/useKeyboardNavigation.d.ts +36 -0
- package/types/useResizeObserver.d.ts +15 -0
- package/types/useRowClassNameGenerators.d.ts +3 -0
- package/types/useRowHeight.d.ts +8 -0
- package/types/useSelection.d.ts +14 -0
- package/types/useTable.d.ts +71 -0
- package/types/useTableAndColumnSettings.d.ts +15 -0
- package/types/useTableContextMenu.d.ts +10 -0
- package/types/useTableModel.d.ts +103 -0
- package/types/useTableScroll.d.ts +57 -0
- package/types/useTableViewport.d.ts +41 -0
package/types/Table.d.ts
ADDED
|
@@ -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 @@
|
|
|
1
|
+
export * from "./CheckboxCell";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./InputCell";
|
|
@@ -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,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,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,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;
|
package/types/index.d.ts
ADDED
|
@@ -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,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,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;
|