-
Notifications
You must be signed in to change notification settings - Fork 381
Expand file tree
/
Copy pathMockedTableChanges.js
More file actions
57 lines (50 loc) · 1.38 KB
/
MockedTableChanges.js
File metadata and controls
57 lines (50 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { TableContext } from '../components/Table/Table';
import { TableHeader } from '../components/Table';
export const withContext =
({ context = {}, contextType = {} }) =>
(WrappedComponent) => {
class WithContext extends Component {
getChildContext() {
return context;
}
render() {
return <WrappedComponent>{this.props.children}</WrappedComponent>;
}
}
WithContext.propTypes = {
children: PropTypes.node
};
WithContext.defaultProps = {
children: null
};
WithContext.WrappedComponent = WrappedComponent;
WithContext.childContextTypes = contextType;
return WithContext;
};
export const TableProvider = withContext({
context: {
columns: [],
renderers: {
header: {
wrapper: 'thead',
row: 'tr',
cell: 'th'
}
}
},
contextType: { columns: PropTypes.any, renderers: PropTypes.any }
})('table');
const MockedTableChanges = ({ updateFunc = () => undefined, columns = [] }) => (
<TableContext.Provider value={{ updateHeaderData: updateFunc }}>
<TableProvider>
<TableHeader headerRows={columns} />
</TableProvider>
</TableContext.Provider>
);
MockedTableChanges.propTypes = {
updateFunc: PropTypes.func,
columns: PropTypes.array
};
export default MockedTableChanges;