diff --git a/source/Component/Localization/Localization.tsx b/source/Component/Localization/Localization.tsx index 1a16ee7..bc3c619 100644 --- a/source/Component/Localization/Localization.tsx +++ b/source/Component/Localization/Localization.tsx @@ -9,7 +9,7 @@ const LanguageDataBase = { EN_US, ZH_CN } -type AllI18nKeys = keyof typeof EN_US; +type AllI18nKeys = (keyof typeof EN_US) | string; interface ILocalizationProps { className?: string; @@ -17,14 +17,17 @@ interface ILocalizationProps { options?: Record; } -function I18N(language: Language | IMixinSettingProps, key: keyof typeof EN_US, values?: Record) { +function I18N(language: Language | IMixinSettingProps, key: AllI18nKeys, values?: Record) { let lang: Language; if (typeof language === "string") { lang = language; } else { lang = language.setting?.language ?? "EN_US"; } - let i18nValue = LanguageDataBase[lang][key]; + let languageDataBase = LanguageDataBase[lang]; + if (!languageDataBase) languageDataBase = LanguageDataBase["EN_US"]; + let i18nValue = languageDataBase[key as keyof typeof EN_US]; + if (!i18nValue) i18nValue = key; if (values) { for (let valueKey in values) { i18nValue = i18nValue.replaceAll(new RegExp(`\\{\\s*${valueKey}\\s*\\}`, "g"), values[valueKey]); diff --git a/source/Component/ObjectPicker/ObjectPicker.scss b/source/Component/ObjectPicker/ObjectPicker.scss index c2ae567..9e202f7 100644 --- a/source/Component/ObjectPicker/ObjectPicker.scss +++ b/source/Component/ObjectPicker/ObjectPicker.scss @@ -1,4 +1,5 @@ @import "../Theme/Theme.scss"; +@import "../PickerList/RainbowBg.scss"; $line-min-height: 24px; diff --git a/source/Component/ObjectPicker/ObjectPicker.tsx b/source/Component/ObjectPicker/ObjectPicker.tsx index 5566212..8670868 100644 --- a/source/Component/ObjectPicker/ObjectPicker.tsx +++ b/source/Component/ObjectPicker/ObjectPicker.tsx @@ -97,20 +97,8 @@ class ObjectPicker extends Component
@@ -145,7 +137,7 @@ class ObjectPicker extends Component { - disPlayInfo.needI18n ? + disPlayInfo.internal ? : {disPlayInfo.name} } diff --git a/source/Component/PickerList/PickerList.scss b/source/Component/PickerList/PickerList.scss index c961877..8f75819 100644 --- a/source/Component/PickerList/PickerList.scss +++ b/source/Component/PickerList/PickerList.scss @@ -1,3 +1,5 @@ +@import "./RainbowBg.scss"; + div.picker-list-root { min-width: 200px; height: 100%; diff --git a/source/Component/PickerList/PickerList.tsx b/source/Component/PickerList/PickerList.tsx index 95cab17..9533221 100644 --- a/source/Component/PickerList/PickerList.tsx +++ b/source/Component/PickerList/PickerList.tsx @@ -12,7 +12,8 @@ interface IDisplayInfo { color: string; icon: string; name: string; - needI18n?: boolean; + internal: boolean; + allLabel: boolean; }; interface IDisplayItem { @@ -21,12 +22,23 @@ interface IDisplayItem { mark?: boolean; } -function getObjectDisplayInfo(item: IPickerListItem): IDisplayInfo { +function getObjectDisplayInfo(item?: IPickerListItem): IDisplayInfo { - let color: number[] = []; + if (!item) { + return { + color: "transparent", + icon: "Label", + name: "Input.Error.Select", + internal: true, + allLabel: false + } + } + + let color: number[] | string = []; let icon: string = "tag"; let name: string = ""; - let needI18n: boolean = false; + let internal: boolean = false; + let allLabel: boolean = false; if (item instanceof Range) { icon = "CubeShape" @@ -35,6 +47,7 @@ function getObjectDisplayInfo(item: IPickerListItem): IDisplayInfo { icon = "WebAppBuilderFragment" } if (item instanceof CtrlObject) { + color = []; color[0] = Math.round(item.color[0] * 255); color[1] = Math.round(item.color[1] * 255); color[2] = Math.round(item.color[2] * 255); @@ -43,7 +56,9 @@ function getObjectDisplayInfo(item: IPickerListItem): IDisplayInfo { if (item instanceof Label) { if (item.isBuildIn) { - needI18n = true; + internal = true; + allLabel = true; + color = "transparent"; if (item.id === "AllRange") { icon = "ProductList"; name = "Build.In.Label.Name.All.Range"; @@ -60,11 +75,16 @@ function getObjectDisplayInfo(item: IPickerListItem): IDisplayInfo { } } + if (Array.isArray(color)) { + color = `rgb(${color[0]},${color[1]},${color[2]})`; + } + return { - color: needI18n ? "transparent" : `rgb(${color[0]},${color[1]},${color[2]})`, + color: color, icon: icon, name: name, - needI18n: needI18n + internal: internal, + allLabel: allLabel } } @@ -92,7 +112,11 @@ class PickerList extends Component { } }} > -
{
{ - displayInfo.needI18n ? - : + displayInfo.internal ? + : displayInfo.name }
diff --git a/source/Component/PickerList/RainbowBg.scss b/source/Component/PickerList/RainbowBg.scss new file mode 100644 index 0000000..b2b787f --- /dev/null +++ b/source/Component/PickerList/RainbowBg.scss @@ -0,0 +1,13 @@ +div.rainbow-back-ground-color { + background-image: linear-gradient( + to top, + orangered, + orange, + gold, + lightgreen, + cyan, + dodgerblue, + mediumpurple, + hotpink, + orangered); +} \ No newline at end of file