File tree Expand file tree Collapse file tree
packages/features/data-table Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -74,6 +74,7 @@ interface DataTableProviderProps {
7474 children : React . ReactNode ;
7575 ctaContainerClassName ?: string ;
7676 defaultPageSize ?: number ;
77+ segments ?: FilterSegmentOutput [ ] ;
7778}
7879
7980export function DataTableProvider ( {
@@ -82,6 +83,7 @@ export function DataTableProvider({
8283 useSegments = useSegmentsNoop ,
8384 defaultPageSize = DEFAULT_PAGE_SIZE ,
8485 ctaContainerClassName = CTA_CONTAINER_CLASS_NAME ,
86+ segments : providedSegments ,
8587} : DataTableProviderProps ) {
8688 const filterToOpen = useRef < string | undefined > ( undefined ) ;
8789 const [ activeFilters , setActiveFilters ] = useQueryState ( "activeFilters" , activeFiltersParser ) ;
@@ -182,6 +184,7 @@ export function DataTableProvider({
182184 setPageSize,
183185 setPageIndex,
184186 setSearchTerm,
187+ segments : providedSegments ,
185188 }
186189 ) ;
187190
Original file line number Diff line number Diff line change @@ -26,15 +26,24 @@ export const useSegments: UseSegments = ({
2626 setPageSize,
2727 setPageIndex,
2828 setSearchTerm,
29+ segments : providedSegments ,
2930} ) => {
30- const { data : rawSegments , isFetching : isFetchingSegments } = trpc . viewer . filterSegments . list . useQuery ( {
31- tableIdentifier,
32- } ) ;
31+ const { data : rawSegments , isFetching : isFetchingSegments } = trpc . viewer . filterSegments . list . useQuery (
32+ {
33+ tableIdentifier,
34+ } ,
35+ {
36+ enabled : ! providedSegments , // Only fetch if segments are not provided
37+ }
38+ ) ;
3339
3440 // Recalculate date ranges based on the current timestamp
3541 const segments = useMemo ( ( ) => {
36- if ( ! rawSegments ) return [ ] ;
37- return rawSegments . map ( ( segment ) => ( {
42+ const segmentsSource = providedSegments || rawSegments ;
43+
44+ if ( ! segmentsSource ) return [ ] ;
45+
46+ return segmentsSource . map ( ( segment ) => ( {
3847 ...segment ,
3948 activeFilters : segment . activeFilters . map ( ( filter ) => {
4049 if ( isDateRangeFilterValue ( filter . v ) ) {
@@ -46,7 +55,7 @@ export const useSegments: UseSegments = ({
4655 return filter ;
4756 } ) ,
4857 } ) ) ;
49- } , [ rawSegments ] ) ;
58+ } , [ rawSegments , providedSegments ] ) ;
5059
5160 const selectedSegment = useMemo (
5261 ( ) => segments ?. find ( ( segment ) => segment . id === segmentId ) ,
Original file line number Diff line number Diff line change @@ -270,7 +270,7 @@ export const ZSegmentStorage = z.record(
270270
271271export type UseSegments = ( props : UseSegmentsProps ) => UseSegmentsReturn ;
272272
273- type UseSegmentsProps = {
273+ export type UseSegmentsProps = {
274274 tableIdentifier : string ;
275275 activeFilters : ActiveFilters ;
276276 sorting : SortingState ;
@@ -288,9 +288,10 @@ type UseSegmentsProps = {
288288 setPageSize : ( pageSize : number ) => void ;
289289 setPageIndex : ( pageIndex : number ) => void ;
290290 setSearchTerm : ( searchTerm : string | null ) => void ;
291+ segments ?: FilterSegmentOutput [ ] ;
291292} ;
292293
293- type UseSegmentsReturn = {
294+ export type UseSegmentsReturn = {
294295 segments : FilterSegmentOutput [ ] ;
295296 selectedSegment : FilterSegmentOutput | undefined ;
296297 canSaveSegment : boolean ;
You can’t perform that action at this time.
0 commit comments