Browse Source

feat: add collapsedShowTitle setting

vben 4 years ago
parent
commit
5737e478f6

+ 14 - 4
src/components/Menu/src/BasicMenu.tsx

@@ -152,7 +152,13 @@ export default defineComponent({
       const { appendClass } = props;
       const { appendClass } = props;
       const levelCls = `basic-menu-item__level${index} ${menuState.theme} `;
       const levelCls = `basic-menu-item__level${index} ${menuState.theme} `;
 
 
-      const showTitle = props.isAppMenu ? !menuStore.getCollapsedState : true;
+      const showTitle = computed(() => {
+        if (!props.isAppMenu) return true;
+        if (!props.collapsedShowTitle) {
+          return !menuStore.getCollapsedState;
+        }
+        return true;
+      });
       return menuList.map((menu) => {
       return menuList.map((menu) => {
         if (!menu) {
         if (!menu) {
           return null;
           return null;
@@ -172,7 +178,7 @@ export default defineComponent({
                 <MenuContent
                 <MenuContent
                   item={menu}
                   item={menu}
                   level={index}
                   level={index}
-                  showTitle={showTitle}
+                  showTitle={unref(showTitle)}
                   searchValue={menuState.searchValue}
                   searchValue={menuState.searchValue}
                 />,
                 />,
               ]}
               ]}
@@ -184,7 +190,7 @@ export default defineComponent({
             {{
             {{
               title: () => [
               title: () => [
                 <MenuContent
                 <MenuContent
-                  showTitle={showTitle}
+                  showTitle={unref(showTitle)}
                   item={menu}
                   item={menu}
                   level={index}
                   level={index}
                   searchValue={menuState.searchValue}
                   searchValue={menuState.searchValue}
@@ -218,7 +224,11 @@ export default defineComponent({
           inlineIndent={props.inlineIndent}
           inlineIndent={props.inlineIndent}
           theme={unref(theme)}
           theme={unref(theme)}
           onOpenChange={handleOpenChange}
           onOpenChange={handleOpenChange}
-          class={['basic-menu', unref(transparentMenuClass)]}
+          class={[
+            'basic-menu',
+            props.collapsedShowTitle && 'collapsed-show-title',
+            unref(transparentMenuClass),
+          ]}
           {...inlineCollapsedObj}
           {...inlineCollapsedObj}
         >
         >
           {{
           {{

+ 9 - 0
src/components/Menu/src/index.less

@@ -14,6 +14,15 @@
 }
 }
 
 
 .basic-menu {
 .basic-menu {
+  &.collapsed-show-title.ant-menu-inline-collapsed {
+    & > li > .ant-menu-submenu-title {
+      display: flex;
+      margin-top: 12px;
+      font-size: 12px;
+      flex-direction: column;
+    }
+  }
+
   &__wrap {
   &__wrap {
     /* 滚动槽 */
     /* 滚动槽 */
     &::-webkit-scrollbar {
     &::-webkit-scrollbar {

+ 4 - 0
src/components/Menu/src/props.ts

@@ -11,6 +11,10 @@ export const basicProps = {
     type: Boolean as PropType<boolean>,
     type: Boolean as PropType<boolean>,
     default: false,
     default: false,
   },
   },
+  collapsedShowTitle: {
+    type: Boolean as PropType<boolean>,
+    default: false,
+  },
   flatItems: {
   flatItems: {
     type: Array as PropType<Menu[]>,
     type: Array as PropType<Menu[]>,
     default: () => [],
     default: () => [],

+ 1 - 0
src/components/Modal/src/BasicModal.tsx

@@ -199,6 +199,7 @@ export default defineComponent({
         }
         }
       }
       }
     }
     }
+
     /**
     /**
      * @description: 设置modal参数
      * @description: 设置modal参数
      */
      */

+ 2 - 1
src/layouts/default/LayoutMenu.tsx

@@ -177,7 +177,7 @@ export default defineComponent({
     return () => {
     return () => {
       const {
       const {
         showLogo,
         showLogo,
-        menuSetting: { type: menuType, mode, theme, collapsed },
+        menuSetting: { type: menuType, mode, theme, collapsed, collapsedShowTitle },
       } = unref(getProjectConfigRef);
       } = unref(getProjectConfigRef);
 
 
       const isSidebarType = menuType === MenuTypeEnum.SIDEBAR;
       const isSidebarType = menuType === MenuTypeEnum.SIDEBAR;
@@ -190,6 +190,7 @@ export default defineComponent({
           type={menuType}
           type={menuType}
           mode={props.menuMode || mode}
           mode={props.menuMode || mode}
           class="layout-menu"
           class="layout-menu"
+          collapsedShowTitle={collapsedShowTitle}
           theme={themeData}
           theme={themeData}
           showLogo={isShowLogo}
           showLogo={isShowLogo}
           search={unref(showSearchRef) && !collapsed}
           search={unref(showSearchRef) && !collapsed}

+ 22 - 1
src/layouts/default/setting/SettingDrawer.tsx

@@ -208,7 +208,14 @@ export default defineComponent({
       const {
       const {
         contentMode,
         contentMode,
         headerSetting: { fixed },
         headerSetting: { fixed },
-        menuSetting: { hasDrag, collapsed, showSearch, menuWidth, topMenuAlign } = {},
+        menuSetting: {
+          hasDrag,
+          collapsed,
+          showSearch,
+          menuWidth,
+          topMenuAlign,
+          collapsedShowTitle,
+        } = {},
       } = appStore.getProjectConfig;
       } = appStore.getProjectConfig;
       return [
       return [
         renderSwitchItem('侧边菜单拖拽', {
         renderSwitchItem('侧边菜单拖拽', {
@@ -232,6 +239,13 @@ export default defineComponent({
           def: collapsed,
           def: collapsed,
           disabled: !unref(getShowMenuRef),
           disabled: !unref(getShowMenuRef),
         }),
         }),
+        renderSwitchItem('折叠菜单显示名称', {
+          handler: (e) => {
+            baseHandler('collapsedShowTitle', e);
+          },
+          def: collapsedShowTitle,
+          disabled: !unref(getShowMenuRef) || !collapsed,
+        }),
 
 
         renderSwitchItem('固定header', {
         renderSwitchItem('固定header', {
           handler: (e) => {
           handler: (e) => {
@@ -449,6 +463,13 @@ export default defineComponent({
           },
           },
         };
         };
       }
       }
+      if (event === 'collapsedShowTitle') {
+        config = {
+          menuSetting: {
+            collapsedShowTitle: value,
+          },
+        };
+      }
       if (event === 'lockTime') {
       if (event === 'lockTime') {
         config = {
         config = {
           lockTime: value,
           lockTime: value,

+ 2 - 0
src/settings/projectSetting.ts

@@ -44,6 +44,8 @@ const setting: ProjectConfig = {
   menuSetting: {
   menuSetting: {
     // 菜单折叠
     // 菜单折叠
     collapsed: false,
     collapsed: false,
+    // 折叠菜单时候是否显示菜单名
+    collapsedShowTitle: false,
     // 是否可拖拽
     // 是否可拖拽
     hasDrag: true,
     hasDrag: true,
     // 是否显示
     // 是否显示

+ 1 - 0
src/types/config.d.ts

@@ -11,6 +11,7 @@ export interface MessageSetting {
 }
 }
 export interface MenuSetting {
 export interface MenuSetting {
   collapsed: boolean;
   collapsed: boolean;
+  collapsedShowTitle: boolean;
   hasDrag: boolean;
   hasDrag: boolean;
   showSearch: boolean;
   showSearch: boolean;
   show: boolean;
   show: boolean;