1 | import React from "react";
|
2 | import { useDataObject } from "./context";
|
3 | import setDataObjectField from "./setDataObjectField";
|
4 |
|
5 | export default function bind(Component, options = {}) {
|
6 | const { valueProp = "value", valueConverter } = options;
|
7 |
|
8 | function BoundComponent({ field, ...other }, forwardRef) {
|
9 | const { currentRow, dataObject } = useDataObject();
|
10 | const props = { [valueProp]: currentRow[field], ...other };
|
11 |
|
12 | return (
|
13 | <Component
|
14 | ref={forwardRef}
|
15 | onChange={evt => {
|
16 | let value = typeof valueConverter === "function" ? valueConverter(evt) : evt;
|
17 |
|
18 | setDataObjectField(dataObject, field, value);
|
19 | }}
|
20 | {...props}
|
21 | />
|
22 | );
|
23 | }
|
24 |
|
25 | return React.forwardRef(BoundComponent);
|
26 | }
|