@@ -42,6 +42,65 @@ window.ReactDOM["default"] = window.ReactDOM;
42
42
}
43
43
} ) ;
44
44
45
+ ( function ( global , factory ) {
46
+ if ( typeof define === "function" && define . amd ) {
47
+ define ( [ "exports" ] , factory ) ;
48
+ } else if ( typeof exports !== "undefined" ) {
49
+ factory ( exports ) ;
50
+ } else {
51
+ var mod = {
52
+ exports : { }
53
+ } ;
54
+ factory ( mod . exports ) ;
55
+ global . array_intersect = mod . exports ;
56
+ }
57
+ } ) ( this , function ( exports ) {
58
+ "use strict" ;
59
+
60
+ exports . array_intersect = array_intersect ;
61
+
62
+ function array_intersect ( ) {
63
+ var i ,
64
+ all ,
65
+ shortest ,
66
+ nShortest ,
67
+ n ,
68
+ len ,
69
+ ret = [ ] ,
70
+ obj = { } ,
71
+ nOthers ;
72
+ nOthers = arguments . length - 1 ;
73
+ nShortest = arguments [ 0 ] . length ;
74
+ shortest = 0 ;
75
+ for ( i = 0 ; i <= nOthers ; i ++ ) {
76
+ n = arguments [ i ] . length ;
77
+ if ( n < nShortest ) {
78
+ shortest = i ;
79
+ nShortest = n ;
80
+ }
81
+ }
82
+
83
+ for ( i = 0 ; i <= nOthers ; i ++ ) {
84
+ n = i === shortest ? 0 : i || shortest ; //Read the shortest array first. Read the first array instead of the shortest
85
+ len = arguments [ n ] . length ;
86
+ for ( var j = 0 ; j < len ; j ++ ) {
87
+ var elem = arguments [ n ] [ j ] ;
88
+ if ( obj [ elem ] === i - 1 ) {
89
+ if ( i === nOthers ) {
90
+ ret . push ( elem ) ;
91
+ obj [ elem ] = 0 ;
92
+ } else {
93
+ obj [ elem ] = i ;
94
+ }
95
+ } else if ( i === 0 ) {
96
+ obj [ elem ] = 0 ;
97
+ }
98
+ }
99
+ }
100
+ return ret ;
101
+ }
102
+ } ) ;
103
+
45
104
( function ( global , factory ) {
46
105
if ( typeof define === "function" && define . amd ) {
47
106
define ( [ "exports" ] , factory ) ;
@@ -239,10 +298,20 @@ window.ReactDOM["default"] = window.ReactDOM;
239
298
} , {
240
299
key : 'render' ,
241
300
value : function render ( ) {
301
+ var value = '' ;
302
+ if ( typeof this . props . value != 'string' ) {
303
+ for ( var key in this . props . value ) {
304
+ value += key + ': ' + this . props . value [ key ] + ', ' ;
305
+ }
306
+ value = value . slice ( 0 , - 2 ) ;
307
+ } else {
308
+ value = this . props . value ;
309
+ }
310
+ value = value . trim ( ) ;
242
311
return _react [ 'default' ] . createElement ( 'input' , { type : 'text' ,
243
312
className : 'reactable-filter-input' ,
244
313
placeholder : this . props . placeholder ,
245
- value : this . props . value ,
314
+ value : value ,
246
315
onKeyUp : this . onChange . bind ( this ) ,
247
316
onChange : this . onChange . bind ( this ) } ) ;
248
317
}
@@ -960,17 +1029,17 @@ window.ReactDOM["default"] = window.ReactDOM;
960
1029
961
1030
( function ( global , factory ) {
962
1031
if ( typeof define === 'function' && define . amd ) {
963
- define ( [ 'exports' , 'react' , './lib/filter_props_from' , './lib/extract_data_from' , './unsafe' , './thead' , './th' , './tr' , './tfoot' , './paginator' ] , factory ) ;
1032
+ define ( [ 'exports' , 'react' , './lib/filter_props_from' , './lib/extract_data_from' , './lib/array_intersect' , './ unsafe', './thead' , './th' , './tr' , './tfoot' , './paginator' ] , factory ) ;
964
1033
} else if ( typeof exports !== 'undefined' ) {
965
- factory ( exports , require ( 'react' ) , require ( './lib/filter_props_from' ) , require ( './lib/extract_data_from' ) , require ( './unsafe' ) , require ( './thead' ) , require ( './th' ) , require ( './tr' ) , require ( './tfoot' ) , require ( './paginator' ) ) ;
1034
+ factory ( exports , require ( 'react' ) , require ( './lib/filter_props_from' ) , require ( './lib/extract_data_from' ) , require ( './lib/array_intersect' ) , require ( './ unsafe') , require ( './thead' ) , require ( './th' ) , require ( './tr' ) , require ( './tfoot' ) , require ( './paginator' ) ) ;
966
1035
} else {
967
1036
var mod = {
968
1037
exports : { }
969
1038
} ;
970
- factory ( mod . exports , global . React , global . filter_props_from , global . extract_data_from , global . unsafe , global . thead , global . th , global . tr , global . tfoot , global . paginator ) ;
1039
+ factory ( mod . exports , global . React , global . filter_props_from , global . extract_data_from , global . array_intersect , global . unsafe , global . thead , global . th , global . tr , global . tfoot , global . paginator ) ;
971
1040
global . table = mod . exports ;
972
1041
}
973
- } ) ( this , function ( exports , _react , _libFilter_props_from , _libExtract_data_from , _unsafe , _thead , _th , _tr , _tfoot , _paginator ) {
1042
+ } ) ( this , function ( exports , _react , _libFilter_props_from , _libExtract_data_from , _libArray_intersect , _unsafe , _thead , _th , _tr , _tfoot , _paginator ) {
974
1043
'use strict' ;
975
1044
976
1045
var _extends = Object . assign || function ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = arguments [ i ] ; for ( var key in source ) { if ( Object . prototype . hasOwnProperty . call ( source , key ) ) { target [ key ] = source [ key ] ; } } } return target ; } ;
@@ -1204,24 +1273,90 @@ window.ReactDOM["default"] = window.ReactDOM;
1204
1273
} , {
1205
1274
key : 'applyFilter' ,
1206
1275
value : function applyFilter ( filter , children ) {
1207
- // Helper function to apply filter text to a list of table rows
1208
- filter = filter . toLowerCase ( ) ;
1209
- var matchedChildren = [ ] ;
1276
+ if ( typeof filter === 'string' ) {
1277
+ // Helper function to apply filter text to a list of table rows
1278
+ filter = filter . toLowerCase ( ) ;
1279
+ var matchedChildren = [ ] ;
1210
1280
1211
- for ( var i = 0 ; i < children . length ; i ++ ) {
1212
- var data = children [ i ] . props . data ;
1281
+ for ( var i = 0 ; i < children . length ; i ++ ) {
1282
+ var data = children [ i ] . props . data ;
1213
1283
1214
- for ( var j = 0 ; j < this . props . filterable . length ; j ++ ) {
1215
- var filterColumn = this . props . filterable [ j ] ;
1284
+ for ( var j = 0 ; j < this . props . filterable . length ; j ++ ) {
1285
+ var filterColumn = this . props . filterable [ j ] ;
1216
1286
1217
- if ( typeof data [ filterColumn ] !== 'undefined' && ( 0 , _libExtract_data_from . extractDataFrom ) ( data , filterColumn ) . toString ( ) . toLowerCase ( ) . indexOf ( filter ) > - 1 ) {
1218
- matchedChildren . push ( children [ i ] ) ;
1219
- break ;
1287
+ if ( typeof data [ filterColumn ] !== 'undefined' && ( 0 , _libExtract_data_from . extractDataFrom ) ( data , filterColumn ) . toString ( ) . toLowerCase ( ) . indexOf ( filter ) > - 1 ) {
1288
+ matchedChildren . push ( children [ i ] ) ;
1289
+ break ;
1290
+ }
1220
1291
}
1221
1292
}
1293
+
1294
+ return matchedChildren ;
1295
+ } else {
1296
+ var _ret = ( function ( ) {
1297
+
1298
+ var filterCount = Object . keys ( filter ) . length ;
1299
+ var matchedChildren = [ ] ;
1300
+
1301
+ for ( var filterColumn in filter ) {
1302
+ var val = filter [ filterColumn ] ;
1303
+ for ( var i = 0 ; i < children . length ; i ++ ) {
1304
+ var data = children [ i ] . props . data ;
1305
+ if ( typeof data [ filterColumn ] !== 'undefined' && ( 0 , _libExtract_data_from . extractDataFrom ) ( data , filterColumn ) . toString ( ) . toLowerCase ( ) . indexOf ( val ) > - 1 ) {
1306
+ matchedChildren . push ( children [ i ] ) ;
1307
+ }
1308
+ }
1309
+ }
1310
+
1311
+ if ( filterCount > 1 ) {
1312
+ var result = [ ] ;
1313
+ return {
1314
+ v : matchedChildren . map ( function ( children ) {
1315
+ var occurrences = matchedChildren . filter ( function ( value ) {
1316
+ return value . key === children . key ;
1317
+ } ) . length ;
1318
+ if ( occurrences == filterCount ) {
1319
+ return children ;
1320
+ }
1321
+ } )
1322
+ } ;
1323
+ } else {
1324
+ return {
1325
+ v : matchedChildren
1326
+ } ;
1327
+ }
1328
+ } ) ( ) ;
1329
+
1330
+ if ( typeof _ret === 'object' ) return _ret . v ;
1331
+ }
1332
+ }
1333
+ } , {
1334
+ key : 'onFilter' ,
1335
+ value : function onFilter ( filters ) {
1336
+ if ( typeof filters === 'string' && filters . indexOf ( ':' ) != - 1 ) {
1337
+ ( function ( ) {
1338
+ var filterObj = { } ;
1339
+ filters = filters . trim ( ) ;
1340
+ var col = '' ;
1341
+ var val = '' ;
1342
+ filters = filters . split ( ',' ) ;
1343
+
1344
+ filters . map ( function ( filter ) {
1345
+ filter = filter . split ( ':' ) ;
1346
+ if ( filter [ 0 ] ) {
1347
+ col = filter [ 0 ] . trim ( ) ;
1348
+ }
1349
+ if ( filter [ 1 ] ) {
1350
+ val = filter [ 1 ] . trim ( ) ;
1351
+ }
1352
+ filterObj [ col ] = val ;
1353
+ } ) ;
1354
+
1355
+ filters = filterObj ;
1356
+ } ) ( ) ;
1222
1357
}
1223
1358
1224
- return matchedChildren ;
1359
+ this . setState ( { filter : filters } ) ;
1225
1360
}
1226
1361
} , {
1227
1362
key : 'sortByCurrentSort' ,
@@ -1284,7 +1419,7 @@ window.ReactDOM["default"] = window.ReactDOM;
1284
1419
this . setState ( { currentSort : currentSort } ) ;
1285
1420
this . sortByCurrentSort ( ) ;
1286
1421
1287
- if ( this . props . onSort ) {
1422
+ if ( typeof this . props . onSort === 'function' ) {
1288
1423
this . props . onSort ( currentSort ) ;
1289
1424
}
1290
1425
}
@@ -1410,9 +1545,7 @@ window.ReactDOM["default"] = window.ReactDOM;
1410
1545
props ,
1411
1546
columns && columns . length > 0 ? _react [ 'default' ] . createElement ( _thead . Thead , { columns : columns ,
1412
1547
filtering : filtering ,
1413
- onFilter : function ( filter ) {
1414
- _this . setState ( { filter : filter } ) ;
1415
- } ,
1548
+ onFilter : this . onFilter . bind ( this ) ,
1416
1549
filterPlaceholder : this . props . filterPlaceholder ,
1417
1550
currentFilter : this . state . filter ,
1418
1551
sort : this . state . currentSort ,
0 commit comments