From 17393751a023571e0db5d042323f8e5b7471fe81 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Wed, 4 Jan 2023 18:30:33 -0800 Subject: [PATCH 1/5] Match column resize aria hook interface to other interfaces --- .../table/src/useTableColumnResize.ts | 46 ++++++++++--------- .../table/stories/example-resizing.tsx | 5 +- .../@react-spectrum/table/src/Resizer.tsx | 5 +- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/packages/@react-aria/table/src/useTableColumnResize.ts b/packages/@react-aria/table/src/useTableColumnResize.ts index 8f2c3b65850..c995abb875e 100644 --- a/packages/@react-aria/table/src/useTableColumnResize.ts +++ b/packages/@react-aria/table/src/useTableColumnResize.ts @@ -28,26 +28,6 @@ export interface TableColumnResizeAria { resizerProps: DOMAttributes } -export interface AriaTableColumnResizeProps { - /** An object representing the [column header](https://www.w3.org/TR/wai-aria-1.1/#columnheader). Contains all the relevant information that makes up the column header. */ - column: GridNode, - /** Aria label for the hidden input. Gets read when resizing. */ - label: string, - /** - * Ref to the trigger if resizing was started from a column header menu. If it's provided, - * focus will be returned there when resizing is done. - * */ - triggerRef?: RefObject, - /** If resizing is disabled. */ - isDisabled?: boolean, - /** Called when resizing starts. */ - onResizeStart?: (widths: Map) => void, - /** Called for every resize event that results in new column sizes. */ - onResize?: (widths: Map) => void, - /** Called when resizing ends. */ - onResizeEnd?: (widths: Map) => void -} - export interface TableLayoutState { /** Get the current width of the specified column. */ @@ -69,8 +49,30 @@ export interface TableLayoutState { onColumnResizeEnd: (key: Key) => void } -export function useTableColumnResize(props: AriaTableColumnResizeProps, state: TableState, layoutState: TableLayoutState, ref: RefObject): TableColumnResizeAria { - let {column: item, triggerRef, isDisabled, onResizeStart, onResize, onResizeEnd} = props; +export interface AriaTableColumnResizeProps { + /** An object representing the [column header](https://www.w3.org/TR/wai-aria-1.1/#columnheader). Contains all the relevant information that makes up the column header. */ + column: GridNode, + /** Aria label for the hidden input. Gets read when resizing. */ + label: string, + /** + * Ref to the trigger if resizing was started from a column header menu. If it's provided, + * focus will be returned there when resizing is done. + * */ + triggerRef?: RefObject, + /** If resizing is disabled. */ + isDisabled?: boolean, + /** Called when resizing starts. */ + onResizeStart?: (widths: Map) => void, + /** Called for every resize event that results in new column sizes. */ + onResize?: (widths: Map) => void, + /** Called when resizing ends. */ + onResizeEnd?: (widths: Map) => void, + /** ?? */ + layout: TableLayoutState +} + +export function useTableColumnResize(props: AriaTableColumnResizeProps, state: TableState, ref: RefObject): TableColumnResizeAria { + let {column: item, triggerRef, isDisabled, onResizeStart, onResize, onResizeEnd, layout: layoutState} = props; const stringFormatter = useLocalizedStringFormatter(intlMessages); let id = useId(); let isResizing = useRef(false); diff --git a/packages/@react-aria/table/stories/example-resizing.tsx b/packages/@react-aria/table/stories/example-resizing.tsx index cde1b8f37f9..d7becb637d7 100644 --- a/packages/@react-aria/table/stories/example-resizing.tsx +++ b/packages/@react-aria/table/stories/example-resizing.tsx @@ -132,8 +132,9 @@ function Resizer({column, state, layoutState, onResizeStart, onResize, onResizeE label: 'Resizer', onResizeStart, onResize, - onResizeEnd - } as AriaTableColumnResizeProps, state, layoutState, ref); + onResizeEnd, + layout: layoutState + } as AriaTableColumnResizeProps, state, ref); return ( <> diff --git a/packages/@react-spectrum/table/src/Resizer.tsx b/packages/@react-spectrum/table/src/Resizer.tsx index ffc6fdf1dfa..9a713277837 100644 --- a/packages/@react-spectrum/table/src/Resizer.tsx +++ b/packages/@react-spectrum/table/src/Resizer.tsx @@ -55,8 +55,9 @@ function Resizer(props: ResizerProps, ref: RefObject) { document.body.classList.remove(classNames(styles, 'resize-ew')); document.body.classList.remove(classNames(styles, 'resize-e')); document.body.classList.remove(classNames(styles, 'resize-w')); - } - }), state, layout, ref); + }, + layout + }), state, ref); let style = { cursor: undefined, From 6c6dc540888c358a726bafd5647356df5a690136 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Mon, 9 Jan 2023 17:53:05 -0800 Subject: [PATCH 2/5] move around types --- .../table/src/useTableColumnResize.ts | 67 +++++++------------ .../table/stories/example-resizing.tsx | 4 +- .../@react-spectrum/table/src/Resizer.tsx | 4 +- .../table/src/useTableColumnResizeState.ts | 11 ++- 4 files changed, 35 insertions(+), 51 deletions(-) diff --git a/packages/@react-aria/table/src/useTableColumnResize.ts b/packages/@react-aria/table/src/useTableColumnResize.ts index c995abb875e..0c61082eda4 100644 --- a/packages/@react-aria/table/src/useTableColumnResize.ts +++ b/packages/@react-aria/table/src/useTableColumnResize.ts @@ -11,7 +11,6 @@ */ import {ChangeEvent, Key, RefObject, useCallback, useRef} from 'react'; -import {ColumnSize} from '@react-types/table'; import {DOMAttributes} from '@react-types/shared'; import {focusSafely} from '@react-aria/focus'; import {focusWithoutScrolling, mergeProps, useId} from '@react-aria/utils'; @@ -19,7 +18,7 @@ import {getColumnHeaderId} from './utils'; import {GridNode} from '@react-types/grid'; // @ts-ignore import intlMessages from '../intl/*.json'; -import {TableState} from '@react-stately/table'; +import {TableColumnResizeState, TableState} from '@react-stately/table'; import {useKeyboard, useMove, usePress} from '@react-aria/interactions'; import {useLocale, useLocalizedStringFormatter} from '@react-aria/i18n'; @@ -28,27 +27,6 @@ export interface TableColumnResizeAria { resizerProps: DOMAttributes } - -export interface TableLayoutState { - /** Get the current width of the specified column. */ - getColumnWidth: (key: Key) => number, - /** Get the current min width of the specified column. */ - getColumnMinWidth: (key: Key) => number, - /** Get the current max width of the specified column. */ - getColumnMaxWidth: (key: Key) => number, - /** Get the currently resizing column. */ - resizingColumn: Key, - /** Called to update the state that resizing has started. */ - onColumnResizeStart: (key: Key) => void, - /** - * Called to update the state that a resize event has occurred. - * Returns the new widths for all columns based on the resized column. - **/ - onColumnResize: (column: Key, width: number) => Map, - /** Called to update the state that resizing has ended. */ - onColumnResizeEnd: (key: Key) => void -} - export interface AriaTableColumnResizeProps { /** An object representing the [column header](https://www.w3.org/TR/wai-aria-1.1/#columnheader). Contains all the relevant information that makes up the column header. */ column: GridNode, @@ -67,12 +45,13 @@ export interface AriaTableColumnResizeProps { onResize?: (widths: Map) => void, /** Called when resizing ends. */ onResizeEnd?: (widths: Map) => void, - /** ?? */ - layout: TableLayoutState + tableState: TableState } -export function useTableColumnResize(props: AriaTableColumnResizeProps, state: TableState, ref: RefObject): TableColumnResizeAria { - let {column: item, triggerRef, isDisabled, onResizeStart, onResize, onResizeEnd, layout: layoutState} = props; +export interface AriaTableColumnResizeState extends Omit {} + +export function useTableColumnResize(props: AriaTableColumnResizeProps, state: AriaTableColumnResizeState, ref: RefObject): TableColumnResizeAria { + let {column: item, triggerRef, isDisabled, onResizeStart, onResize, onResizeEnd, tableState} = props; const stringFormatter = useLocalizedStringFormatter(intlMessages); let id = useId(); let isResizing = useRef(false); @@ -91,35 +70,35 @@ export function useTableColumnResize(props: AriaTableColumnResizeProps, st let startResize = useCallback((item) => { if (!isResizing.current) { - lastSize.current = layoutState.onColumnResize(item.key, layoutState.getColumnWidth(item.key)); - layoutState.onColumnResizeStart(item.key); + lastSize.current = state.onColumnResize(item.key, state.getColumnWidth(item.key)); + state.onColumnResizeStart(item.key); onResizeStart?.(lastSize.current); } isResizing.current = true; - }, [isResizing, onResizeStart, layoutState]); + }, [isResizing, onResizeStart, state]); let resize = useCallback((item, newWidth) => { - let sizes = layoutState.onColumnResize(item.key, newWidth); + let sizes = state.onColumnResize(item.key, newWidth); onResize?.(sizes); lastSize.current = sizes; - }, [onResize, layoutState]); + }, [onResize, state]); let endResize = useCallback((item) => { if (lastSize.current == null) { - lastSize.current = layoutState.onColumnResize(item.key, layoutState.getColumnWidth(item.key)); + lastSize.current = state.onColumnResize(item.key, state.getColumnWidth(item.key)); } if (isResizing.current) { - layoutState.onColumnResizeEnd(item.key); + state.onColumnResizeEnd(item.key); onResizeEnd?.(lastSize.current); } isResizing.current = false; lastSize.current = null; - }, [isResizing, onResizeEnd, layoutState]); + }, [isResizing, onResizeEnd, state]); const columnResizeWidthRef = useRef(0); const {moveProps} = useMove({ onMoveStart() { - columnResizeWidthRef.current = layoutState.getColumnWidth(item.key); + columnResizeWidthRef.current = state.getColumnWidth(item.key); startResize(item); }, onMove(e) { @@ -148,16 +127,16 @@ export function useTableColumnResize(props: AriaTableColumnResizeProps, st } }); - let min = Math.floor(layoutState.getColumnMinWidth(item.key)); - let max = Math.floor(layoutState.getColumnMaxWidth(item.key)); + let min = Math.floor(state.getColumnMinWidth(item.key)); + let max = Math.floor(state.getColumnMaxWidth(item.key)); if (max === Infinity) { max = Number.MAX_SAFE_INTEGER; } - let value = Math.floor(layoutState.getColumnWidth(item.key)); + let value = Math.floor(state.getColumnWidth(item.key)); let ariaProps = { 'aria-label': props.label, 'aria-orientation': 'horizontal' as 'horizontal', - 'aria-labelledby': `${id} ${getColumnHeaderId(state, item.key)}`, + 'aria-labelledby': `${id} ${getColumnHeaderId(tableState, item.key)}`, 'aria-valuetext': stringFormatter.format('columnSize', {value}), min, max, @@ -171,7 +150,7 @@ export function useTableColumnResize(props: AriaTableColumnResizeProps, st }, [ref]); let onChange = (e: ChangeEvent) => { - let currentWidth = layoutState.getColumnWidth(item.key); + let currentWidth = state.getColumnWidth(item.key); let nextValue = parseFloat(e.target.value); if (nextValue > currentWidth) { @@ -187,7 +166,7 @@ export function useTableColumnResize(props: AriaTableColumnResizeProps, st if (e.ctrlKey || e.altKey || e.metaKey || e.shiftKey || e.pointerType === 'keyboard') { return; } - if (e.pointerType === 'virtual' && layoutState.resizingColumn != null) { + if (e.pointerType === 'virtual' && state.resizingColumn != null) { endResize(item); if (triggerRef?.current) { focusSafely(triggerRef.current); @@ -220,11 +199,11 @@ export function useTableColumnResize(props: AriaTableColumnResizeProps, st // useMove calls onMoveStart for every keypress, but we want resize start to only be called when we start resize mode // call instead during focus and blur startResize(item); - state.setKeyboardNavigationDisabled(true); + tableState.setKeyboardNavigationDisabled(true); }, onBlur: () => { endResize(item); - state.setKeyboardNavigationDisabled(false); + tableState.setKeyboardNavigationDisabled(false); }, onChange, disabled: isDisabled diff --git a/packages/@react-aria/table/stories/example-resizing.tsx b/packages/@react-aria/table/stories/example-resizing.tsx index d7becb637d7..b3f3d020659 100644 --- a/packages/@react-aria/table/stories/example-resizing.tsx +++ b/packages/@react-aria/table/stories/example-resizing.tsx @@ -133,8 +133,8 @@ function Resizer({column, state, layoutState, onResizeStart, onResize, onResizeE onResizeStart, onResize, onResizeEnd, - layout: layoutState - } as AriaTableColumnResizeProps, state, ref); + tableState: state + } as AriaTableColumnResizeProps, layoutState, ref); return ( <> diff --git a/packages/@react-spectrum/table/src/Resizer.tsx b/packages/@react-spectrum/table/src/Resizer.tsx index 9a713277837..ebb067dd4e4 100644 --- a/packages/@react-spectrum/table/src/Resizer.tsx +++ b/packages/@react-spectrum/table/src/Resizer.tsx @@ -56,8 +56,8 @@ function Resizer(props: ResizerProps, ref: RefObject) { document.body.classList.remove(classNames(styles, 'resize-e')); document.body.classList.remove(classNames(styles, 'resize-w')); }, - layout - }), state, ref); + tableState: state + }), layout, ref); let style = { cursor: undefined, diff --git a/packages/@react-stately/table/src/useTableColumnResizeState.ts b/packages/@react-stately/table/src/useTableColumnResizeState.ts index 877ac1eb378..c6d0fbff3b4 100644 --- a/packages/@react-stately/table/src/useTableColumnResizeState.ts +++ b/packages/@react-stately/table/src/useTableColumnResizeState.ts @@ -34,8 +34,11 @@ export interface TableColumnResizeStateProps { onColumnResizeEnd?: (key: Key) => void } export interface TableColumnResizeState { - /** Trigger a resize and recalculation. */ - onColumnResize: (key: Key, width: number) => void, + /** + * Called to update the state that a resize event has occurred. + * Returns the new widths for all columns based on the resized column. + **/ + onColumnResize: (key: Key, width: number) => Map, /** Callback for when onColumnResize has started. */ onColumnResizeStart: (key: Key) => void, /** Callback for when onColumnResize has ended. */ @@ -47,7 +50,9 @@ export interface TableColumnResizeState { /** Gets the current maxWidth for the specified column. */ getColumnMaxWidth: (key: Key) => number, /** Currently calculated widths for all columns. */ - widths: Map + widths: Map, + /** Key of the currently resizing column. */ + resizingColumn: Key | null } From be2baaba80914b5056980f2ae38271689bd3b062 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Mon, 9 Jan 2023 18:10:12 -0800 Subject: [PATCH 3/5] Move state to reference of layout --- .../table/src/useTableColumnResize.ts | 17 ++++++++--------- .../@react-spectrum/table/src/TableView.tsx | 1 + .../@react-stately/layout/src/TableLayout.ts | 3 ++- .../table/src/useTableColumnResizeState.ts | 13 ++++++++----- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/@react-aria/table/src/useTableColumnResize.ts b/packages/@react-aria/table/src/useTableColumnResize.ts index 0c61082eda4..aadcc565716 100644 --- a/packages/@react-aria/table/src/useTableColumnResize.ts +++ b/packages/@react-aria/table/src/useTableColumnResize.ts @@ -18,7 +18,7 @@ import {getColumnHeaderId} from './utils'; import {GridNode} from '@react-types/grid'; // @ts-ignore import intlMessages from '../intl/*.json'; -import {TableColumnResizeState, TableState} from '@react-stately/table'; +import {TableColumnResizeState} from '@react-stately/table'; import {useKeyboard, useMove, usePress} from '@react-aria/interactions'; import {useLocale, useLocalizedStringFormatter} from '@react-aria/i18n'; @@ -44,14 +44,13 @@ export interface AriaTableColumnResizeProps { /** Called for every resize event that results in new column sizes. */ onResize?: (widths: Map) => void, /** Called when resizing ends. */ - onResizeEnd?: (widths: Map) => void, - tableState: TableState + onResizeEnd?: (widths: Map) => void } -export interface AriaTableColumnResizeState extends Omit {} +export interface AriaTableColumnResizeState extends Omit, 'widths'> {} -export function useTableColumnResize(props: AriaTableColumnResizeProps, state: AriaTableColumnResizeState, ref: RefObject): TableColumnResizeAria { - let {column: item, triggerRef, isDisabled, onResizeStart, onResize, onResizeEnd, tableState} = props; +export function useTableColumnResize(props: AriaTableColumnResizeProps, state: AriaTableColumnResizeState, ref: RefObject): TableColumnResizeAria { + let {column: item, triggerRef, isDisabled, onResizeStart, onResize, onResizeEnd} = props; const stringFormatter = useLocalizedStringFormatter(intlMessages); let id = useId(); let isResizing = useRef(false); @@ -136,7 +135,7 @@ export function useTableColumnResize(props: AriaTableColumnResizeProps, st let ariaProps = { 'aria-label': props.label, 'aria-orientation': 'horizontal' as 'horizontal', - 'aria-labelledby': `${id} ${getColumnHeaderId(tableState, item.key)}`, + 'aria-labelledby': `${id} ${getColumnHeaderId(state.tableState, item.key)}`, 'aria-valuetext': stringFormatter.format('columnSize', {value}), min, max, @@ -199,11 +198,11 @@ export function useTableColumnResize(props: AriaTableColumnResizeProps, st // useMove calls onMoveStart for every keypress, but we want resize start to only be called when we start resize mode // call instead during focus and blur startResize(item); - tableState.setKeyboardNavigationDisabled(true); + state.tableState.setKeyboardNavigationDisabled(true); }, onBlur: () => { endResize(item); - tableState.setKeyboardNavigationDisabled(false); + state.tableState.setKeyboardNavigationDisabled(false); }, onChange, disabled: isDisabled diff --git a/packages/@react-spectrum/table/src/TableView.tsx b/packages/@react-spectrum/table/src/TableView.tsx index 635b038c66c..ed947d257bd 100644 --- a/packages/@react-spectrum/table/src/TableView.tsx +++ b/packages/@react-spectrum/table/src/TableView.tsx @@ -192,6 +192,7 @@ function TableView(props: SpectrumTableProps, ref: DOMRef = ListLayoutOptions & { columnLayout: TableColumnLayout, @@ -38,6 +38,7 @@ export class TableLayout extends ListLayout { uncontrolledColumns: Map>; uncontrolledWidths: Map; resizingColumn: Key | null; + tableState: TableState; constructor(options: TableLayoutOptions) { super(options); diff --git a/packages/@react-stately/table/src/useTableColumnResizeState.ts b/packages/@react-stately/table/src/useTableColumnResizeState.ts index c6d0fbff3b4..514924a1a50 100644 --- a/packages/@react-stately/table/src/useTableColumnResizeState.ts +++ b/packages/@react-stately/table/src/useTableColumnResizeState.ts @@ -33,7 +33,7 @@ export interface TableColumnResizeStateProps { /** Callback that is invoked when the resize event is ended. */ onColumnResizeEnd?: (key: Key) => void } -export interface TableColumnResizeState { +export interface TableColumnResizeState { /** * Called to update the state that a resize event has occurred. * Returns the new widths for all columns based on the resized column. @@ -52,11 +52,12 @@ export interface TableColumnResizeState { /** Currently calculated widths for all columns. */ widths: Map, /** Key of the currently resizing column. */ - resizingColumn: Key | null + resizingColumn: Key | null, + tableState: TableState } -export function useTableColumnResizeState(props: TableColumnResizeStateProps, state: TableState): TableColumnResizeState { +export function useTableColumnResizeState(props: TableColumnResizeStateProps, state: TableState): TableColumnResizeState { let { getDefaultWidth, getDefaultMinWidth, @@ -123,13 +124,15 @@ export function useTableColumnResizeState(props: TableColumnResizeStateProps< columnLayout.getColumnMinWidth(key), getColumnMaxWidth: (key: Key) => columnLayout.getColumnMaxWidth(key), - widths: columnWidths + widths: columnWidths, + tableState: state }), [ columnLayout, resizingColumn, onColumnResize, onColumnResizeStart, onColumnResizeEnd, - columnWidths + columnWidths, + state ]); } From 4657be32b0a3e50a989281b1137496ed04b1af11 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Tue, 10 Jan 2023 12:13:45 -0800 Subject: [PATCH 4/5] use proxy object --- packages/@react-spectrum/table/src/Resizer.tsx | 5 ++--- packages/@react-spectrum/table/src/TableView.tsx | 13 ++++++++++--- packages/@react-stately/layout/src/TableLayout.ts | 3 +-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/packages/@react-spectrum/table/src/Resizer.tsx b/packages/@react-spectrum/table/src/Resizer.tsx index ebb067dd4e4..91272df175b 100644 --- a/packages/@react-spectrum/table/src/Resizer.tsx +++ b/packages/@react-spectrum/table/src/Resizer.tsx @@ -25,7 +25,7 @@ interface ResizerProps { function Resizer(props: ResizerProps, ref: RefObject) { let {column, showResizer} = props; - let {state, isEmpty, layout} = useTableContext(); + let {isEmpty, layout} = useTableContext(); // Virtualizer re-renders, but these components are all cached // in order to get around that and cause a rerender here, we use context // but we don't actually need any value, they are available on the layout object @@ -55,8 +55,7 @@ function Resizer(props: ResizerProps, ref: RefObject) { document.body.classList.remove(classNames(styles, 'resize-ew')); document.body.classList.remove(classNames(styles, 'resize-e')); document.body.classList.remove(classNames(styles, 'resize-w')); - }, - tableState: state + } }), layout, ref); let style = { diff --git a/packages/@react-spectrum/table/src/TableView.tsx b/packages/@react-spectrum/table/src/TableView.tsx index ed947d257bd..89860fba723 100644 --- a/packages/@react-spectrum/table/src/TableView.tsx +++ b/packages/@react-spectrum/table/src/TableView.tsx @@ -88,7 +88,7 @@ const SELECTION_CELL_DEFAULT_WIDTH = { interface TableContextValue { state: TableState, - layout: TableLayout, + layout: TableLayout & {tableState: TableState}, headerRowHovered: boolean, isInResizeMode: boolean, setIsInResizeMode: (val: boolean) => void, @@ -171,7 +171,7 @@ function TableView(props: SpectrumTableProps, ref: DOMRef new TableLayout({ + let tableLayout = useMemo(() => new TableLayout({ // If props.rowHeight is auto, then use estimated heights based on scale, otherwise use fixed heights. rowHeight: props.overflowMode === 'wrap' ? null @@ -192,7 +192,14 @@ function TableView(props: SpectrumTableProps, ref: DOMRef { + let proxy = new Proxy(tableLayout, { + get(target, prop, receiver) { + return prop === 'tableState' ? state : Reflect.get(target, prop, receiver); + } + }); + return proxy as TableLayout & {tableState: TableState}; + }, [state, tableLayout]); let {gridProps} = useTable({ ...props, diff --git a/packages/@react-stately/layout/src/TableLayout.ts b/packages/@react-stately/layout/src/TableLayout.ts index e3a10ab63a7..d1b4b219943 100644 --- a/packages/@react-stately/layout/src/TableLayout.ts +++ b/packages/@react-stately/layout/src/TableLayout.ts @@ -16,7 +16,7 @@ import {InvalidationContext, LayoutInfo, Point, Rect, Size} from '@react-stately import {Key} from 'react'; import {LayoutNode, ListLayout, ListLayoutOptions} from './ListLayout'; import {Node} from '@react-types/shared'; -import {TableColumnLayout, TableState} from '@react-stately/table'; +import {TableColumnLayout} from '@react-stately/table'; type TableLayoutOptions = ListLayoutOptions & { columnLayout: TableColumnLayout, @@ -38,7 +38,6 @@ export class TableLayout extends ListLayout { uncontrolledColumns: Map>; uncontrolledWidths: Map; resizingColumn: Key | null; - tableState: TableState; constructor(options: TableLayoutOptions) { super(options); From ecf851b3132776e1dc96945d82cab54a1dc7e79b Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Tue, 10 Jan 2023 14:07:40 -0800 Subject: [PATCH 5/5] Add jsdoc comment --- packages/@react-stately/table/src/useTableColumnResizeState.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/@react-stately/table/src/useTableColumnResizeState.ts b/packages/@react-stately/table/src/useTableColumnResizeState.ts index 514924a1a50..54021dd3aaf 100644 --- a/packages/@react-stately/table/src/useTableColumnResizeState.ts +++ b/packages/@react-stately/table/src/useTableColumnResizeState.ts @@ -53,6 +53,7 @@ export interface TableColumnResizeState { widths: Map, /** Key of the currently resizing column. */ resizingColumn: Key | null, + /** A reference to the table state. */ tableState: TableState }