@vuu-ui/vuu-table 0.13.111-alpha.2 → 0.13.111

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 (104) hide show
  1. package/cjs/Row.css.js +6 -0
  2. package/cjs/Row.css.js.map +1 -0
  3. package/cjs/Row.js +31 -2
  4. package/cjs/Row.js.map +1 -1
  5. package/cjs/Table.css.js +1 -1
  6. package/cjs/Table.js +9 -25
  7. package/cjs/Table.js.map +1 -1
  8. package/cjs/bulk-edit/BulkEditPanel.css.js +1 -1
  9. package/cjs/bulk-edit/BulkEditPanel.js +1 -2
  10. package/cjs/bulk-edit/BulkEditPanel.js.map +1 -1
  11. package/cjs/bulk-edit/useBulkEditPanel.js +12 -15
  12. package/cjs/bulk-edit/useBulkEditPanel.js.map +1 -1
  13. package/cjs/cell-block/cellblock-utils.js +3 -3
  14. package/cjs/cell-block/cellblock-utils.js.map +1 -1
  15. package/cjs/cell-block/useCellBlockSelection.js +0 -3
  16. package/cjs/cell-block/useCellBlockSelection.js.map +1 -1
  17. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js +2 -2
  18. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js.map +1 -1
  19. package/cjs/cell-renderers/input-cell/InputCell.css.js +1 -1
  20. package/cjs/cell-renderers/input-cell/InputCell.js +2 -3
  21. package/cjs/cell-renderers/input-cell/InputCell.js.map +1 -1
  22. package/cjs/cell-renderers/toggle-cell/ToggleCell.js +1 -1
  23. package/cjs/cell-renderers/toggle-cell/ToggleCell.js.map +1 -1
  24. package/cjs/column-resizing/ColumnResizer.css.js +1 -1
  25. package/cjs/header-cell/GroupHeaderCell.css.js +1 -1
  26. package/cjs/header-cell/HeaderCell.css.js +1 -1
  27. package/cjs/table-cell/TableCell.css.js +1 -1
  28. package/cjs/table-cell/TableCell.js +19 -19
  29. package/cjs/table-cell/TableCell.js.map +1 -1
  30. package/cjs/table-dom-utils.js +24 -4
  31. package/cjs/table-dom-utils.js.map +1 -1
  32. package/cjs/table-header/TableHeader.js +91 -89
  33. package/cjs/table-header/TableHeader.js.map +1 -1
  34. package/cjs/useCell.js +2 -1
  35. package/cjs/useCell.js.map +1 -1
  36. package/cjs/useCellEditing.js +3 -28
  37. package/cjs/useCellEditing.js.map +1 -1
  38. package/cjs/useCellFocus.js +4 -8
  39. package/cjs/useCellFocus.js.map +1 -1
  40. package/cjs/useKeyboardNavigation.js +25 -11
  41. package/cjs/useKeyboardNavigation.js.map +1 -1
  42. package/cjs/useTable.js +55 -85
  43. package/cjs/useTable.js.map +1 -1
  44. package/cjs/useTableContextMenu.js +3 -2
  45. package/cjs/useTableContextMenu.js.map +1 -1
  46. package/cjs/useTableModel.js +25 -48
  47. package/cjs/useTableModel.js.map +1 -1
  48. package/esm/Row.css.js +4 -0
  49. package/esm/Row.css.js.map +1 -0
  50. package/esm/Row.js +33 -5
  51. package/esm/Row.js.map +1 -1
  52. package/esm/Table.css.js +1 -1
  53. package/esm/Table.js +7 -23
  54. package/esm/Table.js.map +1 -1
  55. package/esm/bulk-edit/BulkEditPanel.css.js +1 -1
  56. package/esm/bulk-edit/BulkEditPanel.js +1 -2
  57. package/esm/bulk-edit/BulkEditPanel.js.map +1 -1
  58. package/esm/bulk-edit/useBulkEditPanel.js +12 -15
  59. package/esm/bulk-edit/useBulkEditPanel.js.map +1 -1
  60. package/esm/cell-block/cellblock-utils.js +2 -2
  61. package/esm/cell-block/cellblock-utils.js.map +1 -1
  62. package/esm/cell-block/useCellBlockSelection.js +0 -3
  63. package/esm/cell-block/useCellBlockSelection.js.map +1 -1
  64. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js +3 -3
  65. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js.map +1 -1
  66. package/esm/cell-renderers/input-cell/InputCell.css.js +1 -1
  67. package/esm/cell-renderers/input-cell/InputCell.js +2 -3
  68. package/esm/cell-renderers/input-cell/InputCell.js.map +1 -1
  69. package/esm/cell-renderers/toggle-cell/ToggleCell.js +2 -2
  70. package/esm/cell-renderers/toggle-cell/ToggleCell.js.map +1 -1
  71. package/esm/column-resizing/ColumnResizer.css.js +1 -1
  72. package/esm/header-cell/GroupHeaderCell.css.js +1 -1
  73. package/esm/header-cell/HeaderCell.css.js +1 -1
  74. package/esm/table-cell/TableCell.css.js +1 -1
  75. package/esm/table-cell/TableCell.js +19 -19
  76. package/esm/table-cell/TableCell.js.map +1 -1
  77. package/esm/table-dom-utils.js +21 -3
  78. package/esm/table-dom-utils.js.map +1 -1
  79. package/esm/table-header/TableHeader.js +91 -89
  80. package/esm/table-header/TableHeader.js.map +1 -1
  81. package/esm/useCell.js +2 -1
  82. package/esm/useCell.js.map +1 -1
  83. package/esm/useCellEditing.js +5 -30
  84. package/esm/useCellEditing.js.map +1 -1
  85. package/esm/useCellFocus.js +4 -8
  86. package/esm/useCellFocus.js.map +1 -1
  87. package/esm/useKeyboardNavigation.js +25 -11
  88. package/esm/useKeyboardNavigation.js.map +1 -1
  89. package/esm/useTable.js +56 -86
  90. package/esm/useTable.js.map +1 -1
  91. package/esm/useTableContextMenu.js +2 -1
  92. package/esm/useTableContextMenu.js.map +1 -1
  93. package/esm/useTableModel.js +25 -48
  94. package/esm/useTableModel.js.map +1 -1
  95. package/package.json +11 -11
  96. package/types/Row.d.ts +3 -0
  97. package/types/Table.d.ts +6 -9
  98. package/types/bulk-edit/BulkEditPanel.d.ts +2 -3
  99. package/types/table-dom-utils.d.ts +3 -1
  100. package/types/table-header/TableHeader.d.ts +2 -2
  101. package/types/useCellEditing.d.ts +1 -3
  102. package/types/useKeyboardNavigation.d.ts +2 -2
  103. package/types/useTable.d.ts +4 -6
  104. package/types/useTableModel.d.ts +7 -4
