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 | 152 | const { appendClass } = props; |
153 | 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 | 162 | return menuList.map((menu) => { |
157 | 163 | if (!menu) { |
158 | 164 | return null; |
... | ... | @@ -172,7 +178,7 @@ export default defineComponent({ |
172 | 178 | <MenuContent |
173 | 179 | item={menu} |
174 | 180 | level={index} |
175 | - showTitle={showTitle} | |
181 | + showTitle={unref(showTitle)} | |
176 | 182 | searchValue={menuState.searchValue} |
177 | 183 | />, |
178 | 184 | ]} |
... | ... | @@ -184,7 +190,7 @@ export default defineComponent({ |
184 | 190 | {{ |
185 | 191 | title: () => [ |
186 | 192 | <MenuContent |
187 | - showTitle={showTitle} | |
193 | + showTitle={unref(showTitle)} | |
188 | 194 | item={menu} |
189 | 195 | level={index} |
190 | 196 | searchValue={menuState.searchValue} |
... | ... | @@ -218,7 +224,11 @@ export default defineComponent({ |
218 | 224 | inlineIndent={props.inlineIndent} |
219 | 225 | theme={unref(theme)} |
220 | 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 | 232 | {...inlineCollapsedObj} |
223 | 233 | > |
224 | 234 | {{ | ... | ... |
src/components/Menu/src/index.less
... | ... | @@ -14,6 +14,15 @@ |
14 | 14 | } |
15 | 15 | |
16 | 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 | 26 | &__wrap { |
18 | 27 | /* 滚动槽 */ |
19 | 28 | &::-webkit-scrollbar { | ... | ... |
src/components/Menu/src/props.ts
... | ... | @@ -11,6 +11,10 @@ export const basicProps = { |
11 | 11 | type: Boolean as PropType<boolean>, |
12 | 12 | default: false, |
13 | 13 | }, |
14 | + collapsedShowTitle: { | |
15 | + type: Boolean as PropType<boolean>, | |
16 | + default: false, | |
17 | + }, | |
14 | 18 | flatItems: { |
15 | 19 | type: Array as PropType<Menu[]>, |
16 | 20 | default: () => [], | ... | ... |
src/components/Modal/src/BasicModal.tsx
src/layouts/default/LayoutMenu.tsx
... | ... | @@ -177,7 +177,7 @@ export default defineComponent({ |
177 | 177 | return () => { |
178 | 178 | const { |
179 | 179 | showLogo, |
180 | - menuSetting: { type: menuType, mode, theme, collapsed }, | |
180 | + menuSetting: { type: menuType, mode, theme, collapsed, collapsedShowTitle }, | |
181 | 181 | } = unref(getProjectConfigRef); |
182 | 182 | |
183 | 183 | const isSidebarType = menuType === MenuTypeEnum.SIDEBAR; |
... | ... | @@ -190,6 +190,7 @@ export default defineComponent({ |
190 | 190 | type={menuType} |
191 | 191 | mode={props.menuMode || mode} |
192 | 192 | class="layout-menu" |
193 | + collapsedShowTitle={collapsedShowTitle} | |
193 | 194 | theme={themeData} |
194 | 195 | showLogo={isShowLogo} |
195 | 196 | search={unref(showSearchRef) && !collapsed} | ... | ... |
src/layouts/default/setting/SettingDrawer.tsx
... | ... | @@ -208,7 +208,14 @@ export default defineComponent({ |
208 | 208 | const { |
209 | 209 | contentMode, |
210 | 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 | 219 | } = appStore.getProjectConfig; |
213 | 220 | return [ |
214 | 221 | renderSwitchItem('侧边菜单拖拽', { |
... | ... | @@ -232,6 +239,13 @@ export default defineComponent({ |
232 | 239 | def: collapsed, |
233 | 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 | 250 | renderSwitchItem('固定header', { |
237 | 251 | handler: (e) => { |
... | ... | @@ -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 | 473 | if (event === 'lockTime') { |
453 | 474 | config = { |
454 | 475 | lockTime: value, | ... | ... |
src/settings/projectSetting.ts