@@ -99,6 +99,43 @@ type ResourcesTableProps = {
99
99
defaultView ?: "proxy" | "internal" ;
100
100
} ;
101
101
102
+
103
+ const STORAGE_KEYS = {
104
+ PAGE_SIZE : 'datatable-page-size' ,
105
+ getTablePageSize : ( tableId ?: string ) =>
106
+ tableId ? `datatable-${ tableId } -page-size` : STORAGE_KEYS . PAGE_SIZE
107
+ } ;
108
+
109
+ const getStoredPageSize = ( tableId ?: string , defaultSize = 20 ) : number => {
110
+ if ( typeof window === 'undefined' ) return defaultSize ;
111
+
112
+ try {
113
+ const key = STORAGE_KEYS . getTablePageSize ( tableId ) ;
114
+ const stored = localStorage . getItem ( key ) ;
115
+ if ( stored ) {
116
+ const parsed = parseInt ( stored , 10 ) ;
117
+ if ( parsed > 0 && parsed <= 1000 ) {
118
+ return parsed ;
119
+ }
120
+ }
121
+ } catch ( error ) {
122
+ console . warn ( 'Failed to read page size from localStorage:' , error ) ;
123
+ }
124
+ return defaultSize ;
125
+ } ;
126
+
127
+ const setStoredPageSize = ( pageSize : number , tableId ?: string ) : void => {
128
+ if ( typeof window === 'undefined' ) return ;
129
+
130
+ try {
131
+ const key = STORAGE_KEYS . getTablePageSize ( tableId ) ;
132
+ localStorage . setItem ( key , pageSize . toString ( ) ) ;
133
+ } catch ( error ) {
134
+ console . warn ( 'Failed to save page size to localStorage:' , error ) ;
135
+ }
136
+ } ;
137
+
138
+
102
139
export default function ResourcesTable ( {
103
140
resources,
104
141
internalResources,
@@ -113,6 +150,13 @@ export default function ResourcesTable({
113
150
114
151
const api = createApiClient ( { env } ) ;
115
152
153
+ const [ proxyPageSize , setProxyPageSize ] = useState < number > ( ( ) =>
154
+ getStoredPageSize ( 'proxy-resources' , 20 )
155
+ ) ;
156
+ const [ internalPageSize , setInternalPageSize ] = useState < number > ( ( ) =>
157
+ getStoredPageSize ( 'internal-resources' , 20 )
158
+ ) ;
159
+
116
160
const [ isDeleteModalOpen , setIsDeleteModalOpen ] = useState ( false ) ;
117
161
const [ selectedResource , setSelectedResource ] =
118
162
useState < ResourceRow | null > ( ) ;
@@ -559,7 +603,7 @@ export default function ResourcesTable({
559
603
onGlobalFilterChange : setProxyGlobalFilter ,
560
604
initialState : {
561
605
pagination : {
562
- pageSize : 20 ,
606
+ pageSize : proxyPageSize ,
563
607
pageIndex : 0
564
608
}
565
609
} ,
@@ -582,7 +626,7 @@ export default function ResourcesTable({
582
626
onGlobalFilterChange : setInternalGlobalFilter ,
583
627
initialState : {
584
628
pagination : {
585
- pageSize : 20 ,
629
+ pageSize : internalPageSize ,
586
630
pageIndex : 0
587
631
}
588
632
} ,
@@ -593,6 +637,16 @@ export default function ResourcesTable({
593
637
}
594
638
} ) ;
595
639
640
+ const handleProxyPageSizeChange = ( newPageSize : number ) => {
641
+ setProxyPageSize ( newPageSize ) ;
642
+ setStoredPageSize ( newPageSize , 'proxy-resources' ) ;
643
+ } ;
644
+
645
+ const handleInternalPageSizeChange = ( newPageSize : number ) => {
646
+ setInternalPageSize ( newPageSize ) ;
647
+ setStoredPageSize ( newPageSize , 'internal-resources' ) ;
648
+ } ;
649
+
596
650
return (
597
651
< >
598
652
{ selectedResource && (
@@ -761,7 +815,10 @@ export default function ResourcesTable({
761
815
</ TableBody >
762
816
</ Table >
763
817
< div className = "mt-4" >
764
- < DataTablePagination table = { proxyTable } />
818
+ < DataTablePagination
819
+ table = { proxyTable }
820
+ onPageSizeChange = { handleProxyPageSizeChange }
821
+ />
765
822
</ div >
766
823
</ TabsContent >
767
824
< TabsContent value = "internal" >
@@ -861,6 +918,7 @@ export default function ResourcesTable({
861
918
< div className = "mt-4" >
862
919
< DataTablePagination
863
920
table = { internalTable }
921
+ onPageSizeChange = { handleInternalPageSizeChange }
864
922
/>
865
923
</ div >
866
924
</ TabsContent >
0 commit comments