package/types/Table.d.ts CHANGED
@@ -46,11 +46,6 @@ export interface TableProps extends Omit<MeasuredContainerProps, "onDragStart" |
46
46
  * required if a fully featured column picker is to be available
47
47
  */
48
48
  availableColumns?: SchemaColumn[];
49
- /**
50
- * Pixel height of header cells. If specified here, this will take precedence over CSS
51
- * values and Table will not respond to density changes.
52
- */
53
- colHeaderRowHeight?: number;
54
49
  /**
55
50
  * Provide configuration settings for Table. At minimun, column
56
51
  * descriptors must be provided.
@@ -135,10 +130,6 @@ export interface TableProps extends Omit<MeasuredContainerProps, "onDragStart" |
135
130
  * provide a 'Delete' or 'Cancel' button. Implement this functionality in a rowActionHandler.
136
131
  */
137
132
  rowActionHandlers?: Record<string, RowActionHandler>;
138
- /**
139
- * Allows opt-in to a predefined style pattern that renders a border around a row selection block.
140
- */
141
- rowSelectionBorder?: boolean;
142
133
  /**
143
134
  * When a row is selected and onSelect provided, onSelect will be invoked with a
144
135
  * DataSourceRowObject, derived from the internal representation of a data row,
@@ -173,6 +164,12 @@ export interface TableProps extends Omit<MeasuredContainerProps, "onDragStart" |
173
164
  * Will be used to highlight matching text.
174
165
  */
