@vuu-ui/vuu-table 0.6.25-debug → 0.6.26-debug

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.
@@ -1,3 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import { TableImplementationProps } from "./dataTableTypes";
3
- export declare const RowBasedTable: ({ columns, columnsWithinViewport, data, headings, onColumnResize, onHeaderCellDragStart, onContextMenu, onRemoveColumnFromGroupBy, onRowClick, onSort, onToggleGroup, virtualColSpan, rowCount, rowHeight, }: TableImplementationProps) => JSX.Element;
3
+ import "./RowBasedTable.css";
4
+ export declare const RowBasedTable: ({ columns, columnsWithinViewport, data, getRowOffset, headings, onColumnResize, onHeaderCellDragStart, onContextMenu, onRemoveColumnFromGroupBy, onRowClick, onSort, onToggleGroup, tableId, virtualColSpan, rowCount, }: TableImplementationProps) => JSX.Element;
package/types/Table.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import { TableProps } from "./dataTableTypes";
3
3
  import "./Table.css";
4
- export declare const Table: ({ allowConfigEditing: showSettings, className: classNameProp, config, dataSource, headerHeight, height, id: idProp, onConfigChange, onFeatureEnabled, onFeatureInvocation, onSelectionChange, onShowConfigEditor: onShowSettings, renderBufferSize, rowHeight, selectionModel, style: styleProp, tableLayout: tableLayoutProp, width, zebraStripes, ...props }: TableProps) => JSX.Element;
4
+ import "./Table-loading.css";
5
+ export declare const Table: ({ allowConfigEditing: showSettings, className: classNameProp, config, dataSource, headerHeight, height, id: idProp, onConfigChange, onFeatureEnabled, onFeatureInvocation, onSelectionChange, onShowConfigEditor: onShowSettings, renderBufferSize, rowHeight, selectionModel, style: styleProp, width, zebraStripes, ...props }: TableProps) => JSX.Element;
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import { TableCellProps } from "@vuu-ui/vuu-datagrid-types";
3
3
  import "./TableCell.css";
4
- export declare const TableCell: import("react").MemoExoticComponent<({ className: classNameProp, column, onClick, row }: TableCellProps) => JSX.Element>;
4
+ export declare const TableCell: import("react").MemoExoticComponent<({ className: classNameProp, column, columnMap, onClick, row, }: TableCellProps) => JSX.Element>;
@@ -4,10 +4,10 @@ import "./TableGroupHeaderCell.css";
4
4
  import { GroupColumnDescriptor, KeyedColumnDescriptor } from "@vuu-ui/vuu-datagrid-types";
5
5
  export interface ColHeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, "onClick"> {
6
6
  column: KeyedColumnDescriptor;
7
- onRemoveColumn?: (column: KeyedColumnDescriptor) => void;
7
+ onRemove?: (column?: KeyedColumnDescriptor) => void;
8
8
  }
9
9
  export interface TableGroupHeaderCellProps extends Omit<TableHeaderCellProps, "onDragStart" | "onDrag" | "onDragEnd"> {
10
10
  column: GroupColumnDescriptor;
11
- onRemoveColumn?: (column: KeyedColumnDescriptor) => void;
11
+ onRemoveColumn?: (column?: KeyedColumnDescriptor) => void;
12
12
  }
13
13
  export declare const TableGroupHeaderCell: ({ column: groupColumn, className: classNameProp, onRemoveColumn, onResize, ...props }: TableGroupHeaderCellProps) => JSX.Element;
@@ -1,12 +1,13 @@
1
1
  import { DataSourceRow } from "@vuu-ui/vuu-data";
2
2
  import { KeyedColumnDescriptor } from "@vuu-ui/vuu-datagrid-types";
3
+ import { ColumnMap } from "@vuu-ui/vuu-utils";
3
4
  import { HTMLAttributes } from "react";
4
5
  import { RowClickHandler } from "./dataTableTypes";
5
6
  import "./TableRow.css";
