Unverified Commit f834b2b3 authored by Sendya's avatar Sendya

fix: mix side

parent 68ae8ccf
...@@ -20,11 +20,11 @@ ...@@ -20,11 +20,11 @@
<span style="color: #0f0">right</span> <span style="color: #0f0">right</span>
</template> </template>
<!-- custom breadcrumb itemRender --> <!-- custom breadcrumb itemRender -->
<template #breadcrumbRender="{ route, params, routes, paths }"> <template #breadcrumbRender="{ route, params, routes }">
<span v-if="routes.indexOf(route) === routes.length - 1"> <span v-if="routes.indexOf(route) === routes.length - 1">
{{ route.breadcrumbName }} {{ route.breadcrumbName }}
</span> </span>
<router-link v-else :to="{ path: paths.join('/'), params }"> <router-link v-else :to="{ path: route.path, params }">
{{ route.breadcrumbName }} {{ route.breadcrumbName }}
</router-link> </router-link>
</template> </template>
...@@ -77,8 +77,8 @@ export default defineComponent({ ...@@ -77,8 +77,8 @@ export default defineComponent({
}, },
setup() { setup() {
const router = useRouter(); const router = useRouter();
const { menuData } = getMenuData(clearMenuItem(router.getRoutes())); const { menuData } = getMenuData(clearMenuItem(router.getRoutes()));
const baseState = reactive<Omit<RouteContextProps, 'menuData'>>({ const baseState = reactive<Omit<RouteContextProps, 'menuData'>>({
selectedKeys: [], selectedKeys: [],
openKeys: [], openKeys: [],
...@@ -88,7 +88,7 @@ export default defineComponent({ ...@@ -88,7 +88,7 @@ export default defineComponent({
const state = reactive({ const state = reactive({
menuData, menuData,
splitMenus: false, splitMenus: true,
title: 'ProLayout', title: 'ProLayout',
logo: 'https://alicdn.antdv.com/v2/assets/logo.1ef800a8.svg', logo: 'https://alicdn.antdv.com/v2/assets/logo.1ef800a8.svg',
navTheme: 'dark', navTheme: 'dark',
...@@ -109,12 +109,11 @@ export default defineComponent({ ...@@ -109,12 +109,11 @@ export default defineComponent({
watchEffect(() => { watchEffect(() => {
if (router.currentRoute) { if (router.currentRoute) {
const matched = router.currentRoute.value.matched.concat(); const matched = router.currentRoute.value.matched.concat();
baseState.selectedKeys = matched.map(r => r.path); console.log('matched', matched);
baseState.selectedKeys = matched.filter(r => r.name !== 'index').map(r => r.path);
baseState.openKeys = matched baseState.openKeys = matched
.filter(r => r.path !== router.currentRoute.value.path) .filter(r => r.path !== router.currentRoute.value.path)
.map(r => r.path); .map(r => r.path);
console.log('baseState', baseState);
} }
}); });
return { return {
......
...@@ -32,6 +32,21 @@ const routes: RouteRecordRaw[] = [ ...@@ -32,6 +32,21 @@ const routes: RouteRecordRaw[] = [
}, },
], ],
}, },
{
path: '/form',
name: 'form',
meta: { title: 'Form' },
redirect: '/form/basic-form',
component: RouteView,
children: [
{
path: 'basic-form',
name: 'basic-form',
meta: { title: 'Basic Form', icon: 'SettingOutlined' },
component: () => import('./views/page1.vue'),
},
],
},
], ],
}, },
]; ];
......
...@@ -29,7 +29,8 @@ ...@@ -29,7 +29,8 @@
"dev": "vite", "dev": "vite",
"build": "vue-tsc --noEmit && vite build", "build": "vue-tsc --noEmit && vite build",
"serve": "vite preview", "serve": "vite preview",
"build:types": "tsc -b --force tsconfig.esm.json" "build:types": "tsc -b --force tsconfig.esm.json",
"prepublish": "yarn build && yarn build:types"
}, },
"peerDependencies": { "peerDependencies": {
"ant-design-vue": ">=2.2.0", "ant-design-vue": ">=2.2.0",
......
...@@ -4,9 +4,9 @@ import type { CSSProperties, PropType, ExtractPropTypes } from 'vue'; ...@@ -4,9 +4,9 @@ import type { CSSProperties, PropType, ExtractPropTypes } from 'vue';
import 'ant-design-vue/es/layout/style'; import 'ant-design-vue/es/layout/style';
import Layout from 'ant-design-vue/es/layout'; import Layout from 'ant-design-vue/es/layout';
import omit from 'omit.js'; import omit from 'omit.js';
import { withInstall } from 'ant-design-vue/es/_util/type';
import useMediaQuery from './hooks/useMediaQuery'; import useMediaQuery from './hooks/useMediaQuery';
import { withInstall } from 'ant-design-vue/es/_util/type';
import { defaultSettingProps } from './defaultSettings'; import { defaultSettingProps } from './defaultSettings';
import { getPrefixCls, defaultRouteContext } from './RouteContext'; import { getPrefixCls, defaultRouteContext } from './RouteContext';
import type { BreadcrumbProps } from './RouteContext'; import type { BreadcrumbProps } from './RouteContext';
...@@ -79,6 +79,7 @@ export type BasicLayoutProps = Partial<ExtractPropTypes<typeof basicLayoutProps> ...@@ -79,6 +79,7 @@ export type BasicLayoutProps = Partial<ExtractPropTypes<typeof basicLayoutProps>
const ProLayout = defineComponent({ const ProLayout = defineComponent({
name: 'ProLayout', name: 'ProLayout',
props: basicLayoutProps,
// inheritAttrs: false, // inheritAttrs: false,
emits: [ emits: [
'update:collapsed', 'update:collapsed',
...@@ -90,7 +91,6 @@ const ProLayout = defineComponent({ ...@@ -90,7 +91,6 @@ const ProLayout = defineComponent({
'menuHeaderClick', 'menuHeaderClick',
'menuClick', 'menuClick',
], ],
props: basicLayoutProps,
setup(props, { emit, slots }) { setup(props, { emit, slots }) {
const refProps = toRefs(props); const refProps = toRefs(props);
const isTop = computed(() => props.layout === 'top'); const isTop = computed(() => props.layout === 'top');
...@@ -172,7 +172,7 @@ const ProLayout = defineComponent({ ...@@ -172,7 +172,7 @@ const ProLayout = defineComponent({
const menuHeaderRender = getPropsSlot(slots, props, 'menuHeaderRender'); const menuHeaderRender = getPropsSlot(slots, props, 'menuHeaderRender');
const footerRender = getPropsSlot(slots, props, 'footerRender'); const footerRender = getPropsSlot(slots, props, 'footerRender');
// const menuRender = getPropsSlot(slots, props, 'menuRender'); // const menuRender = getPropsSlot(slots, props, 'menuRender');
const breadcrumbRender = props['breadcrumbRender'] || slots['breadcrumbRender']; const breadcrumbRender = props.breadcrumbRender || slots.breadcrumbRender;
const headerDom = computed(() => const headerDom = computed(() =>
headerRender( headerRender(
...@@ -187,7 +187,7 @@ const ProLayout = defineComponent({ ...@@ -187,7 +187,7 @@ const ProLayout = defineComponent({
onMenuHeaderClick, onMenuHeaderClick,
rightContentRender, rightContentRender,
headerTitleRender: menuHeaderRender, headerTitleRender: menuHeaderRender,
headerContentRender: headerContentRender, headerContentRender,
headerRender: customHeaderRender, headerRender: customHeaderRender,
theme: (props.navTheme || 'dark').toLocaleLowerCase().includes('dark') ? 'dark' : 'light', theme: (props.navTheme || 'dark').toLocaleLowerCase().includes('dark') ? 'dark' : 'light',
}, },
...@@ -195,7 +195,6 @@ const ProLayout = defineComponent({ ...@@ -195,7 +195,6 @@ const ProLayout = defineComponent({
), ),
); );
console.log('refProps.breadcrumb', refProps.breadcrumb);
const routeContext = reactive({ const routeContext = reactive({
getPrefixCls, getPrefixCls,
// ...props, // ...props,
......
...@@ -190,12 +190,12 @@ class MenuUtil { ...@@ -190,12 +190,12 @@ class MenuUtil {
}; };
getMenuItem = (item: MenuDataItem) => { getMenuItem = (item: MenuDataItem) => {
const meta = Object.assign({}, item.meta); const meta = { ...item.meta };
const target = (meta.target || null) as string | null; const target = (meta.target || null) as string | null;
const hasUrl = isUrl(item.path); const hasUrl = isUrl(item.path);
const CustomTag: any = (target && 'a') || resolveComponent('router-link'); const CustomTag: any = (target && 'a') || resolveComponent('router-link');
const props = { to: { name: item.name } }; const props = { to: { name: item.name } };
const attrs = hasUrl || target ? { ...item.meta, href: item.path, target: target } : {}; const attrs = hasUrl || target ? { ...item.meta, href: item.path, target } : {};
const { prefixCls, locale } = this.props; const { prefixCls, locale } = this.props;
const menuTitle = (locale && locale(item.meta?.title)) || item.meta?.title; const menuTitle = (locale && locale(item.meta?.title)) || item.meta?.title;
...@@ -254,7 +254,6 @@ export default defineComponent({ ...@@ -254,7 +254,6 @@ export default defineComponent({
}) => { }) => {
emit('click', args); emit('click', args);
}; };
console.log('openKeys', props.openKeys);
return () => ( return () => (
<Menu <Menu
key="Menu" key="Menu"
......
...@@ -9,11 +9,11 @@ import 'ant-design-vue/es/layout/style'; ...@@ -9,11 +9,11 @@ import 'ant-design-vue/es/layout/style';
import Layout from 'ant-design-vue/es/layout'; import Layout from 'ant-design-vue/es/layout';
import 'ant-design-vue/es/menu/style'; import 'ant-design-vue/es/menu/style';
import Menu from 'ant-design-vue/es/menu'; import Menu from 'ant-design-vue/es/menu';
import { MenuUnfoldOutlined, MenuFoldOutlined } from '@ant-design/icons-vue';
import BaseMenu, { baseMenuProps } from './BaseMenu'; import BaseMenu, { baseMenuProps } from './BaseMenu';
import { WithFalse, CustomRender } from '../typings'; import { WithFalse, CustomRender } from '../typings';
import { SiderProps } from './typings'; import { SiderProps } from './typings';
import { defaultSettingProps } from '../defaultSettings'; import { defaultSettingProps } from '../defaultSettings';
import { MenuUnfoldOutlined, MenuFoldOutlined } from '@ant-design/icons-vue';
import { useRouteContext } from '../RouteContext'; import { useRouteContext } from '../RouteContext';
import { PropTypes, getMenuFirstChildren } from '../utils'; import { PropTypes, getMenuFirstChildren } from '../utils';
import './index.less'; import './index.less';
...@@ -124,7 +124,8 @@ export const defaultRenderLogoAndTitle = ( ...@@ -124,7 +124,8 @@ export const defaultRenderLogoAndTitle = (
if (typeof renderFunction === 'function') { if (typeof renderFunction === 'function') {
// when collapsed, no render title // when collapsed, no render title
return renderFunction(logoDom, props.collapsed ? null : titleDom, props); return renderFunction(logoDom, props.collapsed ? null : titleDom, props);
} else if (Array.isArray(renderFunction)) { }
if (Array.isArray(renderFunction)) {
return <>{renderFunction}</>; return <>{renderFunction}</>;
} }
if (layout === 'mix' && renderKey === 'menuHeaderRender') { if (layout === 'mix' && renderKey === 'menuHeaderRender') {
...@@ -176,6 +177,7 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => { ...@@ -176,6 +177,7 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => {
() => ((props.layout === 'mix' || props.layout === 'side') && props.splitMenus) || false, () => ((props.layout === 'mix' || props.layout === 'side') && props.splitMenus) || false,
); );
const flatMenuData = computed(() => { const flatMenuData = computed(() => {
console.log('context.selectedKeys[0]', context.selectedKeys[0]);
return (hasSide.value && getMenuFirstChildren(context.menuData, context.selectedKeys[0])) || []; return (hasSide.value && getMenuFirstChildren(context.menuData, context.selectedKeys[0])) || [];
}); });
// call menuHeaderRender // call menuHeaderRender
......
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