feat: 离线图标功能 & 一些改造
This commit is contained in:
parent
e0588234ee
commit
2a51d8387c
@ -5,7 +5,12 @@ import { useRouter } from 'vue-router';
|
|||||||
import { AuthenticationLoginExpiredModal } from '@vben/common-ui';
|
import { AuthenticationLoginExpiredModal } from '@vben/common-ui';
|
||||||
import { VBEN_DOC_URL, VBEN_GITHUB_URL } from '@vben/constants';
|
import { VBEN_DOC_URL, VBEN_GITHUB_URL } from '@vben/constants';
|
||||||
import { useWatermark } from '@vben/hooks';
|
import { useWatermark } from '@vben/hooks';
|
||||||
import { BookOpenText, CircleHelp, MdiGithub, ProfileIcon } from '@vben/icons';
|
import {
|
||||||
|
BookOpenText,
|
||||||
|
CircleHelp,
|
||||||
|
GitHubOutlined,
|
||||||
|
UserOutlined,
|
||||||
|
} from '@vben/icons';
|
||||||
import {
|
import {
|
||||||
BasicLayout,
|
BasicLayout,
|
||||||
LockScreen,
|
LockScreen,
|
||||||
@ -47,7 +52,7 @@ const menus = computed(() => {
|
|||||||
handler: () => {
|
handler: () => {
|
||||||
router.push('/profile');
|
router.push('/profile');
|
||||||
},
|
},
|
||||||
icon: ProfileIcon,
|
icon: UserOutlined,
|
||||||
text: $t('ui.widgets.profile'),
|
text: $t('ui.widgets.profile'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -56,7 +61,7 @@ const menus = computed(() => {
|
|||||||
target: '_blank',
|
target: '_blank',
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
icon: MdiGithub,
|
icon: GitHubOutlined,
|
||||||
text: 'GitHub',
|
text: 'GitHub',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
import { defineComponent, h } from 'vue';
|
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) {
|
function createIconifyIcon(icon: string) {
|
||||||
return defineComponent({
|
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 };
|
||||||
|
@ -5,3 +5,9 @@ export * from './lucide';
|
|||||||
|
|
||||||
export type { IconifyIcon as IconifyIconStructure } from '@iconify/vue';
|
export type { IconifyIcon as IconifyIconStructure } from '@iconify/vue';
|
||||||
export { addCollection, addIcon, Icon as IconifyIcon } 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';
|
||||||
|
@ -18,5 +18,12 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vben-core/icons": "workspace:*"
|
"@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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
40
packages/icons/src/iconify-offline/index.ts
Normal file
40
packages/icons/src/iconify-offline/index.ts
Normal 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,
|
||||||
|
);
|
@ -13,18 +13,7 @@ export const MdiGoogle = createIconifyIcon('mdi:google');
|
|||||||
export const MdiQqchat = createIconifyIcon('mdi:qqchat');
|
export const MdiQqchat = createIconifyIcon('mdi:qqchat');
|
||||||
|
|
||||||
export const EosSystem = createIconifyIcon('eos-icons:system-group');
|
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 GiteeIcon = createIconifyIcon('simple-icons:gitee');
|
||||||
// 个人中心
|
// 个人中心
|
||||||
export const ProfileIcon = createIconifyIcon('mingcute:profile-line');
|
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');
|
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
export * from './iconify/index.js';
|
export * from './iconify/index.js';
|
||||||
|
export * from './iconify-offline/index.js';
|
||||||
export * from './svg/index.js';
|
export * from './svg/index.js';
|
||||||
|
Loading…
Reference in New Issue
Block a user