From 28b69ae901bee42eea9a6dc6b54a941de3ab48fe Mon Sep 17 00:00:00 2001 From: "lihao.ylh" Date: Mon, 22 Nov 2021 20:41:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20vc=20tip=20?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=B2=A1=E6=9C=89=E7=94=9F=E6=95=88=E7=9A=84?= =?UTF-8?q?=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/bundle/upgrade-metadata.ts | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/packages/vision-polyfill/src/bundle/upgrade-metadata.ts b/packages/vision-polyfill/src/bundle/upgrade-metadata.ts index 953e85062..717b906d5 100644 --- a/packages/vision-polyfill/src/bundle/upgrade-metadata.ts +++ b/packages/vision-polyfill/src/bundle/upgrade-metadata.ts @@ -29,6 +29,11 @@ export enum DISPLAY_TYPE { ENTRY = 'entry', } +type Tip = string | { + content?: string; + url?: string; + [key: string]: string | undefined; +}; // from vision 5.4 export interface OldPropConfig { /** @@ -45,10 +50,7 @@ export interface OldPropConfig { */ name: string; // => title?: string; // => - tip?: { - content?: string; - url?: string; - }; + tip?: Tip; defaultValue?: any; // => extraProps.defaultValue initialValue?: any | ((value: any, defaultValue: any) => any); // => initials.initialValue initial?: (value: any, defaultValue: any) => any; // => initials.initialValue @@ -256,6 +258,21 @@ function formatPropValue(originalValue: any, value: any) { return value; } +function isTipString(tip: Tip): tip is string { + return typeof tip === 'string'; +} + +function getTipAttr(tip: Tip, attrName: string, decorator: (originalValue: string) => string = v => v): string { + if (isTipString(tip)) { + return attrName === 'content' ? decorator(tip) : ''; + } + return decorator(tip[attrName]!); +} + +function getTipContent(tip: Tip, name: string): string { + return getTipAttr(tip, 'content', (v) => `属性:${name} | 说明:${v}`); +} + export function upgradePropConfig(config: OldPropConfig, collector: ConfigCollector) { const { type, @@ -301,14 +318,14 @@ export function upgradePropConfig(config: OldPropConfig, collector: ConfigCollec if (typeof title !== 'object' || isI18nData(title) || isValidElement(title)) { newConfig.title = { label: title, - tip: tip.content, - docUrl: tip.url, + tip: getTipContent(tip, name), + docUrl: getTipAttr(tip, 'url'), }; } else { newConfig.title = { ...(title as any), - tip: tip.content, - docUrl: tip.url, + tip: getTipContent(tip, name), + docUrl: getTipAttr(tip, 'url'), }; } }