UNPKG

747 BJavaScriptView Raw
1import React from "react";
2import { useDataObject } from "./context";
3import setDataObjectField from "./setDataObjectField";
4
5export 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}