mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-14 21:12:53 +00:00
54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
import { IPublicTypeIconType, IPublicTypeTitleContent, TipContent } from '@alilc/lowcode-types';
|
|
import { isI18nData, isTitleConfig } from '@alilc/lowcode-utils';
|
|
import { isValidElement } from 'react';
|
|
|
|
export function composeTitle(title?: IPublicTypeTitleContent, icon?: IPublicTypeIconType, tip?: TipContent, tipAsTitle?: boolean, noIcon?: boolean) {
|
|
let _title: IPublicTypeTitleContent | undefined;
|
|
if (!title) {
|
|
_title = {};
|
|
if (!icon || tipAsTitle) {
|
|
_title = {
|
|
label: tip,
|
|
};
|
|
tip = undefined;
|
|
}
|
|
} else {
|
|
_title = title;
|
|
}
|
|
|
|
if (icon || tip) {
|
|
if (typeof _title !== 'object' || isValidElement(_title) || isI18nData(_title)) {
|
|
if (isValidElement(_title)) {
|
|
if (_title.type === 'svg' || _title.type.getIcon) {
|
|
if (!icon) {
|
|
icon = _title;
|
|
}
|
|
if (tipAsTitle) {
|
|
_title = tip;
|
|
tip = null;
|
|
} else {
|
|
_title = undefined;
|
|
}
|
|
}
|
|
}
|
|
_title = {
|
|
label: _title,
|
|
icon,
|
|
tip,
|
|
};
|
|
} else {
|
|
_title = {
|
|
..._title,
|
|
icon,
|
|
tip,
|
|
};
|
|
}
|
|
}
|
|
if (isTitleConfig(_title) && noIcon) {
|
|
if (!isValidElement(_title)) {
|
|
_title.icon = undefined;
|
|
}
|
|
}
|
|
return _title;
|
|
}
|