Commit 5737e478f671e7f1c60f7db08a0007f154b6f4b8

Authored by vben
1 parent a3b7a653

feat: add collapsedShowTitle setting

src/components/Menu/src/BasicMenu.tsx
@@ -152,7 +152,13 @@ export default defineComponent({ @@ -152,7 +152,13 @@ export default defineComponent({
152 const { appendClass } = props; 152 const { appendClass } = props;
153 const levelCls = `basic-menu-item__level${index} ${menuState.theme} `; 153 const levelCls = `basic-menu-item__level${index} ${menuState.theme} `;
154 154
155 - const showTitle = props.isAppMenu ? !menuStore.getCollapsedState : true; 155 + const showTitle = computed(() => {
  156 + if (!props.isAppMenu) return true;
  157 + if (!props.collapsedShowTitle) {
  158 + return !menuStore.getCollapsedState;
  159 + }
  160 + return true;
  161 + });
156 return menuList.map((menu) => { 162 return menuList.map((menu) => {
157 if (!menu) { 163 if (!menu) {
158 return null; 164 return null;
@@ -172,7 +178,7 @@ export default defineComponent({ @@ -172,7 +178,7 @@ export default defineComponent({
172 <MenuContent 178 <MenuContent
173 item={menu} 179 item={menu}
174 level={index} 180 level={index}
175 - showTitle={showTitle} 181 + showTitle={unref(showTitle)}
176 searchValue={menuState.searchValue} 182 searchValue={menuState.searchValue}
177 />, 183 />,
178 ]} 184 ]}
@@ -184,7 +190,7 @@ export default defineComponent({ @@ -184,7 +190,7 @@ export default defineComponent({
184 {{ 190 {{
185 title: () => [ 191 title: () => [
186 <MenuContent 192 <MenuContent
187 - showTitle={showTitle} 193 + showTitle={unref(showTitle)}
188 item={menu} 194 item={menu}
189 level={index} 195 level={index}
190 searchValue={menuState.searchValue} 196 searchValue={menuState.searchValue}
@@ -218,7 +224,11 @@ export default defineComponent({ @@ -218,7 +224,11 @@ export default defineComponent({
218 inlineIndent={props.inlineIndent} 224 inlineIndent={props.inlineIndent}
219 theme={unref(theme)} 225 theme={unref(theme)}
220 onOpenChange={handleOpenChange} 226 onOpenChange={handleOpenChange}
221 - class={['basic-menu', unref(transparentMenuClass)]} 227 + class={[
  228 + 'basic-menu',
  229 + props.collapsedShowTitle && 'collapsed-show-title',
  230 + unref(transparentMenuClass),
  231 + ]}
222 {...inlineCollapsedObj} 232 {...inlineCollapsedObj}
223 > 233 >
224 {{ 234 {{
src/components/Menu/src/index.less
@@ -14,6 +14,15 @@ @@ -14,6 +14,15 @@
14 } 14 }
15 15
16 .basic-menu { 16 .basic-menu {
  17 + &.collapsed-show-title.ant-menu-inline-collapsed {
  18 + & > li > .ant-menu-submenu-title {
  19 + display: flex;
  20 + margin-top: 12px;
  21 + font-size: 12px;
  22 + flex-direction: column;
  23 + }
  24 + }
  25 +
17 &__wrap { 26 &__wrap {
18 /* 滚动槽 */ 27 /* 滚动槽 */
19 &::-webkit-scrollbar { 28 &::-webkit-scrollbar {
src/components/Menu/src/props.ts
@@ -11,6 +11,10 @@ export const basicProps = { @@ -11,6 +11,10 @@ export const basicProps = {
11 type: Boolean as PropType<boolean>, 11 type: Boolean as PropType<boolean>,
12 default: false, 12 default: false,
13 }, 13 },
  14 + collapsedShowTitle: {
  15 + type: Boolean as PropType<boolean>,
  16 + default: false,
  17 + },
14 flatItems: { 18 flatItems: {
15 type: Array as PropType<Menu[]>, 19 type: Array as PropType<Menu[]>,
16 default: () => [], 20 default: () => [],
src/components/Modal/src/BasicModal.tsx
@@ -199,6 +199,7 @@ export default defineComponent({ @@ -199,6 +199,7 @@ export default defineComponent({
199 } 199 }
200 } 200 }
201 } 201 }
  202 +
202 /** 203 /**
203 * @description: 设置modal参数 204 * @description: 设置modal参数
204 */ 205 */
src/layouts/default/LayoutMenu.tsx
@@ -177,7 +177,7 @@ export default defineComponent({ @@ -177,7 +177,7 @@ export default defineComponent({
177 return () => { 177 return () => {
178 const { 178 const {
179 showLogo, 179 showLogo,
180 - menuSetting: { type: menuType, mode, theme, collapsed }, 180 + menuSetting: { type: menuType, mode, theme, collapsed, collapsedShowTitle },
181 } = unref(getProjectConfigRef); 181 } = unref(getProjectConfigRef);
182 182
183 const isSidebarType = menuType === MenuTypeEnum.SIDEBAR; 183 const isSidebarType = menuType === MenuTypeEnum.SIDEBAR;
@@ -190,6 +190,7 @@ export default defineComponent({ @@ -190,6 +190,7 @@ export default defineComponent({
190 type={menuType} 190 type={menuType}
191 mode={props.menuMode || mode} 191 mode={props.menuMode || mode}
192 class="layout-menu" 192 class="layout-menu"
  193 + collapsedShowTitle={collapsedShowTitle}
193 theme={themeData} 194 theme={themeData}
194 showLogo={isShowLogo} 195 showLogo={isShowLogo}
195 search={unref(showSearchRef) && !collapsed} 196 search={unref(showSearchRef) && !collapsed}
src/layouts/default/setting/SettingDrawer.tsx
@@ -208,7 +208,14 @@ export default defineComponent({ @@ -208,7 +208,14 @@ export default defineComponent({
208 const { 208 const {
209 contentMode, 209 contentMode,
210 headerSetting: { fixed }, 210 headerSetting: { fixed },
211 - menuSetting: { hasDrag, collapsed, showSearch, menuWidth, topMenuAlign } = {}, 211 + menuSetting: {
  212 + hasDrag,
  213 + collapsed,
  214 + showSearch,
  215 + menuWidth,
  216 + topMenuAlign,
  217 + collapsedShowTitle,
  218 + } = {},
212 } = appStore.getProjectConfig; 219 } = appStore.getProjectConfig;
213 return [ 220 return [
214 renderSwitchItem('侧边菜单拖拽', { 221 renderSwitchItem('侧边菜单拖拽', {
@@ -232,6 +239,13 @@ export default defineComponent({ @@ -232,6 +239,13 @@ export default defineComponent({
232 def: collapsed, 239 def: collapsed,
233 disabled: !unref(getShowMenuRef), 240 disabled: !unref(getShowMenuRef),
234 }), 241 }),
  242 + renderSwitchItem('折叠菜单显示名称', {
  243 + handler: (e) => {
  244 + baseHandler('collapsedShowTitle', e);
  245 + },
  246 + def: collapsedShowTitle,
  247 + disabled: !unref(getShowMenuRef) || !collapsed,
  248 + }),
235 249
236 renderSwitchItem('固定header', { 250 renderSwitchItem('固定header', {
237 handler: (e) => { 251 handler: (e) => {
@@ -449,6 +463,13 @@ export default defineComponent({ @@ -449,6 +463,13 @@ export default defineComponent({
449 }, 463 },
450 }; 464 };
451 } 465 }
  466 + if (event === 'collapsedShowTitle') {
  467 + config = {
  468 + menuSetting: {
  469 + collapsedShowTitle: value,
  470 + },
  471 + };
  472 + }
452 if (event === 'lockTime') { 473 if (event === 'lockTime') {
453 config = { 474 config = {
454 lockTime: value, 475 lockTime: value,
src/settings/projectSetting.ts
@@ -44,6 +44,8 @@ const setting: ProjectConfig = { @@ -44,6 +44,8 @@ const setting: ProjectConfig = {
44 menuSetting: { 44 menuSetting: {
45 // 菜单折叠 45 // 菜单折叠
46 collapsed: false, 46 collapsed: false,
  47 + // 折叠菜单时候是否显示菜单名
  48 + collapsedShowTitle: false,
47 // 是否可拖拽 49 // 是否可拖拽
48 hasDrag: true, 50 hasDrag: true,
49 // 是否显示 51 // 是否显示
src/types/config.d.ts
@@ -11,6 +11,7 @@ export interface MessageSetting { @@ -11,6 +11,7 @@ export interface MessageSetting {
11 } 11 }
12 export interface MenuSetting { 12 export interface MenuSetting {
13 collapsed: boolean; 13 collapsed: boolean;
  14 + collapsedShowTitle: boolean;
14 hasDrag: boolean; 15 hasDrag: boolean;
15 showSearch: boolean; 16 showSearch: boolean;
16 show: boolean; 17 show: boolean;