feat: 离线图标功能 & 一些改造

This commit is contained in:
dap 2024-11-06 16:21:31 +08:00
parent e0588234ee
commit 2a51d8387c
7 changed files with 84 additions and 16 deletions

View File

@ -5,7 +5,12 @@ import { useRouter } from 'vue-router';
import { AuthenticationLoginExpiredModal } from '@vben/common-ui';
import { VBEN_DOC_URL, VBEN_GITHUB_URL } from '@vben/constants';
import { useWatermark } from '@vben/hooks';
import { BookOpenText, CircleHelp, MdiGithub, ProfileIcon } from '@vben/icons';
import {
BookOpenText,
CircleHelp,
GitHubOutlined,
UserOutlined,
} from '@vben/icons';
import {
BasicLayout,
LockScreen,
@ -47,7 +52,7 @@ const menus = computed(() => {
handler: () => {
router.push('/profile');
},
icon: ProfileIcon,
icon: UserOutlined,
text: $t('ui.widgets.profile'),
},
{
@ -56,7 +61,7 @@ const menus = computed(() => {
target: '_blank',
});
},
icon: MdiGithub,
icon: GitHubOutlined,
text: 'GitHub',
},
{

View File

@ -1,6 +1,10 @@
import { defineComponent, h } from 'vue';
import { Icon } from '@iconify/vue';
import { Icon, type IconifyIcon } from '@iconify/vue';
import {
addIcon as addOfflineIcon,
Icon as OfflineIcon,
} from '@iconify/vue/dist/offline';
function createIconifyIcon(icon: string) {
return defineComponent({
@ -11,4 +15,20 @@ function createIconifyIcon(icon: string) {
});
}
export { createIconifyIcon };
/**
* 线
* @param icon iconify的名称保持一致
* @param iconComponent @iconify/icon-xxx/xxx导入的图标
* @returns IconComponent
*/
function createIconifyOfflineIcon(icon: string, iconComponent: IconifyIcon) {
return defineComponent({
name: `Icon-${icon}`,
setup(props, { attrs }) {
addOfflineIcon(icon, iconComponent);
return () => h(OfflineIcon, { icon, ...props, ...attrs });
},
});
}
export { createIconifyIcon, createIconifyOfflineIcon };

View File

@ -5,3 +5,9 @@ export * from './lucide';
export type { IconifyIcon as IconifyIconStructure } from '@iconify/vue';
export { addCollection, addIcon, Icon as IconifyIcon } from '@iconify/vue';
// 离线图标使用
export {
addCollection as addOfflineCollection,
addIcon as addOfflineIcon,
Icon as IconifyOfflineIcon,
} from '@iconify/vue/dist/offline';

View File

@ -18,5 +18,12 @@
},
"dependencies": {
"@vben-core/icons": "workspace:*"
},
"devDependencies": {
"@iconify/icons-ant-design": "^1.2.7",
"@iconify/icons-flat-color-icons": "^1.2.5",
"@iconify/icons-la": "^1.2.3",
"@iconify/icons-logos": "^1.2.36",
"@iconify/icons-vscode-icons": "^1.2.29"
}
}

View File

@ -0,0 +1,40 @@
import { createIconifyOfflineIcon } from '@vben-core/icons';
import githubOutlined from '@iconify/icons-ant-design/github-outlined';
import inboxIcon from '@iconify/icons-ant-design/inbox-outlined';
import userOutlined from '@iconify/icons-ant-design/user-outlined';
import comandLine from '@iconify/icons-flat-color-icons/command-line';
import memoryIcon from '@iconify/icons-la/memory';
import redisIcon from '@iconify/icons-logos/redis';
import excelIcon from '@iconify/icons-vscode-icons/file-type-excel';
// 用户 下拉菜单
export const GitHubOutlined = createIconifyOfflineIcon(
'ant-design:github-outlined',
githubOutlined,
);
export const UserOutlined = createIconifyOfflineIcon(
'ant-design:user-outlined',
userOutlined,
);
// 缓存监控使用
export const RedisIcon = createIconifyOfflineIcon('logos:redis', redisIcon);
export const CommandLineIcon = createIconifyOfflineIcon(
'flat-color-icons:command-line',
comandLine,
);
export const MemoryIcon = createIconifyOfflineIcon('la:memory', memoryIcon);
// 用户管理 导入
// Excel图标
export const ExcelIcon = createIconifyOfflineIcon(
'vscode-icons:file-type-excel',
excelIcon,
);
// 拖拽上传图标
export const InBoxIcon = createIconifyOfflineIcon(
'ant-design:inbox-outlined',
inboxIcon,
);

View File

@ -13,18 +13,7 @@ export const MdiGoogle = createIconifyIcon('mdi:google');
export const MdiQqchat = createIconifyIcon('mdi:qqchat');
export const EosSystem = createIconifyIcon('eos-icons:system-group');
// 缓存监控使用
export const RedisIcon = createIconifyIcon('logos:redis');
export const CommandLineIcon = createIconifyIcon(
'flat-color-icons:command-line',
);
export const MemoryIcon = createIconifyIcon('la:memory');
export const GiteeIcon = createIconifyIcon('simple-icons:gitee');
// 个人中心
export const ProfileIcon = createIconifyIcon('mingcute:profile-line');
// Excel图标
export const ExcelIcon = createIconifyIcon('vscode-icons:file-type-excel');
// 拖拽上传图标
export const InBoxIcon = createIconifyIcon('ant-design:inbox-outlined');

View File

@ -1,2 +1,3 @@
export * from './iconify/index.js';
export * from './iconify-offline/index.js';
export * from './svg/index.js';