You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
2.7 KiB

9 months ago
<template>
<view class="u-demo">
<view class="u-demo-wrap">
<view class="u-demo-title">演示效果</view>
<view class="u-demo-area">
<u-toast ref="uToast"></u-toast>
<u-button @click="btnClick"></u-button>
<u-popup border-radius="10" v-model="show"
@close="close" @open="open" :mode="mode"
length="50%" :mask="mask"
:closeable="closeable"
:close-icon-pos="closeIconPos"
>
<view v-if="mode == 'center'" style="height: 400rpx">
<view class="close-btn">
<u-button @click="show = false;" size="medium">关闭弹窗</u-button>
</view>
</view>
<view class="close-btn" v-if="mode != 'center'">
<u-button size="medium" @click="show = false;">关闭弹窗</u-button>
</view>
</u-popup>
</view>
</view>
<view class="u-config-wrap">
<view class="u-config-title u-border-bottom">
参数配置
</view>
<view class="u-config-item">
<view class="u-item-title">状态</view>
<u-subsection :current="show == false ? 1 : 0" :list="['打开', '关闭']" @change="showChange"></u-subsection>
</view>
<view class="u-config-item">
<view class="u-item-title">弹出方向</view>
<u-subsection :current="2" :list="['上', '下', '左', '右', '中']" @change="modeChange"></u-subsection>
</view>
<view class="u-config-item">
<view class="u-item-title">关闭按钮</view>
<u-subsection :list="['显示', '隐藏']" @change="closeChange"></u-subsection>
</view>
<view class="u-config-item">
<view class="u-item-title">关闭按钮位置</view>
<u-subsection :current="1" :list="['左上角', '右上角', '左下角', '右下角']" @change="closePosChange"></u-subsection>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
show: false,
mode: 'left',
mask: true, // 是否显示遮罩
closeable: true,
closeIconPos: 'top-right'
}
},
watch: {
show(n) {
// console.log(n);
}
},
methods: {
modeChange(index) {
this.mode = index == 0 ? 'top' : index == 1 ? 'bottom' : index == 2 ? 'left' : index == 3 ? 'right' : 'center';
this.show = true;
},
showChange(index) {
this.show = index == 0 ? true : false;
},
closeChange(index) {
this.closeable = !index;
},
closePosChange(index) {
this.closeIconPos = ['top-left', 'top-right', 'bottom-left', 'bottom-right'][index];
},
close() {
// console.log('close');
},
open() {
// console.log('open');
},
btnClick() {
this.show = true;
}
}
}
</script>
<style lang="scss" scoped>
.wrap {
padding: 24rpx;
}
.close-btn {
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
</style>