🎨 feat(ui): add icon support for Kling (50) & Jimeng (51) channels and iconize type selector
- import Kling & Jimeng icons from @lobehub/icons - extend getChannelIcon() to return corresponding icons for new channel types 50 (Kling) and 51 (Jimeng) - enhance EditChannel type selector: • introduce useMemo‐based channelOptionList with leading icons • utilize getChannelIcon for consistent icon rendering in dropdown options - minor refactor: add useMemo and getChannelIcon imports in EditChannel.js
This commit is contained in:
@@ -31,6 +31,8 @@ import {
|
|||||||
Coze,
|
Coze,
|
||||||
SiliconCloud,
|
SiliconCloud,
|
||||||
FastGPT,
|
FastGPT,
|
||||||
|
Kling,
|
||||||
|
Jimeng,
|
||||||
} from '@lobehub/icons';
|
} from '@lobehub/icons';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@@ -386,6 +388,10 @@ export function getChannelIcon(channelType) {
|
|||||||
return <XAI size={iconSize} />;
|
return <XAI size={iconSize} />;
|
||||||
case 49: // Coze
|
case 49: // Coze
|
||||||
return <Coze size={iconSize} />;
|
return <Coze size={iconSize} />;
|
||||||
|
case 50: // 可灵 Kling
|
||||||
|
return <Kling.Color size={iconSize} />;
|
||||||
|
case 51: // 即梦 Jimeng
|
||||||
|
return <Jimeng.Color size={iconSize} />;
|
||||||
case 8: // 自定义渠道
|
case 8: // 自定义渠道
|
||||||
case 22: // 知识库:FastGPT
|
case 22: // 知识库:FastGPT
|
||||||
return <FastGPT.Color size={iconSize} />;
|
return <FastGPT.Color size={iconSize} />;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import React, { useEffect, useState, useRef } from 'react';
|
import React, { useEffect, useState, useRef, useMemo } from 'react';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import {
|
import {
|
||||||
@@ -27,7 +27,7 @@ import {
|
|||||||
Row,
|
Row,
|
||||||
Col,
|
Col,
|
||||||
} from '@douyinfe/semi-ui';
|
} from '@douyinfe/semi-ui';
|
||||||
import { getChannelModels, copy } from '../../helpers';
|
import { getChannelModels, copy, getChannelIcon } from '../../helpers';
|
||||||
import {
|
import {
|
||||||
IconSave,
|
IconSave,
|
||||||
IconClose,
|
IconClose,
|
||||||
@@ -474,6 +474,20 @@ const EditChannel = (props) => {
|
|||||||
<Checkbox checked={batch} onChange={() => setBatch(!batch)}>{t('批量创建')}</Checkbox>
|
<Checkbox checked={batch} onChange={() => setBatch(!batch)}>{t('批量创建')}</Checkbox>
|
||||||
) : null;
|
) : null;
|
||||||
|
|
||||||
|
const channelOptionList = useMemo(
|
||||||
|
() =>
|
||||||
|
CHANNEL_OPTIONS.map((opt) => ({
|
||||||
|
...opt,
|
||||||
|
label: (
|
||||||
|
<span className="flex items-center gap-2">
|
||||||
|
{getChannelIcon(opt.value)}
|
||||||
|
{opt.label}
|
||||||
|
</span>
|
||||||
|
),
|
||||||
|
})),
|
||||||
|
[],
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<SideSheet
|
<SideSheet
|
||||||
@@ -539,7 +553,7 @@ const EditChannel = (props) => {
|
|||||||
label={t('类型')}
|
label={t('类型')}
|
||||||
placeholder={t('请选择渠道类型')}
|
placeholder={t('请选择渠道类型')}
|
||||||
rules={[{ required: true, message: t('请选择渠道类型') }]}
|
rules={[{ required: true, message: t('请选择渠道类型') }]}
|
||||||
optionList={CHANNEL_OPTIONS}
|
optionList={channelOptionList}
|
||||||
style={{ width: '100%' }}
|
style={{ width: '100%' }}
|
||||||
filter
|
filter
|
||||||
searchPosition='dropdown'
|
searchPosition='dropdown'
|
||||||
|
|||||||
Reference in New Issue
Block a user