in src/setter/mixed-setter/index.tsx [298:341]
private renderCurrentSetter(currentSetter?: SetterItem, extraProps?: object) {
const { className, field, setters, onSetterChange, ...restProps } = this.props;
if (!currentSetter) {
// TODO: use intl
if (restProps.value == null) {
return <span>NullValue</span>;
} else {
return <span>InvalidValue</span>;
}
}
const { setter, props } = currentSetter;
let setterProps: any = {};
let setterType: any;
let dynamicProps: any = {};
if (isDynamicSetter(setter)) {
setterType = setter.call(field, field);
// { componentName: string; props: object }
if (typeof setterType === 'object' && typeof setterType.componentName === 'string') {
dynamicProps = setterType.props || {};
setterType = setterType.componentName;
}
} else {
setterType = setter;
}
if (props) {
setterProps = props;
if (typeof setterProps === 'function') {
setterProps = setterProps(field);
}
}
return createSetterContent(setterType, {
fromMixedSetterSelect: this.fromMixedSetterSelect,
...shallowIntl(setterProps),
field,
...restProps,
...extraProps,
...dynamicProps,
onInitial: () => {
this.handleInitial(currentSetter);
},
});
}