175
166
  searchPattern?: string;
167
+ /**
168
+ * Selection Bookends style the left and right edge of a selection block.
169
+ * They are optional, value currently defaults to 4.
170
+ * TODO this should just live in CSS
171
+ */
172
+ selectionBookendWidth?: number;
176
173
  /**
177
174
  * Selection behaviour for Table:
178
175
  * `none` selection disabled
@@ -6,7 +6,7 @@ export interface BulkEditPanelProps extends HTMLAttributes<HTMLDivElement> {
6
6
  /**
7
7
  * The session dataSource. This is where the edits will be processed until final
8
8
  * confirmation, at which point edits will be applied to parent dataSource and
9
- * the session table torn down.
9
+ * the session table torm down.
10
10
  */
11
11
  sessionDs: DataSource;
12
12
  response?: RpcResponse;
@@ -16,6 +16,5 @@ export interface BulkEditPanelProps extends HTMLAttributes<HTMLDivElement> {
16
16
  */
17
17
  parentDs: DataSource;
18
18
  onValidationStatusChange: (isValid: boolean) => void;
19
- width?: number;
20
19
  }
21
- export declare const BulkEditPanel: ({ className, columns, sessionDs, parentDs, onValidationStatusChange, style, width, ...htmlAttributes }: BulkEditPanelProps) => ReactElement;
20
+ export declare const BulkEditPanel: ({ className, columns, sessionDs, parentDs, onValidationStatusChange, style, ...htmlAttributes }: BulkEditPanelProps) => ReactElement;
@@ -1,6 +1,6 @@
1
1
  import { RefObject } from "react";
2
2
  import { ScrollDirection } from "./useTableScroll";
3
- import { type ArrowKey, type PageKey } from "@vuu-ui/vuu-utils";
3
+ import type { ArrowKey, PageKey } from "@vuu-ui/vuu-utils";
4
4
  import type { CellPos } from "@vuu-ui/vuu-table-types";
5
5
  export type NavigationKey = PageKey | ArrowKey;
6
6
  export declare const headerCellQuery: (colIdx: number) => string;
@@ -12,6 +12,8 @@ export declare const getFocusedCell: (el: HTMLElement | Element | null) => HTMLD
12
12
  export declare const cellIsEditable: (cell: HTMLDivElement | null) => boolean | undefined;
13
13
  export declare const cellDropdownShowing: (cell: HTMLDivElement | null) => boolean;
14
14
  export declare const cellIsTextInput: (cell: HTMLElement) => boolean;
15
+ export declare const getAriaRowIndex: (rowElement: HTMLElement | null) => number;
16
+ export declare const getAriaColIndex: (cellElement: HTMLElement | null) => number;
15
17
  export declare const getRowElementByAriaIndex: (container: HTMLDivElement | EventTarget, rowIndex: number) => HTMLElement | null;
16
18
  export declare const getIndexFromCellElement: (cellElement: HTMLElement | null) => number;
17
19
  export declare const getAriaCellPos: (tableCell: HTMLDivElement) => CellPos;
@@ -2,6 +2,7 @@ import { VuuSortType } from "@vuu-ui/vuu-protocol-types";
2
2
  import { ColumnDescriptor, ColumnMoveHandler, CustomHeader, HeaderCellProps, RuntimeColumnDescriptor, TableColumnResizeHandler, TableConfig, TableHeadings } from "@vuu-ui/vuu-table-types";
3
3
  export type ColumnSortHandler = (column: ColumnDescriptor, addToExistingSort: boolean, sortType?: VuuSortType) => void;
4
4
  export interface TableHeaderProps extends Pick<HeaderCellProps, "allRowsSelected" | "allowDragColumnHeader" | "allowSelectAll" | "onCheckBoxColumnHeaderClick" | "showColumnHeaderMenus"> {
5
+ classBase?: string;
5
6
  columns: RuntimeColumnDescriptor[];
6
7
  customHeader?: CustomHeader | CustomHeader[];
7
8
  headings: TableHeadings;
@@ -11,9 +12,8 @@ export interface TableHeaderProps extends Pick<HeaderCellProps, "allRowsSelected
11
12
  onMoveGroupColumn: (columns: ColumnDescriptor[]) => void;
12
13
  onRemoveGroupColumn: (column: RuntimeColumnDescriptor) => void;
13
14
  onSortColumn: ColumnSortHandler;
14
- showBookends?: boolean;
15
15
  tableConfig: TableConfig;
16
16
  tableId: string;
17
17
  virtualColSpan?: number;
18
18
  }
