Commit 45f4c856 authored by Sendya's avatar Sendya

fix: iconfontUrl

parent c0d1287b
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
v-bind="state" v-bind="state"
:loading="loading" :loading="loading"
:breadcrumb="{ routes: breadcrumb }" :breadcrumb="{ routes: breadcrumb }"
iconfont-url="//at.alicdn.com/t/font_2804900_26tw52dc2pl.js"
> >
<template #menuHeaderRender> <template #menuHeaderRender>
<a> <a>
......
...@@ -21,13 +21,13 @@ const routes: RouteRecordRaw[] = [ ...@@ -21,13 +21,13 @@ const routes: RouteRecordRaw[] = [
{ {
path: 'workspace', path: 'workspace',
name: 'workspace', name: 'workspace',
meta: { title: 'Workspace' }, meta: { title: 'Workspace', icon: 'icon-antdesign' },
component: () => import('./views/page1.vue'), component: () => import('./views/page1.vue'),
}, },
{ {
path: 'monitor', path: 'monitor',
name: 'monitor', name: 'monitor',
meta: { title: 'Monitor' }, meta: { title: 'Monitor', icon: 'icon-icon-test' },
component: () => import('./views/page2.vue'), component: () => import('./views/page2.vue'),
}, },
], ],
......
{ {
"name": "@ant-design-vue/pro-layout", "name": "@ant-design-vue/pro-layout",
"version": "3.1.0-beta.4", "version": "3.1.0-beta.5",
"license": "MIT", "license": "MIT",
"files": [ "files": [
"dist", "dist"
"src"
], ],
"style": "./dist/style.css", "style": "./dist/style.css",
"main": "./dist/pro-layout.umd.js", "main": "./dist/pro-layout.umd.js",
...@@ -41,7 +40,7 @@ ...@@ -41,7 +40,7 @@
"ant-design-vue": "^2.2.2", "ant-design-vue": "^2.2.2",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"omit.js": "^2.0.2", "omit.js": "^2.0.2",
"vue": "^3.1.0", "vue": "^3.2.0",
"vue-router": "^4.0.10" "vue-router": "^4.0.10"
}, },
"devDependencies": { "devDependencies": {
...@@ -51,8 +50,7 @@ ...@@ -51,8 +50,7 @@
"@typescript-eslint/parser": "^4.28.2", "@typescript-eslint/parser": "^4.28.2",
"@vitejs/plugin-vue": "^1.6.0", "@vitejs/plugin-vue": "^1.6.0",
"@vitejs/plugin-vue-jsx": "^1.1.7", "@vitejs/plugin-vue-jsx": "^1.1.7",
"@vue/compiler-sfc": "^3.1.0", "@vue/compiler-sfc": "^3.2.0",
"@vuedx/typescript-plugin-vue": "^0.7.4",
"eslint": "^7.30.0", "eslint": "^7.30.0",
"eslint-config-airbnb-base": "^14.2.1", "eslint-config-airbnb-base": "^14.2.1",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.3.0",
......
...@@ -87,10 +87,7 @@ const ProLayout = defineComponent({ ...@@ -87,10 +87,7 @@ const ProLayout = defineComponent({
'menuClick', 'menuClick',
], ],
setup(props, { emit, slots }) { setup(props, { emit, slots }) {
// const refProps = toRefs(props);
const isTop = computed(() => props.layout === 'top'); const isTop = computed(() => props.layout === 'top');
// const isSide = computed(() => layout === 'side');
// const isMix = computed(() => layout === 'mix');
const siderWidth = computed(() => (props.collapsed ? props.collapsedWidth : props.siderWidth)); const siderWidth = computed(() => (props.collapsed ? props.collapsedWidth : props.siderWidth));
// if on event and @event // if on event and @event
...@@ -159,8 +156,6 @@ const ProLayout = defineComponent({ ...@@ -159,8 +156,6 @@ const ProLayout = defineComponent({
itemRender: getPropsSlotfn(slots, props, 'breadcrumbRender'), itemRender: getPropsSlotfn(slots, props, 'breadcrumbRender'),
})); }));
console.log('props', toRefs(props));
const routeContext = reactive<RouteContextProps>( const routeContext = reactive<RouteContextProps>(
Object.assign( Object.assign(
{...defaultRouteContext}, {...defaultRouteContext},
...@@ -202,6 +197,7 @@ const ProLayout = defineComponent({ ...@@ -202,6 +197,7 @@ const ProLayout = defineComponent({
const rightContentRender = getPropsSlot(slots, props, 'rightContentRender'); const rightContentRender = getPropsSlot(slots, props, 'rightContentRender');
const customHeaderRender = getPropsSlot(slots, props, 'headerRender'); const customHeaderRender = getPropsSlot(slots, props, 'headerRender');
const menuHeaderRender = getPropsSlotfn(slots, props, 'menuHeaderRender'); const menuHeaderRender = getPropsSlotfn(slots, props, 'menuHeaderRender');
const menuContentRender = getPropsSlotfn(slots, props, 'menuContentRender');
const menuExtraRender = getPropsSlotfn(slots, props, 'menuExtraRender'); const menuExtraRender = getPropsSlotfn(slots, props, 'menuExtraRender');
const menuFooterRender = getPropsSlotfn(slots, props, 'menuFooterRender'); const menuFooterRender = getPropsSlotfn(slots, props, 'menuFooterRender');
const footerRender = getPropsSlot(slots, props, 'footerRender'); const footerRender = getPropsSlot(slots, props, 'footerRender');
...@@ -228,6 +224,7 @@ const ProLayout = defineComponent({ ...@@ -228,6 +224,7 @@ const ProLayout = defineComponent({
rightContentRender, rightContentRender,
collapsedButtonRender, collapsedButtonRender,
headerTitleRender: menuHeaderRender, headerTitleRender: menuHeaderRender,
menuContentRender: menuContentRender,
headerContentRender, headerContentRender,
headerRender: customHeaderRender, headerRender: customHeaderRender,
theme: (props.navTheme || 'dark').toLocaleLowerCase().includes('dark') theme: (props.navTheme || 'dark').toLocaleLowerCase().includes('dark')
...@@ -251,6 +248,7 @@ const ProLayout = defineComponent({ ...@@ -251,6 +248,7 @@ const ProLayout = defineComponent({
{...menuRenders} {...menuRenders}
isMobile={isMobile.value} isMobile={isMobile.value}
menuHeaderRender={menuHeaderRender} menuHeaderRender={menuHeaderRender}
menuContentRender={menuContentRender}
menuExtraRender={menuExtraRender} menuExtraRender={menuExtraRender}
menuFooterRender={menuFooterRender} menuFooterRender={menuFooterRender}
collapsedButtonRender={collapsedButtonRender} collapsedButtonRender={collapsedButtonRender}
......
...@@ -10,7 +10,10 @@ import { ...@@ -10,7 +10,10 @@ import {
ExtractPropTypes, ExtractPropTypes,
ConcreteComponent, ConcreteComponent,
watchEffect, watchEffect,
withCtx,
getCurrentInstance,
FunctionalComponent, FunctionalComponent,
ComponentInternalInstance,
} from 'vue'; } from 'vue';
import { createFromIconfontCN } from '@ant-design/icons-vue'; import { createFromIconfontCN } from '@ant-design/icons-vue';
import 'ant-design-vue/es/menu/style'; import 'ant-design-vue/es/menu/style';
...@@ -137,10 +140,12 @@ const LazyIcon: FunctionalComponent<{ ...@@ -137,10 +140,12 @@ const LazyIcon: FunctionalComponent<{
class MenuUtil { class MenuUtil {
props: BaseMenuProps; props: BaseMenuProps;
ctx: ComponentInternalInstance | null;
RouterLink: ConcreteComponent; RouterLink: ConcreteComponent;
constructor(props: BaseMenuProps) { constructor(props: BaseMenuProps, ctx: ComponentInternalInstance | null) {
this.props = props; this.props = props;
this.ctx = ctx;
this.RouterLink = resolveComponent('router-link') as ConcreteComponent; this.RouterLink = resolveComponent('router-link') as ConcreteComponent;
} }
...@@ -157,7 +162,8 @@ class MenuUtil { ...@@ -157,7 +162,8 @@ class MenuUtil {
!item?.meta?.hideChildrenInMenu !item?.meta?.hideChildrenInMenu
) { ) {
if (this.props.subMenuItemRender) { if (this.props.subMenuItemRender) {
return this.props.subMenuItemRender({ const subMenuItemRender = withCtx(this.props.subMenuItemRender, this.ctx);
return subMenuItemRender({
item, item,
children: this.getNavMenuItems(item.children), children: this.getNavMenuItems(item.children),
}) as VNode; }) as VNode;
...@@ -187,11 +193,12 @@ class MenuUtil { ...@@ -187,11 +193,12 @@ class MenuUtil {
); );
} }
const menuItemRender = this.props.menuItemRender && withCtx(this.props.menuItemRender, this.ctx)
const [title, icon] = this.getMenuItem(item); const [title, icon] = this.getMenuItem(item);
return ( return (
((this.props.menuItemRender && (menuItemRender && menuItemRender({ item, title, icon }) as VNode) || (
this.props.menuItemRender({ item, title, icon })) as VNode) || (
<Menu.Item <Menu.Item
disabled={item.meta?.disabled} disabled={item.meta?.disabled}
danger={item.meta?.danger} danger={item.meta?.danger}
...@@ -256,8 +263,8 @@ export default defineComponent({ ...@@ -256,8 +263,8 @@ export default defineComponent({
props: baseMenuProps, props: baseMenuProps,
emits: ['update:openKeys', 'update:selectedKeys', 'click'], emits: ['update:openKeys', 'update:selectedKeys', 'click'],
setup(props, { emit }) { setup(props, { emit }) {
const menuUtil = new MenuUtil(props); const ctx = getCurrentInstance()
const menuUtil = new MenuUtil(props, ctx);
// update iconfontUrl // update iconfontUrl
watchEffect(() => { watchEffect(() => {
if (props.iconfontUrl) { if (props.iconfontUrl) {
......
...@@ -210,6 +210,7 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => { ...@@ -210,6 +210,7 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => {
selectedKeys={context.selectedKeys} selectedKeys={context.selectedKeys}
menuItemRender={props.menuItemRender} menuItemRender={props.menuItemRender}
subMenuItemRender={props.subMenuItemRender} subMenuItemRender={props.subMenuItemRender}
iconfontUrl={props.iconfontUrl}
onClick={props.onMenuClick} onClick={props.onMenuClick}
style={{ style={{
width: '100%', width: '100%',
......
...@@ -92,6 +92,7 @@ export const TopNavHeader: FunctionalComponent<TopNavHeaderProps> = props => { ...@@ -92,6 +92,7 @@ export const TopNavHeader: FunctionalComponent<TopNavHeaderProps> = props => {
theme={props.theme === 'realDark' ? 'dark' : props.theme} theme={props.theme === 'realDark' ? 'dark' : props.theme}
mode={props.mode} mode={props.mode}
collapsed={props.collapsed} collapsed={props.collapsed}
iconfontUrl={props.iconfontUrl}
menuData={menuData} menuData={menuData}
menuItemRender={props.menuItemRender} menuItemRender={props.menuItemRender}
subMenuItemRender={props.subMenuItemRender} subMenuItemRender={props.subMenuItemRender}
......
{ {
"compilerOptions": { "compilerOptions": {
"plugins": [
{
"name": "@vuedx/typescript-plugin-vue"
}
],
"target": "esnext", "target": "esnext",
"module": "esnext", "module": "esnext",
"moduleResolution": "node", "moduleResolution": "node",
......
{ {
"compilerOptions": { "compilerOptions": {
"plugins": [
{
"name": "@vuedx/typescript-plugin-vue"
}
],
"target": "esnext", "target": "esnext",
"module": "esnext", "module": "esnext",
"moduleResolution": "node", "moduleResolution": "node",
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment