react-antd-admin-panel
Version:
Easy prototyping admin panel using React and Antd
66 lines • 3.25 kB
JavaScript
import React, { useEffect, useState } from "react";
import { Radio as RadioAnt } from "antd";
import { Form } from 'antd';
const Radio = (props) => {
var _a, _b;
let model = props.model;
let [state, setState] = useState({ value: undefined });
let [loading, setLoading] = useState(false);
let [disabled, setDisabled] = useState((_a = model._disabled) !== null && _a !== void 0 ? _a : false);
model.tsxSetDisabled = (value) => setDisabled(value);
model.tsxClear = () => onClear();
const onChange = ({ value }, settings) => {
var _a;
model._defaultObject = { value: value };
if (model._formula)
model._formula.value(model, model._defaultObject);
if (!(settings === null || settings === void 0 ? void 0 : settings.ignoreOnChange)) {
(_a = model._onChange) === null || _a === void 0 ? void 0 : _a.call(model, model._defaultObject);
}
if (!(settings === null || settings === void 0 ? void 0 : settings.ignoreSetState)) {
setState({ value: value });
}
/** Debug purposes */
if (model._useCache && model._key) {
window.localStorage.setItem(`radio:${model._key}`, JSON.stringify(model._defaultObject));
}
};
const onUpdate = () => { };
const onClear = () => onChange({});
const onStart = () => {
if (model._defaultObject) {
let data = model._defaultObject;
if (model._formula)
model.value(data.value);
if (data.dataSource)
data.dataSource = dataSourceAlter(data.dataSource);
setTimeout(() => onChange(data, {
ignoreOnChange: model._ignoreOnChange,
ignoreSetState: model._ignoreSetState,
}), 0);
}
else {
onClear();
}
};
const dataSourceAlter = (data) => {
return data;
};
useEffect(() => {
if (model._useCache && model._key)
model.defaultFromCache();
onStart();
}, []);
return (
/** TODO */
React.createElement("div", { style: (_b = model._style) !== null && _b !== void 0 ? _b : {} },
React.createElement(Form.Item, { style: { marginBottom: 0 } },
React.createElement(RadioAnt.Group, { value: state.value, disabled: disabled || loading, onChange: (value) => onChange({ value: value.target.value }) }, model._fields.map((r) => {
var _a, _b, _c;
return React.createElement(RadioAnt, { key: r.getObject().value, value: r.getObject().value, style: { display: 'block', lineHeight: '30px' } }, (_c = (_b = (_a = r._render) === null || _a === void 0 ? void 0 : _a.call(r)) !== null && _b !== void 0 ? _b : r.getObject().title) !== null && _c !== void 0 ? _c : r.getObject().label);
})),
model._required && model._data === undefined && React.createElement("div", { style: { color: '#ff4d4f', fontSize: 14, fontWeight: 300, paddingTop: 6, paddingBottom: 12 } }, "Required field")
|| React.createElement("div", { style: { paddingTop: 12 } }))));
};
export default Radio;
//# sourceMappingURL=Radio.js.map