55 flexRender ,
66 type ColumnDef ,
77 type CellContext ,
8+ type ColumnResizeMode ,
89} from "@tanstack/react-table" ;
910import { useVirtualizer } from "@tanstack/react-virtual" ;
1011import { formatDurationMilliseconds , MachinePresetName } from "@trigger.dev/core/v3" ;
@@ -663,9 +664,13 @@ export const TSQLResultsTable = memo(function TSQLResultsTable({
663664 ) ;
664665
665666 // Initialize TanStack Table
667+ // Column resize mode: 'onChange' for real-time feedback, 'onEnd' for performance
668+ const columnResizeMode : ColumnResizeMode = "onChange" ;
669+
666670 const table = useReactTable ( {
667671 data : rows ,
668672 columns : columnDefs ,
673+ columnResizeMode,
669674 getCoreRowModel : getCoreRowModel ( ) ,
670675 } ) ;
671676
@@ -705,6 +710,7 @@ export const TSQLResultsTable = memo(function TSQLResultsTable({
705710 return (
706711 < th
707712 key = { header . id }
713+ className = "group/header relative"
708714 style = { {
709715 display : "flex" ,
710716 width : header . getSize ( ) ,
@@ -716,6 +722,18 @@ export const TSQLResultsTable = memo(function TSQLResultsTable({
716722 >
717723 { flexRender ( header . column . columnDef . header , header . getContext ( ) ) }
718724 </ HeaderCellContent >
725+ { /* Column resizer */ }
726+ < div
727+ onDoubleClick = { ( ) => header . column . resetSize ( ) }
728+ onMouseDown = { header . getResizeHandler ( ) }
729+ onTouchStart = { header . getResizeHandler ( ) }
730+ className = { cn (
731+ "absolute right-0 top-0 h-full w-1 cursor-col-resize touch-none select-none" ,
732+ "opacity-0 group-hover/header:opacity-100" ,
733+ "bg-charcoal-600 hover:bg-primary" ,
734+ header . column . getIsResizing ( ) && "bg-primary opacity-100"
735+ ) }
736+ />
719737 </ th >
720738 ) ;
721739 } ) }
@@ -759,6 +777,7 @@ export const TSQLResultsTable = memo(function TSQLResultsTable({
759777 return (
760778 < th
761779 key = { header . id }
780+ className = "group/header relative"
762781 style = { {
763782 display : "flex" ,
764783 width : header . getSize ( ) ,
@@ -770,6 +789,18 @@ export const TSQLResultsTable = memo(function TSQLResultsTable({
770789 >
771790 { flexRender ( header . column . columnDef . header , header . getContext ( ) ) }
772791 </ HeaderCellContent >
792+ { /* Column resizer */ }
793+ < div
794+ onDoubleClick = { ( ) => header . column . resetSize ( ) }
795+ onMouseDown = { header . getResizeHandler ( ) }
796+ onTouchStart = { header . getResizeHandler ( ) }
797+ className = { cn (
798+ "absolute right-0 top-0 h-full w-1 cursor-col-resize touch-none select-none" ,
799+ "opacity-0 group-hover/header:opacity-100" ,
800+ "bg-charcoal-600 hover:bg-primary" ,
801+ header . column . getIsResizing ( ) && "bg-primary opacity-100"
802+ ) }
803+ />
773804 </ th >
774805 ) ;
775806 } ) }
0 commit comments