cabana/src/components/SignalLegendEntry/SignalForm.js

51 lines
1.2 KiB
JavaScript
Raw Normal View History

import React from 'react';
import FIELDS from './FIELDS';
import NumberField from './NumberField';
import StringField from './StringField';
import OptionField from './OptionField';
2022-03-18 09:11:42 -06:00
import MapField from './MapField';
2018-01-19 17:34:15 -07:00
const FieldMap = {
number: NumberField,
option: OptionField,
2022-03-18 09:11:42 -06:00
string: StringField,
map: MapField,
2018-01-19 17:34:15 -07:00
};
export default ({
signal,
onSignalRemove,
isExpanded,
getSignalEdited,
fieldError,
update
}) => (
<div className="signals-legend-entry-form">
{FIELDS.map((field) => {
const Node = FieldMap[field.type];
2022-03-18 09:11:42 -06:00
const valid = fieldError !== field.field;
return (
2022-03-18 09:11:42 -06:00
<div className="signals-legend-entry-form-field" key={field.field}>
<Node
fieldSpec={field}
signal={signal}
isExpanded={isExpanded}
signalEdited={getSignalEdited(field.field)}
updateField={update}
2022-03-18 09:11:42 -06:00
valid={valid}
/>
</div>
);
})}
<div className="signals-legend-entry-form-remove">
<button
className="button--tiny button--alpha"
onClick={() => onSignalRemove(signal)}
>
Remove Signal
</button>
</div>
</div>
);