in packages/editor-core/src/widgets/title/index.tsx [83:131]
render() {
// eslint-disable-next-line prefer-const
const { title, className } = this.props;
let _title: IPublicTypeTitleConfig;
if (title == null) {
return null;
}
if (isValidElement(title)) {
return title;
}
if (typeof title === 'string' || isI18nData(title)) {
_title = { label: title };
} else if (isTitleConfig(title)) {
_title = title;
} else {
_title = {
label: title,
};
}
const icon = _title.icon ? createIcon(_title.icon, { size: 20 }) : null;
let tip: any = null;
if (_title.tip) {
if (isValidElement(_title.tip) && _title.tip.type === Tip) {
tip = _title.tip;
} else {
const tipProps =
typeof _title.tip === 'object' && !(isValidElement(_title.tip) || isI18nData(_title.tip))
? _title.tip
: { children: _title.tip };
tip = <Tip {...tipProps} />;
}
}
return (
<span
className={classNames('lc-title', className, _title.className, {
'has-tip': !!tip,
'only-icon': !_title.label,
})}
onClick={this.handleClick}
>
{icon ? <b className="lc-title-icon">{icon}</b> : null}
{this.renderLabel(_title.label)}
{tip}
</span>
);
}