6
7
  export interface RowProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "onClick"> {
8
+ columnMap: ColumnMap;
7
9
  columns: KeyedColumnDescriptor[];
8
- height: number;
9
- index: number;
10
+ offset: number;
10
11
  onClick?: RowClickHandler;
11
12
  onToggleGroup?: (row: DataSourceRow, column: KeyedColumnDescriptor) => void;
12
13
  row: DataSourceRow;
@@ -1,7 +1,6 @@
1
1
  import { DataSource, DataSourceRow, VuuFeatureInvocationMessage, VuuFeatureMessage } from "@vuu-ui/vuu-data";
2
2
  import { KeyedColumnDescriptor, GridConfig, TableHeadings, SelectionChangeHandler, TableSelectionModel } from "@vuu-ui/vuu-datagrid-types";
3
3
  import { HTMLAttributes, MouseEvent } from "react";
4
- export type tableLayoutType = "row" | "column";
5
4
  export interface TableProps extends HTMLAttributes<HTMLDivElement> {
6
5
  allowConfigEditing?: boolean;
7
6
  config: Omit<GridConfig, "headings">;
@@ -25,7 +24,6 @@ export interface TableProps extends HTMLAttributes<HTMLDivElement> {
25
24
  renderBufferSize?: number;
26
25
  rowHeight?: number;
27
26
  selectionModel?: TableSelectionModel;
28
- tableLayout?: tableLayoutType;
29
27
  width?: number;
30
28
  zebraStripes?: boolean;
31
29
  }
@@ -34,19 +32,20 @@ export interface TableImplementationProps {
34
32
  columns: KeyedColumnDescriptor[];
35
33
  columnsWithinViewport: KeyedColumnDescriptor[];
36
34
  data: DataSourceRow[];
35
+ getRowOffset: (row: DataSourceRow) => number;
37
36
  headerHeight: number;
38
37
  headings: TableHeadings;
39
38
  onColumnResize?: TableColumnResizeHandler;
40
39
  onHeaderCellDragEnd?: () => void;
41
40
  onHeaderCellDragStart?: (evt: MouseEvent) => void;
42
41
  onContextMenu?: (evt: MouseEvent<HTMLElement>) => void;
43
- onRemoveColumnFromGroupBy?: (column: KeyedColumnDescriptor) => void;
42
+ onRemoveColumnFromGroupBy?: (column?: KeyedColumnDescriptor) => void;
44
43
  onRowClick?: RowClickHandler;
45
44
  onSort: (column: KeyedColumnDescriptor, isAdditive: boolean) => void;
46
45
  onToggleGroup?: (row: DataSourceRow, column: KeyedColumnDescriptor) => void;
46
+ tableId: string;
47
47
  virtualColSpan?: number;
48
48
  rowCount: number;
49
- rowHeight: number;
50
49
  }
51
50
  type MeasureStatus = "unmeasured" | "measured";
52
51
  export interface TableMeasurements {
@@ -59,12 +58,10 @@ export interface TableMeasurements {
59
58
  top: number;
60
59
  }
61
60
  export interface Viewport {
62
- fillerHeight: number;
63
61
  maxScrollContainerScrollHorizontal: number;
64
62
  maxScrollContainerScrollVertical: number;
65
63
  pinnedWidthLeft: number;
66
64
  rowCount: number;
67
- scrollContentWidth: number;
68
65
  }
69
66
  export type RowClickHandler = (row: DataSourceRow, rangeSelect: boolean, keepExistingSelection: boolean) => void;
70
67
  export {};
@@ -1,12 +1,9 @@
1
- import { MouseEvent, RefObject } from "react";
1
+ import { MouseEvent } from "react";
2
2
  export interface DraggableColumnHookProps {
3
3
  onDrop: (fromIndex: number, toIndex: number) => void;
4
- tableContainerRef: RefObject<HTMLDivElement>;
5
- tableLayout: "column" | "row";
6
4
  }
7
- export declare const useDraggableColumn: ({ onDrop, tableContainerRef, tableLayout: tableLayoutProp, }: DraggableColumnHookProps) => {
5
+ export declare const useDraggableColumn: ({ onDrop }: DraggableColumnHookProps) => {
8
6
  draggable: JSX.Element | undefined;
9
7
  draggedItemIndex: number | undefined;
10
- tableLayout: "column" | "row";
11
- onHeaderCellDragStart: ((evt: MouseEvent) => void) | undefined;
8
+ onHeaderCellDragStart: (evt: MouseEvent) => void;
12
9
  };
@@ -2,9 +2,9 @@ import { DataSource, DataSourceRow, VuuFeatureInvocationMessage, VuuFeatureMessa
2
2
  import { GridConfig, KeyedColumnDescriptor, SelectionChangeHandler, TableSelectionModel } from "@vuu-ui/vuu-datagrid-types";
3
3
  import { VuuSortType } from "@vuu-ui/vuu-protocol-types";
4
4
  import { MouseEvent } from "react";
5
- import { TableColumnResizeHandler, tableLayoutType } from "./dataTableTypes";
5
+ import { TableColumnResizeHandler } from "./dataTableTypes";
6
6
  import { MeasuredProps } from "./useMeasuredContainer";
7
- export interface DataTableHookProps extends MeasuredProps {
7
+ export interface TableHookProps extends MeasuredProps {
8
8
  config: Omit<GridConfig, "headings">;
9
9
  dataSource: DataSource;
10
10
  headerHeight: number;
@@ -15,13 +15,11 @@ export interface DataTableHookProps extends MeasuredProps {
15
15
  rowHeight: number;
16
16
  onSelectionChange?: SelectionChangeHandler;
17
17
  selectionModel: TableSelectionModel;
18
- tableLayout: tableLayoutType;
19
18
  }
20
- export declare const useDataTable: ({ config, dataSource, headerHeight, onConfigChange, onFeatureEnabled, onFeatureInvocation, onSelectionChange, renderBufferSize, rowHeight, selectionModel, tableLayout, ...measuredProps }: DataTableHookProps) => {
19
+ export declare const useTable: ({ config, dataSource, headerHeight, onConfigChange, onFeatureEnabled, onFeatureInvocation, onSelectionChange, renderBufferSize, rowHeight, selectionModel, ...measuredProps }: TableHookProps) => {
21
20
  draggable: JSX.Element | undefined;
22
21
  draggedItemIndex: number | undefined;
23
- tableLayout: "column" | "row";
24
- onHeaderCellDragStart: ((evt: MouseEvent<Element, globalThis.MouseEvent>) => void) | undefined;
22
+ onHeaderCellDragStart: (evt: MouseEvent<Element, globalThis.MouseEvent>) => void;
25
23
  containerMeasurements: import("./useMeasuredContainer").MeasuredContainerHookResult;
26
24
  containerProps: {
27
25
  onClick: (evt: MouseEvent<Element, globalThis.MouseEvent>) => void;
@@ -32,23 +30,32 @@ export declare const useDataTable: ({ config, dataSource, headerHeight, onConfig
32
30
  columnsWithinViewport: KeyedColumnDescriptor[];
33
31
  data: DataSourceRow[];
34
32
  dispatchColumnAction: import("react").Dispatch<import("./useTableModel").GridModelAction>;
33
+ getRowOffset: import("@vuu-ui/vuu-utils").RowOffsetFunc;
35
34
  handleContextMenuAction: import("@vuu-ui/vuu-popups").MenuActionHandler;
36
35
  headings: import("@vuu-ui/vuu-datagrid-types").TableHeadings;
37
36
  onColumnResize: TableColumnResizeHandler;
38
37
  onContextMenu: (evt: MouseEvent<HTMLElement>) => void;
39
- onRemoveColumnFromGroupBy: (column: KeyedColumnDescriptor) => void;
38
+ onRemoveColumnFromGroupBy: (column?: KeyedColumnDescriptor) => void;
40
39
  onRowClick: import("./dataTableTypes").RowClickHandler;
41
40
  onSort: (column: KeyedColumnDescriptor, extendSort?: any, sortType?: VuuSortType) => void;
42
41
  onToggleGroup: (row: DataSourceRow, column: KeyedColumnDescriptor) => void;
43
42
  virtualColSpan: number;
44
43
  scrollProps: {
45
- scrollbarContainerRef: import("react").RefObject<HTMLDivElement>;
46
- onScrollbarContainerScroll: () => void;
47
- contentContainerRef: import("react").RefObject<HTMLDivElement>;
48
- onContentContainerScroll: () => void;
49
- tableContainerRef: import("react").RefObject<HTMLDivElement>;
50
- onTableContainerScroll: () => void;
44
+ scrollbarContainerRef: (el: HTMLDivElement | null) => void;
45
+ contentContainerRef: (el: HTMLDivElement | null) => void;
51
46
  };
52
47
  rowCount: number;
53
- viewportMeasurements: import("./useTableViewport").ViewportMeasurements;
48
+ viewportMeasurements: {
49
+ contentHeight: number;
50
+ horizontalScrollbarHeight: number;
51
+ maxScrollContainerScrollHorizontal: number;
52
+ maxScrollContainerScrollVertical: number;
53
+ pinnedWidthLeft: number;
54
+ pinnedWidthRight: number;
55
+ rowCount: number;
56
+ contentWidth: number;
57
+ totalHeaderHeight: number;
58
+ verticalScrollbarWidth: number;
59
+ viewportBodyHeight: number;
60
+ };
54
61
  };
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { Viewport } from "./dataTableTypes";
3
2
  export interface ScrollRequestEnd {
4
3
  type: "scroll-end";
@@ -16,23 +15,15 @@ export type ScrollRequest = ScrollRequestPage | ScrollRequestDistance | ScrollRe
16
15
  export type ScrollRequestHandler = (request: ScrollRequest) => void;
17
16
  export interface TableScrollHookProps {
18
17
  onHorizontalScroll?: (scrollLeft: number) => void;
19
- onVerticalScroll?: (scrollTop: number) => void;
18
+ onVerticalScroll?: (scrollTop: number, pctScrollTop: number) => void;
20
19
  viewportHeight: number;
21
20
  viewport: Viewport;
22
21
  }
23
22
  export declare const useTableScroll: ({ onHorizontalScroll, onVerticalScroll, viewport, }: TableScrollHookProps) => {
24
23
  /** Ref to be assigned to ScrollbarContainer */
25
- scrollbarContainerRef: import("react").RefObject<HTMLDivElement>;
26
- /** Scroll handler to be attached to ScrollbarContainer */
27
- onScrollbarContainerScroll: () => void;
24
+ scrollbarContainerRef: (el: HTMLDivElement | null) => void;
28
25
  /** Ref to be assigned to ContentContainer */
29
- contentContainerRef: import("react").RefObject<HTMLDivElement>;
30
- /** Scroll handler to be attached to ContentContainer */
31
- onContentContainerScroll: () => void;
32
- /** Ref to be assigned to TableContainer */
33
- tableContainerRef: import("react").RefObject<HTMLDivElement>;
34
- /** Scroll handler to be attached to TableContainer */
35
- onTableContainerScroll: () => void;
26
+ contentContainerRef: (el: HTMLDivElement | null) => void;
36
27
  /** Scroll the table */
37
28
  requestScroll: ScrollRequestHandler;
38
29
  };
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { KeyedColumnDescriptor, TableHeadings } from "@vuu-ui/vuu-datagrid-types";
7
7
  import { MeasuredSize } from "./useMeasuredContainer";
8
+ import { RowAtPositionFunc, RowOffsetFunc } from "@vuu-ui/vuu-utils";
8
9
  export interface TableViewportHookProps {
9
10
  columns: KeyedColumnDescriptor[];
10
11
  headerHeight: number;
@@ -14,15 +15,21 @@ export interface TableViewportHookProps {
14
15
  size?: MeasuredSize;
15
16
  }
16
17
  export interface ViewportMeasurements {
17
- fillerHeight: number;
18
+ contentHeight: number;
19
+ horizontalScrollbarHeight: number;
18
20
  maxScrollContainerScrollHorizontal: number;
19
21
  maxScrollContainerScrollVertical: number;
20
22
  pinnedWidthLeft: number;
21
23
  pinnedWidthRight: number;
22
24
  rowCount: number;
23
- scrollContentHeight: number;
24
- scrollbarSize: number;
25
- scrollContentWidth: number;
25
+ contentWidth: number;
26
26
  totalHeaderHeight: number;
27
+ verticalScrollbarWidth: number;
28
+ viewportBodyHeight: number;
27
29
  }
28
- export declare const useTableViewport: ({ columns, headerHeight, headings, rowCount, rowHeight, size, }: TableViewportHookProps) => ViewportMeasurements;
30
+ export interface TableViewportHookResult extends ViewportMeasurements {
31
+ getRowAtPosition: RowAtPositionFunc;
32
+ getRowOffset: RowOffsetFunc;
33
+ setPctScrollTop: (scrollPct: number) => void;
34
+ }
35
+ export declare const useTableViewport: ({ columns, headerHeight, headings, rowCount, rowHeight, size, }: TableViewportHookProps) => TableViewportHookResult;
@@ -1,9 +1,10 @@
1
1
  import { KeyedColumnDescriptor } from "@vuu-ui/vuu-datagrid-types";
2
+ import { RowAtPositionFunc } from "@vuu-ui/vuu-utils";
2
3
  import { VuuRange } from "@vuu-ui/vuu-protocol-types";
3
4
  import { ViewportMeasurements } from "./useTableViewport";
4
5
  export interface VirtualViewportHookProps {
5
6
  columns: KeyedColumnDescriptor[];
6
- rowHeight: number;
7
+ getRowAtPosition: RowAtPositionFunc;
7
8
  setRange: (range: VuuRange) => void;
8
9
  viewportMeasurements: ViewportMeasurements;
9
10
  }
@@ -13,4 +14,4 @@ export interface VirtualViewportHookResult {
13
14
  columnsWithinViewport: KeyedColumnDescriptor[];
14
15
  virtualColSpan: number;
15
16
  }
16
- export declare const useVirtualViewport: ({ columns, rowHeight, setRange, viewportMeasurements, }: VirtualViewportHookProps) => VirtualViewportHookResult;
17
+ export declare const useVirtualViewport: ({ columns, getRowAtPosition, setRange, viewportMeasurements, }: VirtualViewportHookProps) => VirtualViewportHookResult;
@@ -1,3 +0,0 @@
1
- /// <reference types="react" />
2
- import { TableImplementationProps } from "./dataTableTypes";
3
- export declare const ColumnBasedTable: ({ columns, data, headerHeight, onHeaderCellDragEnd, rowHeight, }: TableImplementationProps) => JSX.Element;