@@ -24,6 +24,7 @@ const ReactDataTable = <TData,>(props: ReactDataTableProps<TData>) => {
2424 onEnter,
2525 totalRecords = table . getCoreRowModel ( ) . rows . length ,
2626 withoutHeaders = false ,
27+ withoutHeaderFilters = false ,
2728 } = props ;
2829
2930 const { pagination } = table . getState ( ) ;
@@ -82,87 +83,89 @@ const ReactDataTable = <TData,>(props: ReactDataTableProps<TData>) => {
8283 </ th >
8384 ) ) }
8485 </ tr >
85- < tr key = { `${ headerGroup . id } -col-filters` } >
86- { headerGroup . headers . map ( ( header ) => {
87- const {
88- column : {
89- columnDef : { meta } ,
90- } ,
91- } = header ;
86+ { ! withoutHeaderFilters && (
87+ < tr key = { `${ headerGroup . id } -col-filters` } >
88+ { headerGroup . headers . map ( ( header ) => {
89+ const {
90+ column : {
91+ columnDef : { meta } ,
92+ } ,
93+ } = header ;
94+
95+ return (
96+ < th key = { `${ header . id } -col-filter` } >
97+ { header . index === 0 && (
98+ < >
99+ { onEnter && (
100+ < FontAwesomeIcon
101+ style = { { cursor : "pointer" , marginBottom : "4px" , marginRight : "5px" } }
102+ icon = { faSearch }
103+ onClick = { ( ) => onEnter ( table . getState ( ) . columnFilters ) }
104+ />
105+ ) }
92106
93- return (
94- < th key = { `${ header . id } -col-filter` } >
95- { header . index === 0 && (
96- < >
97- { onEnter && (
98107 < FontAwesomeIcon
99108 style = { { cursor : "pointer" , marginBottom : "4px" , marginRight : "5px" } }
100- icon = { faSearch }
101- onClick = { ( ) => onEnter ( table . getState ( ) . columnFilters ) }
102- />
103- ) }
104-
105- < FontAwesomeIcon
106- style = { { cursor : "pointer" , marginBottom : "4px" , marginRight : "5px" } }
107- icon = { faTimes }
108- onClick = { ( ) => {
109- if ( onEnter ) {
110- onEnter ( [ ] ) ;
111- }
112-
113- table . resetColumnFilters ( true ) ;
114- } }
115- />
116- </ >
117- ) }
118-
119- { header . column . getCanFilter ( ) && (
120- < >
121- { meta ?. customFilter ? (
122- meta ?. customFilter ( header . column . getFilterValue ( ) , header . column . setFilterValue )
123- ) : meta ?. dropdownFilter ? (
124- < Input
125- type = "select"
126- onChange = { ( e ) => {
127- header . column . setFilterValue (
128- meta . dropdownFilter ?. options [ ( e . target as any as HTMLSelectElement ) . selectedIndex ] ?. value ??
129- e . target . value ,
130- ) ;
131- } }
132- onKeyUp = { ( { key } ) => {
133- if ( key === "Enter" && onEnter ) {
134- onEnter ( table . getState ( ) . columnFilters ) ;
135- }
136- } }
137- bsSize = "sm"
138- >
139- { meta . dropdownFilter . options . map ( ( { label, value, disabled } , i ) => (
140- < option key = { i } value = { value } disabled = { disabled } >
141- { label }
142- </ option >
143- ) ) }
144- </ Input >
145- ) : (
146- < Input
147- type = "text"
148- value = { ( header . column . getFilterValue ( ) as string ) ?? "" }
149- onChange = { ( e ) => {
150- header . column . setFilterValue ( e . target . value ) ;
151- } }
152- onKeyUp = { ( { key } ) => {
153- if ( key === "Enter" && onEnter ) {
154- onEnter ( table . getState ( ) . columnFilters ) ;
109+ icon = { faTimes }
110+ onClick = { ( ) => {
111+ if ( onEnter ) {
112+ onEnter ( [ ] ) ;
155113 }
114+
115+ table . resetColumnFilters ( true ) ;
156116 } }
157- bsSize = "sm"
158- > </ Input >
159- ) }
160- </ >
161- ) }
162- </ th >
163- ) ;
164- } ) }
165- </ tr >
117+ />
118+ </ >
119+ ) }
120+
121+ { header . column . getCanFilter ( ) && (
122+ < >
123+ { meta ?. customFilter ? (
124+ meta ?. customFilter ( header . column . getFilterValue ( ) , header . column . setFilterValue )
125+ ) : meta ?. dropdownFilter ? (
126+ < Input
127+ type = "select"
128+ onChange = { ( e ) => {
129+ header . column . setFilterValue (
130+ meta . dropdownFilter ?. options [ ( e . target as any as HTMLSelectElement ) . selectedIndex ] ?. value ??
131+ e . target . value ,
132+ ) ;
133+ } }
134+ onKeyUp = { ( { key } ) => {
135+ if ( key === "Enter" && onEnter ) {
136+ onEnter ( table . getState ( ) . columnFilters ) ;
137+ }
138+ } }
139+ bsSize = "sm"
140+ >
141+ { meta . dropdownFilter . options . map ( ( { label, value, disabled } , i ) => (
142+ < option key = { i } value = { value } disabled = { disabled } >
143+ { label }
144+ </ option >
145+ ) ) }
146+ </ Input >
147+ ) : (
148+ < Input
149+ type = "text"
150+ value = { ( header . column . getFilterValue ( ) as string ) ?? "" }
151+ onChange = { ( e ) => {
152+ header . column . setFilterValue ( e . target . value ) ;
153+ } }
154+ onKeyUp = { ( { key } ) => {
155+ if ( key === "Enter" && onEnter ) {
156+ onEnter ( table . getState ( ) . columnFilters ) ;
157+ }
158+ } }
159+ bsSize = "sm"
160+ > </ Input >
161+ ) }
162+ </ >
163+ ) }
164+ </ th >
165+ ) ;
166+ } ) }
167+ </ tr >
168+ ) }
166169 </ Fragment >
167170 ) ) }
168171 </ thead >
0 commit comments