19
- export declare const TableHeader: import("react").MemoExoticComponent<({ allowDragColumnHeader, allowSelectAll, allRowsSelected, columns, customHeader, headings, onCheckBoxColumnHeaderClick, onHeightMeasured, onMoveColumn, onMoveGroupColumn, onRemoveGroupColumn, onResizeColumn, onSortColumn, showBookends, showColumnHeaderMenus, tableConfig, tableId, virtualColSpan, }: TableHeaderProps) => import("react/jsx-runtime").JSX.Element>;
19
+ export declare const TableHeader: import("react").MemoExoticComponent<({ allowDragColumnHeader, allowSelectAll, allRowsSelected, classBase, columns, customHeader, headings, onCheckBoxColumnHeaderClick, onHeightMeasured, onMoveColumn, onMoveGroupColumn, onRemoveGroupColumn, onResizeColumn, onSortColumn, showColumnHeaderMenus, tableConfig, tableId, virtualColSpan, }: TableHeaderProps) => import("react/jsx-runtime").JSX.Element>;
@@ -1,10 +1,8 @@
1
1
  import { FocusEventHandler, KeyboardEvent as ReactKeyboardEvent, MouseEvent } from "react";
2
- import { FocusCell } from "./useCellFocus";
3
2
  export interface CellEditingHookProps {
4
- focusCell: FocusCell;
5
3
  navigate: () => void;
6
4
  }
