private renderCurrentSetter()

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);
      },
    });
  }