UNPKG

@_lan/web-libs

Version:

<div align="center"> <img src="./public/favicon.svg" width="160" /> <h1>SoybeanAdmin AntDesign</h1> <span>中文 | <a href="./README.en_US.md">English</a></span> </div>

51 lines (42 loc) 966 B
import { h } from 'vue'; import type { Component } from 'vue'; /** * Svg icon render hook * * @param SvgIcon Svg icon component */ export default function useSvgIconRender(SvgIcon: Component) { interface IconConfig { /** Iconify icon name */ icon?: string; /** Local icon name */ localIcon?: string; /** Icon color */ color?: string; /** Icon size */ fontSize?: number; } type IconStyle = Partial<Pick<CSSStyleDeclaration, 'color' | 'fontSize'>>; /** * Svg icon VNode * * @param config */ const SvgIconVNode = (config: IconConfig) => { const { color, fontSize, icon, localIcon } = config; const style: IconStyle = {}; if (color) { style.color = color; } if (fontSize) { style.fontSize = `${fontSize}px`; } if (!icon && !localIcon) { return undefined; } return () => h(SvgIcon, { icon, localIcon, style }); }; return { SvgIconVNode }; }