@tomino/dynamic-form-semantic-ui
Version:
Semantic UI form renderer based on dynamic form generation
29 lines • 1.46 kB
JavaScript
import * as React from 'react';
import { observer } from 'mobx-react';
import { Radio } from 'semantic-ui-react';
import { css } from '../common';
import { processControl, getValues, getValue, setValue } from '../helpers';
import { DynamicComponent } from '../wrapper';
const formRadio = css `
margin-right: 12px;
margin-bottom: 6px;
`;
export const RadioComponent = props => {
const { source, disabled, error, owner, value, context } = processControl(props, false);
const [options, schemaSource, vertical] = getValues(props, 'options', 'schemaSource', 'vertical');
const radioValues = schemaSource ? owner.getSchema(schemaSource).$enum : options;
const handleToggleChange = React.useCallback((_, control) => {
setValue(props, context, control.value);
}, [context, props]);
return (React.createElement(DynamicComponent, Object.assign({}, props), radioValues.map((item) => (React.createElement(React.Fragment, { key: item.value },
React.createElement(Radio, { className: formRadio, name: source, label: item.text, disabled: disabled, value: item.value, checked: value === item.value, error: error, onChange: handleToggleChange }),
vertical && React.createElement("br", null))))));
};
export const RadioView = {
Component: observer(RadioComponent),
toString: (_, props, context) => {
const value = getValue(props, context);
return value;
}
};
//# sourceMappingURL=radio_view.js.map