@@ -6,6 +6,10 @@ import { derived, writable, type Readable, type Writable } from 'svelte/store';
6
6
import type { PluginInitTableState } from '../createViewModel' ;
7
7
import type { DataBodyCell } from '../bodyCells' ;
8
8
9
+ export interface ColumnFiltersConfig {
10
+ serverSide ?: boolean ;
11
+ }
12
+
9
13
export interface ColumnFiltersState < Item > {
10
14
filterValues : Writable < Record < string , unknown > > ;
11
15
preFilteredRows : Readable < BodyRow < Item > [ ] > ;
@@ -89,7 +93,7 @@ const getFilteredRows = <Item, Row extends BodyRow<Item>>(
89
93
} ;
90
94
91
95
export const addColumnFilters =
92
- < Item > ( ) : TablePlugin <
96
+ < Item > ( { serverSide = false } : ColumnFiltersConfig = { } ) : TablePlugin <
93
97
Item ,
94
98
ColumnFiltersState < Item > ,
95
99
ColumnFiltersColumnOptions < Item > ,
@@ -105,9 +109,14 @@ export const addColumnFilters =
105
109
const deriveRows : DeriveRowsFn < Item > = ( rows ) => {
106
110
return derived ( [ rows , filterValues ] , ( [ $rows , $filterValues ] ) => {
107
111
preFilteredRows . set ( $rows ) ;
108
- const _filteredRows = getFilteredRows ( $rows , $filterValues , columnOptions ) ;
109
- filteredRows . set ( _filteredRows ) ;
110
- return _filteredRows ;
112
+ if ( ! serverSide ) {
113
+ const _filteredRows = getFilteredRows ( $rows , $filterValues , columnOptions ) ;
114
+ filteredRows . set ( _filteredRows ) ;
115
+ return _filteredRows ;
116
+ } else {
117
+ filteredRows . set ( $rows ) ;
118
+ return $rows ;
119
+ }
111
120
} ) ;
112
121
} ;
113
122
0 commit comments