chore: update

This commit is contained in:
xiaoxian521
2025-03-20 15:57:13 +08:00
parent 818f12d1ea
commit 2d06dc1dd8
28 changed files with 147 additions and 75 deletions

View File

@@ -13,3 +13,11 @@ const IconSelect = iconSelect;
const FontIcon = fontIcon;
export { IconifyIconOffline, IconifyIconOnline, IconSelect, FontIcon };
export function getIconOffline(icon: string) {
if (icon && icon.includes("/")) {
return icon.replace("/", ":");
} else {
return icon;
}
}

View File

@@ -1,6 +1,11 @@
import type { iconType } from "./types";
import { h, defineComponent, type Component } from "vue";
import { IconifyIconOnline, IconifyIconOffline, FontIcon } from "../index";
import {
FontIcon,
getIconOffline,
IconifyIconOnline,
IconifyIconOffline
} from "../index";
/**
* 支持 `iconfont`、自定义 `svg` 以及 `iconify` 中所有的图标
@@ -52,7 +57,7 @@ export function useRenderIcon(icon: any, attrs?: iconType): Component {
const IconifyIcon =
icon && icon.includes(":") ? IconifyIconOnline : IconifyIconOffline;
return h(IconifyIcon, {
icon: icon,
icon: getIconOffline(icon),
...attrs
});
}

View File

@@ -1,27 +1,47 @@
import { h, defineComponent } from "vue";
import { Icon as IconifyIcon, addIcon } from "@iconify/vue/dist/offline";
// Iconify Icon在Vue里本地使用用于内网环境
export default defineComponent({
name: "IconifyIconOffline",
components: { IconifyIcon },
props: {
icon: {
default: null
}
},
render() {
if (typeof this.icon === "object") addIcon(this.icon, this.icon);
const attrs = this.$attrs;
return h(
this.icon,
{
"aria-hidden": false,
style: attrs?.style
? Object.assign(attrs.style, { outline: "none" })
: { outline: "none" },
...attrs
},
{
default: () => []
}
);
if (typeof this.icon === "string") {
return h(
IconifyIcon,
{
icon: this.icon,
"aria-hidden": false,
style: attrs?.style
? Object.assign(attrs.style, { outline: "none" })
: { outline: "none" },
...attrs
},
{
default: () => []
}
);
} else {
return h(
this.icon,
{
"aria-hidden": false,
style: attrs?.style
? Object.assign(attrs.style, { outline: "none" })
: { outline: "none" },
...attrs
},
{
default: () => []
}
);
}
}
});

View File

@@ -1,8 +1,9 @@
// // 这里存放本地图标,在 src/layout/index.vue 文件中加载,避免在首启动加载
// import { addIcon } from "@iconify/vue/dist/offline";
// 这里存放本地图标,在 src/layout/index.vue 文件中加载,避免在首启动加载
import { getIcons } from "@iconify/utils";
import { addCollection } from "@iconify/vue/dist/offline";
// // 本地菜单图标,后端在路由的 icon 中返回对应的图标字符串并且前端在此处使用 addIcon 添加即可渲染菜单图标
// // @iconify-json/ep
// 本地菜单图标,后端在路由的 icon 中返回对应的图标字符串并且前端在此处使用 addIcon 添加即可渲染菜单图标
// @iconify-json/ep
// import Menu from "~icons/ep/menu";
// import Edit from "~icons/ep/edit";
// import SetUp from "~icons/ep/set-up";
@@ -11,15 +12,22 @@
// import Lollipop from "~icons/ep/lollipop";
// import Histogram from "~icons/ep/histogram";
// import HomeFilled from "~icons/ep/home-filled";
// addIcon("ep:menu", Menu);
// addIcon("ep:edit", Edit);
// addIcon("ep:set-up", SetUp);
// addIcon("ep:guide", Guide);
// addIcon("ep:monitor", Monitor);
// addIcon("ep:lollipop", Lollipop);
// addIcon("ep:histogram", Histogram);
// addIcon("ep:home-filled", HomeFilled);
// // @iconify-json/ri
import { icons as iconsEp } from "@iconify-json/ep";
addCollection(
getIcons(iconsEp, [
"menu",
"edit",
"set-up",
"guide",
"monitor",
"lollipop",
"histogram",
"home-filled"
])
);
// @iconify-json/ri
// import Tag from "~icons/ri/bookmark-2-line";
// import Ppt from "~icons/ri/file-ppt-2-line";
// import Card from "~icons/ri/bank-card-line";
@@ -44,27 +52,54 @@
// import InformationLine from "~icons/ri/information-line";
// import TerminalWindowLine from "~icons/ri/terminal-window-line";
// import CheckboxCircleLine from "~icons/ri/checkbox-circle-line";
// addIcon("ri:bookmark-2-line", Tag);
// addIcon("ri:file-ppt-2-line", Ppt);
// addIcon("ri:bank-card-line", Card);
// addIcon("ri:admin-fill", Role);
// addIcon("ri:file-info-line", Info);
// addIcon("ri:git-branch-line", Dept);
// addIcon("ri:links-fill", Links);
// addIcon("ri:table-line", Table);
// addIcon("ri:search-line", Search);
// addIcon("ri:admin-line", FlUser);
// addIcon("ri:settings-3-line", Setting);
// addIcon("ri:mind-map", MindMap);
// addIcon("ri:bar-chart-horizontal-line", BarChart);
// addIcon("ri:window-line", LoginLog);
// addIcon("ri:file-search-line", SystemLog);
// addIcon("ri:artboard-line", Artboard);
// addIcon("ri:list-check", ListCheck);
// addIcon("ri:ubuntu-fill", UbuntuFill);
// addIcon("ri:user-voice-line", OnlineUser);
// addIcon("ri:edit-box-line", EditBoxLine);
// addIcon("ri:history-fill", OperationLog);
// addIcon("ri:information-line", InformationLine);
// addIcon("ri:terminal-window-line", TerminalWindowLine);
// addIcon("ri:checkbox-circle-line", CheckboxCircleLine);
// import ChatSearchLine from "~icons/ri/chat-search-line";
import { icons as iconsRi } from "@iconify-json/ri";
addCollection(
getIcons(iconsRi, [
"bookmark-2-line",
"file-ppt-2-line",
"bank-card-line",
"admin-fill",
"file-info-line",
"git-branch-line",
"table-line",
"links-fill",
"search-line",
"admin-line",
"settings-3-line",
"mind-map",
"bar-chart-horizontal-line",
"window-line",
"artboard-line",
"file-search-line",
"list-check",
"ubuntu-fill",
"user-voice-line",
"edit-box-line",
"history-fill",
"information-line",
"terminal-window-line",
"checkbox-circle-line",
"chat-search-line",
"code-box-line",
"markdown-line"
])
);
// {
// "prefix": "ri",
// "icons": {
// "bookmark-2-line": {
// "body": "<path fill=\"currentColor\" d=\"M5 2h14a1 1 0 0 1 1 1v19.143a.5.5 0 0 1-.766.424L12 18.03l-7.234 4.536A.5.5 0 0 1 4 22.143V3a1 1 0 0 1 1-1m13 2H6v15.432l6-3.761l6 3.761zM8 9h8v2H8z\"/>"
// },
// "information-line": {
// "body": "<path fill=\"currentColor\" d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10m0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16M11 7h2v2h-2zm0 4h2v6h-2z\"/>"
// },
// "search-line": {
// "body": "<path fill=\"currentColor\" d=\"m18.031 16.617l4.283 4.282l-1.415 1.415l-4.282-4.283A8.96 8.96 0 0 1 11 20c-4.968 0-9-4.032-9-9s4.032-9 9-9s9 4.032 9 9a8.96 8.96 0 0 1-1.969 5.617m-2.006-.742A6.98 6.98 0 0 0 18 11c0-3.867-3.133-7-7-7s-7 3.133-7 7s3.133 7 7 7a6.98 6.98 0 0 0 4.875-1.975z\"/>"
// }
// },
// "lastModified": 1734422306,
// "width": 24,
// "height": 24
// }