Skip to content

Commit a47f35e

Browse files
committed
fix: #12 contentWidth: Fluid
1 parent ec5e04d commit a47f35e

File tree

5 files changed

+66
-13
lines changed

5 files changed

+66
-13
lines changed

src/components/page/GlobalLayout.vue

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<a-layout class="layout" :class="device">
2+
<a-layout class="layout" :class="[device]">
33

44
<template v-if="layoutMode === 'sidemenu'">
55
<a-drawer
@@ -47,7 +47,7 @@
4747
</a-drawer>
4848
</template>
4949

50-
<a-layout :class="[layoutMode]" :style="{ paddingLeft: fixSiderbar && device === 'desktop' ? `${sidebarOpened ? 256 : 80}px` : '0' }">
50+
<a-layout :class="[layoutMode, `content-width-${contentWidth}`]" :style="{ paddingLeft: fixSiderbar && device === 'desktop' ? `${sidebarOpened ? 256 : 80}px` : '0' }">
5151
<!-- layout header -->
5252
<global-header :mode="layoutMode" :theme="theme" :collapsed="collapsed" :device="device" @toggle="toggle"/>
5353

@@ -98,6 +98,7 @@
9898
sidebarOpened: state => state.app.sidebar.opened,
9999
fixedHeader: state => state.app.fixedHeader,
100100
fixSiderbar: state => state.app.fixSiderbar,
101+
contentWidth: state => state.app.contentWidth,
101102
theme: state => state.app.theme,
102103
device: state => state.app.device,
103104
})
@@ -205,6 +206,18 @@
205206
width: 100%;
206207
}
207208
}
209+
/* 必须为 topmenu 才能启用流式布局 */
210+
&.content-width-Fluid {
211+
.header-index-wide {
212+
max-width: unset;
213+
margin-left: 24px;
214+
}
215+
216+
.page-header-index-wide {
217+
max-width: unset;
218+
}
219+
}
220+
208221
}
209222
210223
.sidemenu {

src/components/setting/SettingDrawer.vue

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,15 @@
8888
<div :style="{ marginTop: '24px' }">
8989
<a-list :split="false">
9090
<a-list-item>
91-
<a-select slot="actions" defaultValue="auto" size="small">
92-
<a-select-option value="fixed" v-if="layoutMode !== 'sidemenu'" disabled>固定</a-select-option>
93-
<a-select-option value="auto">流式</a-select-option>
94-
</a-select>
91+
<a-tooltip slot="actions">
92+
<template slot='title'>
93+
该设定仅 [顶部栏导航] 时有效
94+
</template>
95+
<a-select size="small" style="width: 80px;" :defaultValue="contentWidth" @change="handleContentWidthChange">
96+
<a-select-option value="Fixed">固定</a-select-option>
97+
<a-select-option value="Fluid" v-if="layoutMode !== 'sidemenu'">流式</a-select-option>
98+
</a-select>
99+
</a-tooltip>
95100
<a-list-item-meta>
96101
<div slot="title">内容区域宽度</div>
97102
</a-list-item-meta>
@@ -103,9 +108,9 @@
103108
</a-list-item-meta>
104109
</a-list-item>
105110
<a-list-item>
106-
<a-switch slot="actions" size="small" :defaultChecked="autoHideHeader" @change="handleFixedHeaderHidden" />
111+
<a-switch slot="actions" size="small" :disabled="!fixedHeader" :defaultChecked="autoHideHeader" @change="handleFixedHeaderHidden" />
107112
<a-list-item-meta>
108-
<div slot="title">下滑时隐藏 Header</div>
113+
<div slot="title" :style="{ textDecoration: !fixedHeader ? 'line-through' : 'unset' }">下滑时隐藏 Header</div>
109114
</a-list-item-meta>
110115
</a-list-item>
111116
<a-list-item >
@@ -177,7 +182,11 @@
177182
fixedHeader: state => state.app.fixedHeader,
178183
fixSiderbar: state => state.app.fixSiderbar,
179184
autoHideHeader: state => state.app.autoHideHeader,
180-
})
185+
contentWidth: state => state.app.contentWidth,
186+
}),
187+
},
188+
watch: {
189+
181190
},
182191
mounted () {
183192
const vm = this
@@ -218,6 +227,9 @@
218227
//
219228
this.handleFixSiderbar(false);
220229
},
230+
handleContentWidthChange (type) {
231+
this.$store.dispatch('ToggleContentWidth', type)
232+
},
221233
changeColor (color) {
222234
if (this.primaryColor !== color) {
223235
this.$store.dispatch('ToggleColor', color)

src/main.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ import {
2222
SIDEBAR_TYPE,
2323
DEFAULT_FIXED_HEADER,
2424
DEFAULT_FIXED_HEADER_HIDDEN,
25-
DEFAULT_FIXED_SIDEMENU
25+
DEFAULT_FIXED_SIDEMENU,
26+
DEFAULT_CONTENT_WIDTH_TYPE
2627
} from "@/store/mutation-types"
2728
import config from '@/defaultSettings'
2829

@@ -42,6 +43,7 @@ new Vue({
4243
store.commit('TOGGLE_LAYOUT_MODE', Vue.ls.get(DEFAULT_LAYOUT_MODE, config.layout))
4344
store.commit('TOGGLE_FIXED_HEADER', Vue.ls.get(DEFAULT_FIXED_HEADER, config.fixedHeader))
4445
store.commit('TOGGLE_FIXED_SIDERBAR', Vue.ls.get(DEFAULT_FIXED_SIDEMENU, config.fixSiderbar))
46+
store.commit('TOGGLE_CONTENT_WIDTH', Vue.ls.get(DEFAULT_CONTENT_WIDTH_TYPE, config.contentWidth))
4547
store.commit('TOGGLE_FIXED_HEADER_HIDDEN', Vue.ls.get(DEFAULT_FIXED_HEADER_HIDDEN, config.autoHideHeader))
4648
store.commit('TOGGLE_WEAK', Vue.ls.get(DEFAULT_COLOR_WEAK, config.colorWeak))
4749
store.commit('TOGGLE_COLOR', Vue.ls.get(DEFAULT_COLOR, config.primaryColor))

src/store/modules/app.js

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
import Vue from 'vue'
2-
import { SIDEBAR_TYPE, DEFAULT_THEME, DEFAULT_LAYOUT_MODE, DEFAULT_COLOR, DEFAULT_COLOR_WEAK, DEFAULT_FIXED_HEADER, DEFAULT_FIXED_SIDEMENU, DEFAULT_FIXED_HEADER_HIDDEN } from "@/store/mutation-types"
2+
import {
3+
SIDEBAR_TYPE,
4+
DEFAULT_THEME,
5+
DEFAULT_LAYOUT_MODE,
6+
DEFAULT_COLOR,
7+
DEFAULT_COLOR_WEAK,
8+
DEFAULT_FIXED_HEADER,
9+
DEFAULT_FIXED_SIDEMENU,
10+
DEFAULT_FIXED_HEADER_HIDDEN,
11+
DEFAULT_CONTENT_WIDTH_TYPE
12+
} from "@/store/mutation-types"
313

414
const app = {
515
state: {
@@ -10,6 +20,7 @@ const app = {
1020
device: 'desktop',
1121
theme: '',
1222
layout: '',
23+
contentWidth: '',
1324
fixedHeader: false,
1425
fixSiderbar: false,
1526
autoHideHeader: false,
@@ -50,7 +61,10 @@ const app = {
5061
Vue.ls.set(DEFAULT_FIXED_HEADER_HIDDEN, show)
5162
state.autoHideHeader = show
5263
},
53-
64+
TOGGLE_CONTENT_WIDTH: (state, type) => {
65+
Vue.ls.set(DEFAULT_CONTENT_WIDTH_TYPE, type)
66+
state.contentWidth = type
67+
},
5468
TOGGLE_COLOR: (state, color) => {
5569
Vue.ls.set(DEFAULT_COLOR, color)
5670
state.color = color
@@ -77,6 +91,9 @@ const app = {
7791
commit('TOGGLE_LAYOUT_MODE', mode)
7892
},
7993
ToggleFixedHeader({ commit }, fixedHeader) {
94+
if (!fixedHeader) {
95+
commit('TOGGLE_FIXED_HEADER_HIDDEN', false)
96+
}
8097
commit('TOGGLE_FIXED_HEADER', fixedHeader)
8198
},
8299
ToggleFixSiderbar({ commit }, fixSiderbar) {
@@ -85,6 +102,9 @@ const app = {
85102
ToggleFixedHeaderHidden({ commit }, show) {
86103
commit('TOGGLE_FIXED_HEADER_HIDDEN', show)
87104
},
105+
ToggleContentWidth({ commit }, type) {
106+
commit('TOGGLE_CONTENT_WIDTH', type)
107+
},
88108
ToggleColor({ commit }, color) {
89109
commit('TOGGLE_COLOR', color)
90110
},

src/store/mutation-types.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,10 @@ export const DEFAULT_COLOR = 'DEFAULT_COLOR'
66
export const DEFAULT_COLOR_WEAK = 'DEFAULT_COLOR_WEAK'
77
export const DEFAULT_FIXED_HEADER = 'DEFAULT_FIXED_HEADER'
88
export const DEFAULT_FIXED_SIDEMENU= 'DEFAULT_FIXED_SIDEMENU'
9-
export const DEFAULT_FIXED_HEADER_HIDDEN = 'DEFAULT_FIXED_HEADER_HIDDEN'
9+
export const DEFAULT_FIXED_HEADER_HIDDEN = 'DEFAULT_FIXED_HEADER_HIDDEN'
10+
export const DEFAULT_CONTENT_WIDTH_TYPE = 'DEFAULT_CONTENT_WIDTH_TYPE'
11+
12+
export const CONTENT_WIDTH_TYPE = {
13+
Fluid: 'Fluid',
14+
Fixed: 'Fixed'
15+
}

0 commit comments

Comments
 (0)