@@ -19,12 +19,20 @@ const withContext = (Base) => {
19
19
constructor ( props ) {
20
20
super ( props ) ;
21
21
DataContext = createDataContext ( props . data ) ;
22
- SelectionContext = createSelectionContext ( dataOperator ) ;
23
- SortContext = createSortContext ( dataOperator , this . isRemoteSort , this . handleSortChange ) ;
22
+
23
+ if ( props . columns . filter ( col => col . sort ) . length > 0 ) {
24
+ SortContext = createSortContext ( dataOperator , this . isRemoteSort , this . handleSortChange ) ;
25
+ }
26
+
27
+ if ( props . selectRow ) {
28
+ SelectionContext = createSelectionContext ( dataOperator ) ;
29
+ }
30
+
24
31
if ( props . cellEdit && props . cellEdit . createContext ) {
25
32
CellEditContext = props . cellEdit . createContext (
26
33
_ , dataOperator , this . isRemoteCellEdit , this . handleCellChange ) ;
27
34
}
35
+
28
36
if ( props . filter ) {
29
37
FilterContext = props . filter . createContext (
30
38
_ , this . isRemoteFiltering , this . handleRemoteFilterChange ) ;
@@ -37,67 +45,108 @@ const withContext = (Base) => {
37
45
}
38
46
}
39
47
40
- renderBase ( baseProps ) {
41
- return ( rootProps , cellEditProps , filterProps ) => (
48
+ renderBase ( ) {
49
+ return (
50
+ rootProps ,
51
+ cellEditProps ,
52
+ filterProps ,
53
+ sortProps ,
54
+ selectionProps
55
+ ) => (
56
+ < Base
57
+ { ...this . props }
58
+ { ...selectionProps }
59
+ { ...sortProps }
60
+ { ...cellEditProps }
61
+ { ...filterProps }
62
+ data = { rootProps . getData ( filterProps , sortProps ) }
63
+ />
64
+ ) ;
65
+ }
66
+
67
+ renderWithSelectionCtx ( base , baseProps ) {
68
+ return (
69
+ rootProps ,
70
+ cellEditProps ,
71
+ filterProps ,
72
+ sortProps
73
+ ) => (
74
+ < SelectionContext . Provider
75
+ { ...baseProps }
76
+ selectRow = { this . props . selectRow }
77
+ data = { rootProps . getData ( filterProps , sortProps ) }
78
+ >
79
+ < SelectionContext . Consumer >
80
+ {
81
+ selectionProps => base (
82
+ rootProps ,
83
+ cellEditProps ,
84
+ filterProps ,
85
+ sortProps ,
86
+ selectionProps
87
+ )
88
+ }
89
+ </ SelectionContext . Consumer >
90
+ </ SelectionContext . Provider >
91
+ ) ;
92
+ }
93
+
94
+ renderWithSortCtx ( base , baseProps ) {
95
+ return (
96
+ rootProps ,
97
+ cellEditProps ,
98
+ filterProps
99
+ ) => (
42
100
< SortContext . Provider
43
101
{ ...baseProps }
44
102
ref = { n => this . sortContext = n }
45
103
defaultSorted = { this . props . defaultSorted }
46
104
defaultSortDirection = { this . props . defaultSortDirection }
47
- data = { filterProps ? filterProps . data : rootProps . data }
105
+ data = { rootProps . getData ( filterProps ) }
48
106
>
49
107
< SortContext . Consumer >
50
108
{
51
- sortProps => (
52
- < SelectionContext . Provider
53
- { ...baseProps }
54
- selectRow = { this . props . selectRow }
55
- data = { sortProps . data }
56
- >
57
- < SelectionContext . Consumer >
58
- {
59
- selectionProps => (
60
- < Base
61
- { ...this . props }
62
- { ...selectionProps }
63
- { ...sortProps }
64
- { ...cellEditProps }
65
- { ...filterProps }
66
- data = { sortProps . data }
67
- />
68
- )
69
- }
70
- </ SelectionContext . Consumer >
71
- </ SelectionContext . Provider >
109
+ sortProps => base (
110
+ rootProps ,
111
+ cellEditProps ,
112
+ filterProps ,
113
+ sortProps
72
114
)
73
115
}
74
116
</ SortContext . Consumer >
75
117
</ SortContext . Provider >
76
118
) ;
77
119
}
78
120
79
- renderWithFilter ( base , baseProps ) {
80
- return ( rootProps , cellEditprops ) => (
121
+ renderWithFilterCtx ( base , baseProps ) {
122
+ return (
123
+ rootProps ,
124
+ cellEditprops
125
+ ) => (
81
126
< FilterContext . Provider
82
127
{ ...baseProps }
83
128
ref = { n => this . filterContext = n }
84
- data = { rootProps . data }
129
+ data = { rootProps . getData ( ) }
85
130
>
86
131
< FilterContext . Consumer >
87
132
{
88
- filterProps => base ( rootProps , cellEditprops , filterProps )
133
+ filterProps => base (
134
+ rootProps ,
135
+ cellEditprops ,
136
+ filterProps
137
+ )
89
138
}
90
139
</ FilterContext . Consumer >
91
140
</ FilterContext . Provider >
92
141
) ;
93
142
}
94
143
95
- renderWithCellEdit ( base , baseProps ) {
144
+ renderWithCellEditCtx ( base , baseProps ) {
96
145
return rootProps => (
97
146
< CellEditContext . Provider
98
147
{ ...baseProps }
99
148
cellEdit = { this . props . cellEdit }
100
- data = { rootProps . data }
149
+ data = { rootProps . getData ( ) }
101
150
>
102
151
< CellEditContext . Consumer >
103
152
{
@@ -112,14 +161,22 @@ const withContext = (Base) => {
112
161
const { keyField, columns } = this . props ;
113
162
const baseProps = { keyField, columns } ;
114
163
115
- let base = this . renderBase ( baseProps ) ;
164
+ let base = this . renderBase ( ) ;
165
+
166
+ if ( SelectionContext ) {
167
+ base = this . renderWithSelectionCtx ( base , baseProps ) ;
168
+ }
169
+
170
+ if ( SortContext ) {
171
+ base = this . renderWithSortCtx ( base , baseProps ) ;
172
+ }
116
173
117
174
if ( FilterContext ) {
118
- base = this . renderWithFilter ( base , baseProps ) ;
175
+ base = this . renderWithFilterCtx ( base , baseProps ) ;
119
176
}
120
177
121
178
if ( CellEditContext ) {
122
- base = this . renderWithCellEdit ( base , baseProps ) ;
179
+ base = this . renderWithCellEditCtx ( base , baseProps ) ;
123
180
}
124
181
125
182
return (
0 commit comments