7
- export declare const useCellEditing: ({ focusCell, navigate, }: CellEditingHookProps) => {
5
+ export declare const useCellEditing: ({ navigate }: CellEditingHookProps) => {
8
6
  onBlur: FocusEventHandler;
9
7
  onDoubleClick: (e: MouseEvent<HTMLElement>) => void;
10
8
  onFocus: FocusEventHandler;
@@ -1,6 +1,6 @@
1
1
  import { VuuRange } from "@vuu-ui/vuu-protocol-types";
2
2
  import { PageKey } from "@vuu-ui/vuu-utils";
3
- import { KeyboardEvent, MouseEvent, RefObject } from "react";
3
+ import { KeyboardEvent, MouseEvent, MutableRefObject, RefObject } from "react";
4
4
  import { TableNavigationStyle } from "./Table";
5
5
  import { NavigationKey } from "./table-dom-utils";
6
6
  import { ScrollRequestHandler } from "./useTableScroll";
@@ -10,7 +10,7 @@ export declare const isNavigationKey: (key: string, navigationStyle: TableNaviga
10
10
  export declare const isPagingKey: (key: string) => key is PageKey;
11
11
  export type GroupToggleHandler = (treeNodeOperation: "expand" | "collapse", rowIndex: number) => void;
12
12
  export interface NavigationHookProps {
13
- cellFocusStateRef: RefObject<CellFocusState>;
13
+ cellFocusStateRef: MutableRefObject<CellFocusState>;
14
14
  containerRef: RefObject<HTMLElement | null>;
15
15
  columnCount?: number;
16
16
  headerCount: number;
@@ -1,5 +1,5 @@
1
1
  import type { DataSourceRow } from "@vuu-ui/vuu-data-types";
2
- import type { RpcResult, VuuSortType } from "@vuu-ui/vuu-protocol-types";
2
+ import type { VuuSortType } from "@vuu-ui/vuu-protocol-types";
3
3
  import type { ColumnDescriptor, ColumnMoveHandler, DataCellEditEvent, RuntimeColumnDescriptor, TableColumnResizeHandler, TableConfig, TableRowClickHandlerInternal, TableSelectionModel } from "@vuu-ui/vuu-table-types";
4
4
  import { MeasuredProps, MeasuredSize } from "@vuu-ui/vuu-ui-controls";
5
5
  import { FocusEvent, KeyboardEvent, MouseEventHandler, RefObject } from "react";
@@ -8,13 +8,13 @@ type HeaderState = {
8
8
  height: number;
9
9
  count: number;
10
10
  };
11
- export interface TableHookProps extends MeasuredProps, Pick<TableProps, "allowCellBlockSelection" | "allowDragDrop" | "allowSelectCheckboxRow" | "autoSelectFirstRow" | "autoSelectRowKey" | "availableColumns" | "config" | "dataSource" | "disableFocus" | "highlightedIndex" | "id" | "navigationStyle" | "onAvailableColumnsChange" | "onConfigChange" | "onDataEdited" | "onDragStart" | "onDrop" | "onHighlight" | "onSelect" | "onSelectCellBlock" | "onSelectionChange" | "onRowClick" | "renderBufferSize" | "revealSelected" | "rowToObject" | "scrollingApiRef" | "showColumnHeaderMenus" | "showColumnHeaders" | "showPaginationControls"> {
11
+ export interface TableHookProps extends MeasuredProps, Pick<TableProps, "allowCellBlockSelection" | "allowDragDrop" | "allowSelectCheckboxRow" | "autoSelectFirstRow" | "autoSelectRowKey" | "availableColumns" | "config" | "dataSource" | "disableFocus" | "highlightedIndex" | "id" | "navigationStyle" | "onAvailableColumnsChange" | "onConfigChange" | "onDataEdited" | "onDragStart" | "onDrop" | "onHighlight" | "onSelect" | "onSelectCellBlock" | "onSelectionChange" | "onRowClick" | "renderBufferSize" | "revealSelected" | "rowToObject" | "scrollingApiRef" | "selectionBookendWidth" | "showColumnHeaderMenus" | "showColumnHeaders" | "showPaginationControls"> {
12
12
  containerRef: RefObject<HTMLDivElement | null>;
13
13
  rowHeight: number;
14
14
  selectionModel: TableSelectionModel;
15
15
  size: MeasuredSize;
16
16
  }
17
- export declare const useTable: ({ allowCellBlockSelection, allowSelectCheckboxRow, allowDragDrop, autoSelectFirstRow, autoSelectRowKey, availableColumns, config, containerRef, dataSource, disableFocus, highlightedIndex: highlightedIndexProp, id, navigationStyle, onAvailableColumnsChange, onConfigChange, onDataEdited: onDataEditedProp, onDragStart, onDrop, onHighlight, onRowClick: onRowClickProp, onSelect, onSelectCellBlock, onSelectionChange, renderBufferSize, revealSelected, rowHeight, rowToObject, scrollingApiRef, selectionModel, showColumnHeaderMenus, showColumnHeaders, showPaginationControls, size, }: TableHookProps) => {
17
+ export declare const useTable: ({ allowCellBlockSelection, allowSelectCheckboxRow, allowDragDrop, autoSelectFirstRow, autoSelectRowKey, availableColumns, config, containerRef, dataSource, disableFocus, highlightedIndex: highlightedIndexProp, id, navigationStyle, onAvailableColumnsChange, onConfigChange, onDataEdited: onDataEditedProp, onDragStart, onDrop, onHighlight, onRowClick: onRowClickProp, onSelect, onSelectCellBlock, onSelectionChange, renderBufferSize, revealSelected, rowHeight, rowToObject, scrollingApiRef, selectionBookendWidth, selectionModel, showColumnHeaderMenus, showColumnHeaders, showPaginationControls, size, }: TableHookProps) => {
18
18
  allRowsSelected: boolean;
19
19
  "aria-rowcount": number;
20
20
  cellBlock: import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
@@ -36,7 +36,7 @@ export declare const useTable: ({ allowCellBlockSelection, allowSelectCheckboxRo
36
36
  onKeyDown: (e: KeyboardEvent<HTMLElement>) => void;
37
37
  onMouseDown: MouseEventHandler;
38
38
  onContextMenu: ((evt: import("react").MouseEvent<HTMLElement>) => void) | undefined;
39
- onDataEdited: (editState: DataCellEditEvent) => Promise<RpcResult | undefined>;
39
+ onDataEdited: (editState: DataCellEditEvent) => Promise<import("@vuu-ui/vuu-protocol-types").RpcResultSuccess | import("@vuu-ui/vuu-protocol-types").RpcResultError | undefined>;
40
40
  onHeaderHeightMeasured: (height: number, count: number) => void;
41
41
  onMoveColumn: ColumnMoveHandler;
42
42
  onMoveGroupColumn: (columns: ColumnDescriptor[]) => void;
@@ -54,13 +54,11 @@ export declare const useTable: ({ allowCellBlockSelection, allowSelectCheckboxRo
54
54
  };
55
55
  tableAttributes: {
56
56
  availableWidth: number;
57
- checkboxColumnWidth?: number;
58
57
  columnDefaultWidth?: number;
59
58
  columnFormatHeader?: "capitalize" | "uppercase";
60
59
  columnLayout?: import("@vuu-ui/vuu-table-types").ColumnLayout;
61
60
  columnSeparators?: boolean;
62
61
  rowSeparators?: boolean;
63
- selectionBookendWidth?: number;
64
62
  zebraStripes?: boolean;
65
63
  };
66
64
  tableBodyRef: import("react").RefCallback<HTMLDivElement>;
@@ -1,5 +1,5 @@
1
1
  import { DataSource, TableSchema, WithBaseFilter, WithFullConfig } from "@vuu-ui/vuu-data-types";
2
- import { ColumnDescriptor, ColumnLayout, ResizePhase, RuntimeColumnDescriptor, TableAttributes, TableConfig, TableHeadings, TableSelectionModel } from "@vuu-ui/vuu-table-types";
2
+ import { ColumnDescriptor, ColumnLayout, PinLocation, ResizePhase, RuntimeColumnDescriptor, TableAttributes, TableConfig, TableHeadings, TableSelectionModel } from "@vuu-ui/vuu-table-types";
3
3
  /**
4
4
  * TableModel represents state used internally to manage Table. It is
5
5
  * derived initially from the TableConfig provided by user, along with the
@@ -33,6 +33,11 @@ export interface ColumnActionMove {
33
33
  column: RuntimeColumnDescriptor;
34
34
  moveBy?: 1 | -1;
35
35
  }
36
+ export interface ColumnActionPin {
37
+ type: "pinColumn";
38
+ column: ColumnDescriptor;
39
+ pin: PinLocation | false;
40
+ }
36
41
  export interface ColumnActionResize {
37
42
  type: "resizeColumn";
38
43
  column: RuntimeColumnDescriptor;
@@ -60,7 +65,7 @@ export interface ColumnActionTableConfig extends WithBaseFilter<WithFullConfig>
60
65
  confirmed?: boolean;
61
66
  type: "tableConfig";
62
67
  }
63
- export type TableModelAction = ColumnActionHide | ColumnActionInit | ColumnActionMove | ColumnActionResize | ColumnActionSetTableSchema | ColumnActionShow | ColumnActionUpdate | ColumnActionUpdateProp | ColumnActionTableConfig;
68
+ export type TableModelAction = ColumnActionHide | ColumnActionInit | ColumnActionMove | ColumnActionPin | ColumnActionResize | ColumnActionSetTableSchema | ColumnActionShow | ColumnActionUpdate | ColumnActionUpdateProp | ColumnActionTableConfig;
64
69
  export type TableModelActionDispatch = (action: TableModelAction) => void;
65
70
  export interface TableModelHookProps {
66
71
  config: TableConfig;
@@ -74,13 +79,11 @@ export declare const useTableModel: ({ config: tableConfigProp, dataSource, sele
74
79
  headings: TableHeadings;
75
80
  tableAttributes: {
76
81
  availableWidth: number;
77
- checkboxColumnWidth?: number;
78
82
  columnDefaultWidth?: number;
79
83
  columnFormatHeader?: "capitalize" | "uppercase";
80
84
  columnLayout?: ColumnLayout;
81
85
  columnSeparators?: boolean;
82
86
  rowSeparators?: boolean;
83
- selectionBookendWidth?: number;
84
87
  zebraStripes?: boolean;
85
88
  };
86
89
  tableConfig: Readonly<TableConfig>;