Commit 5737e478f671e7f1c60f7db08a0007f154b6f4b8
1 parent
a3b7a653
feat: add collapsedShowTitle setting
Showing
8 changed files
with
55 additions
and
6 deletions
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
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; |