提交 4f3bfdea 编写于 作者: inkwalk's avatar inkwalk

add: set windows style apis

上级 b56cf24a
...@@ -171,7 +171,10 @@ const ui = [ ...@@ -171,7 +171,10 @@ const ui = [
'showRightWindow', 'showRightWindow',
'hideTopWindow', 'hideTopWindow',
'hideLeftWindow', 'hideLeftWindow',
'hideRightWindow' 'hideRightWindow',
'setTopWindowStyle',
'setLeftWindowStyle',
'setRightWindowStyle'
] ]
const event = [ const event = [
......
<template> <template>
<uni-layout <uni-layout
v-if="responsive" v-if="responsive"
:class="{'uni-app--showlayout':showLayout,'uni-app--showtopwindow':showTopWindow,'uni-app--showleftwindow':showLeftWindow,'uni-app--showrightwindow':showRightWindow}" :class="{'uni-app--showlayout':showLayout,'uni-app--showtopwindow':showTopWindow,'uni-app--showleftwindow':showLeftWindow,'uni-app--showrightwindow':showRightWindow}"
> >
<uni-top-window <uni-top-window
v-if="topWindow" v-if="topWindow"
v-show="showTopWindow || apiShowTopWindow" v-show="showTopWindow || apiShowTopWindow"
> >
<div <div
ref="topWindow" ref="topWindow"
class="uni-top-window" class="uni-top-window"
:style="topWindowStyle" :style="topWindowStyle"
> >
<v-uni-top-window <v-uni-top-window
ref="top" ref="top"
:navigation-bar-title-text="navigationBarTitleText" :navigation-bar-title-text="navigationBarTitleText"
v-bind="bindWindow" v-bind="bindWindow"
@hook:mounted="onTopWindowInit" @hook:mounted="onTopWindowInit"
/> />
</div> </div>
<div <div
class="uni-top-window--placeholder" class="uni-top-window--placeholder"
:style="{height:topWindowHeight}" :style="{height:topWindowHeight}"
/> />
</uni-top-window> </uni-top-window>
<uni-content> <uni-content>
...@@ -30,52 +30,52 @@ ...@@ -30,52 +30,52 @@
<router-view :key="routerKey" /> <router-view :key="routerKey" />
</keep-alive> </keep-alive>
</uni-main> </uni-main>
<uni-left-window <uni-left-window
v-if="leftWindow" v-if="leftWindow"
v-show="showLeftWindow || apiShowLeftWindow" v-show="showLeftWindow || apiShowLeftWindow"
ref="leftWindow" ref="leftWindow"
:data-show="apiShowLeftWindow" :data-show="apiShowLeftWindow"
:style="leftWindowStyle" :style="leftWindowStyle"
> >
<div <div
v-if="apiShowLeftWindow" v-if="apiShowLeftWindow"
class="uni-mask" class="uni-mask"
@click="apiShowLeftWindow = false" @click="apiShowLeftWindow = false"
/> />
<div class="uni-left-window"> <div class="uni-left-window">
<v-uni-left-window <v-uni-left-window
ref="left" ref="left"
v-bind="bindWindow" v-bind="bindWindow"
@hook:mounted="onLeftWindowInit" @hook:mounted="onLeftWindowInit"
/> />
</div> </div>
</uni-left-window> </uni-left-window>
<uni-right-window <uni-right-window
v-if="rightWindow" v-if="rightWindow"
v-show="showRightWindow || apiShowRightWindow" v-show="showRightWindow || apiShowRightWindow"
ref="rightWindow" ref="rightWindow"
:data-show="apiShowRightWindow" :data-show="apiShowRightWindow"
:style="rightWindowStyle" :style="rightWindowStyle"
> >
<div <div
v-if="apiShowRightWindow" v-if="apiShowRightWindow"
class="uni-mask" class="uni-mask"
@click="apiShowRightWindow = false" @click="apiShowRightWindow = false"
/> />
<div class="uni-right-window"> <div class="uni-right-window">
<v-uni-right-window <v-uni-right-window
ref="right" ref="right"
v-bind="bindWindow" v-bind="bindWindow"
@hook:mounted="onRightWindowInit" @hook:mounted="onRightWindowInit"
/> />
</div> </div>
</uni-right-window> </uni-right-window>
</uni-content> </uni-content>
<!--TODO footer--> <!--TODO footer-->
</uni-layout> </uni-layout>
<keep-alive <keep-alive
v-else v-else
:include="keepAliveInclude" :include="keepAliveInclude"
> >
<router-view :key="routerKey" /> <router-view :key="routerKey" />
</keep-alive> </keep-alive>
...@@ -274,6 +274,15 @@ export default { ...@@ -274,6 +274,15 @@ export default {
} }
} }
}, },
setWindowStyle (type, style) {
if (!this[type + 'Window']) {
return type + 'Window not found'
}
if (style) {
this[type + 'WindowStyle'] = style
this.$nextTick(this['on' + capitalize(type) + 'WindowInit'])
}
},
initMaxWidth () { initMaxWidth () {
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
this.checkMaxWidth() this.checkMaxWidth()
...@@ -438,4 +447,4 @@ export default { ...@@ -438,4 +447,4 @@ export default {
z-index: 998; z-index: 998;
overflow: hidden; overflow: hidden;
} }
</style> </style>
...@@ -25,7 +25,7 @@ export function showTopWindow () { ...@@ -25,7 +25,7 @@ export function showTopWindow () {
export function hideTopWindow () { export function hideTopWindow () {
return showWindow('top', false) return showWindow('top', false)
} }
export function showLeftWindow () { export function showLeftWindow () {
return showWindow('left', true) return showWindow('left', true)
...@@ -40,4 +40,31 @@ export function showRightWindow () { ...@@ -40,4 +40,31 @@ export function showRightWindow () {
export function hideRightWindow () { export function hideRightWindow () {
return showWindow('right', false) return showWindow('right', false)
} }
function setWindowStyle (type, style) {
const api = 'set' + capitalize(type) + 'WindowStyle'
const app = getApp()
if (!app) {
return {
errMsg: `${api}:fail app not ready`
}
}
const msg = app.$children[0].$refs.layout.setWindowStyle(type, style)
if (msg) {
return {
errMsg: `${api}:fail ${msg}`
}
}
return {}
}
export function setTopWindowStyle (style) {
return setWindowStyle('top', style)
}
export function setLeftWindowStyle (style) {
return setWindowStyle('left', style)
}
export function setRightWindowStyle (style) {
return setWindowStyle('right', style)
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册