城阳工作端uniH5前端代码
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.
 
 

352 lines
10 KiB

<template>
<view>
<van-overlay
v-if="overlay"
:show="show"
:z-index="zIndex"
:custom-style="overlayStyle"
:duration="duration"
@click="onClickOverlay"
:lock-scroll="lockScroll"
:root-portal="rootPortal"
/>
<root-portal v-if="rootPortal">
<!-- parse <include src="./popup.wxml"/> -->
<block>
<view
v-if="inited"
:class="
'custom-class ' +
classes +
' ' +
utils.bem('popup', [position, { round, safe: safeAreaInsetBottom, safeTop: safeAreaInsetTop, safeTabBar: safeAreaTabBar }])
"
:style="computed.popupStyle({ zIndex, currentDuration, display, customStyle })"
@transitionend="onTransitionEnd"
>
<slot />
<van-icon
v-if="closeable"
:name="closeIcon"
:class="'close-icon-class van-popup__close-icon van-popup__close-icon--' + closeIconPosition"
@tap.native="onClickCloseIcon"
/>
</view>
</block>
</root-portal>
<!-- parse <include v-else src="./popup.wxml"/> -->
<block v-else>
<view
v-if="inited"
:class="
'custom-class ' + classes + ' ' + utils.bem('popup', [position, { round, safe: safeAreaInsetBottom, safeTop: safeAreaInsetTop, safeTabBar: safeAreaTabBar }])
"
:style="computed.popupStyle({ zIndex, currentDuration, display, customStyle })"
@transitionend="onTransitionEnd"
>
<slot />
<van-icon
v-if="closeable"
:name="closeIcon"
:class="'close-icon-class van-popup__close-icon van-popup__close-icon--' + closeIconPosition"
@tap.native="onClickCloseIcon"
/>
</view>
</block>
</view>
</template>
<script module="utils" lang="wxs" src="@/miniprogram_npm/@vant/weapp/wxs/utils.wxs"></script>
<script module="computed" lang="wxs" src="@/miniprogram_npm/@vant/weapp/popup/index.wxs"></script>
<script>
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
var component_1 = require('../common/component');
var transition_1 = require('../mixins/transition');
export default {
data() {
return {
show: '',
duration: '',
inited: '',
classes: ''
};
},
classes: ['enter-class', 'enter-active-class', 'enter-to-class', 'leave-class', 'leave-active-class', 'leave-to-class', 'close-icon-class'],
mixins: [(0, transition_1.transition)(false)],
props: {
round: Boolean,
closeable: Boolean,
customStyle: String,
overlayStyle: String,
transition: {
type: String
},
zIndex: {
type: Number,
default: 100
},
overlay: {
type: Boolean,
default: true
},
closeIcon: {
type: String,
default: 'cross'
},
closeIconPosition: {
type: String,
default: 'top-right'
},
closeOnClickOverlay: {
type: Boolean,
default: true
},
position: {
type: String,
default: 'center'
},
safeAreaInsetBottom: {
type: Boolean,
default: true
},
safeAreaInsetTop: {
type: Boolean,
default: false
},
safeAreaTabBar: {
type: Boolean,
default: false
},
lockScroll: {
type: Boolean,
default: true
},
rootPortal: {
type: Boolean,
default: false
}
},
created: function () {
this.observeClass();
},
methods: {
onClickCloseIcon: function () {
this.$emit('close');
},
onClickOverlay: function () {
this.$emit('click-overlay');
if (this.closeOnClickOverlay) {
this.$emit('close');
}
},
observeClass: function () {
var _a = this;
var transition = _a.transition;
var position = _a.position;
var duration = _a.duration;
var updateData = {
name: transition || position
};
if (transition === 'none') {
updateData.duration = 0;
this.originDuration = duration;
} else if (this.originDuration != null) {
updateData.duration = this.originDuration;
}
this.setData(updateData);
},
onTransitionEnd() {
console.log('占位:函数 onTransitionEnd 未声明');
}
},
watch: {
transition: {
handler: function () {
var _a = this;
var transition = _a.transition;
var position = _a.position;
var duration = _a.duration;
var updateData = {
name: transition || position
};
if (transition === 'none') {
updateData.duration = 0;
this.originDuration = duration;
} else if (this.originDuration != null) {
updateData.duration = this.originDuration;
}
this.setData(updateData);
},
immediate: true
},
position: {
handler: function () {
var _a = this;
var transition = _a.transition;
var position = _a.position;
var duration = _a.duration;
var updateData = {
name: transition || position
};
if (transition === 'none') {
updateData.duration = 0;
this.originDuration = duration;
} else if (this.originDuration != null) {
updateData.duration = this.originDuration;
}
this.setData(updateData);
},
immediate: true
}
}
};
</script>
<style>
@import '../common/index.css';
.van-popup {
-webkit-overflow-scrolling: touch;
animation: ease both;
background-color: var(--popup-background-color, #fff);
box-sizing: border-box;
max-height: 100%;
overflow-y: auto;
position: fixed;
transition-timing-function: ease;
}
.van-popup--center {
left: 50%;
top: 50%;
transform: translate3d(-50%, -50%, 0);
}
.van-popup--center.van-popup--round {
border-radius: var(--popup-round-border-radius, 16px);
}
.van-popup--top {
left: 0;
top: 0;
width: 100%;
}
.van-popup--top.van-popup--round {
border-radius: 0 0 var(--popup-round-border-radius, var(--popup-round-border-radius, 16px)) var(--popup-round-border-radius, var(--popup-round-border-radius, 16px));
}
.van-popup--right {
right: 0;
top: 50%;
transform: translate3d(0, -50%, 0);
}
.van-popup--right.van-popup--round {
border-radius: var(--popup-round-border-radius, var(--popup-round-border-radius, 16px)) 0 0 var(--popup-round-border-radius, var(--popup-round-border-radius, 16px));
}
.van-popup--bottom {
bottom: 0;
left: 0;
width: 100%;
}
.van-popup--bottom.van-popup--round {
border-radius: var(--popup-round-border-radius, var(--popup-round-border-radius, 16px)) var(--popup-round-border-radius, var(--popup-round-border-radius, 16px)) 0 0;
}
.van-popup--left {
left: 0;
top: 50%;
transform: translate3d(0, -50%, 0);
}
.van-popup--left.van-popup--round {
border-radius: 0 var(--popup-round-border-radius, var(--popup-round-border-radius, 16px)) var(--popup-round-border-radius, var(--popup-round-border-radius, 16px)) 0;
}
.van-popup--bottom.van-popup--safe {
padding-bottom: env(safe-area-inset-bottom);
}
.van-popup--bottom.van-popup--safeTabBar,
.van-popup--top.van-popup--safeTabBar {
bottom: var(--tabbar-height, 50px);
}
.van-popup--safeTop {
padding-top: env(safe-area-inset-top);
}
.van-popup__close-icon {
color: var(--popup-close-icon-color, #969799);
font-size: var(--popup-close-icon-size, 18px);
position: absolute;
z-index: var(--popup-close-icon-z-index, 1);
}
.van-popup__close-icon--top-left {
left: var(--popup-close-icon-margin, 16px);
top: var(--popup-close-icon-margin, 16px);
}
.van-popup__close-icon--top-right {
right: var(--popup-close-icon-margin, 16px);
top: var(--popup-close-icon-margin, 16px);
}
.van-popup__close-icon--bottom-left {
bottom: var(--popup-close-icon-margin, 16px);
left: var(--popup-close-icon-margin, 16px);
}
.van-popup__close-icon--bottom-right {
bottom: var(--popup-close-icon-margin, 16px);
right: var(--popup-close-icon-margin, 16px);
}
.van-popup__close-icon:active {
opacity: 0.6;
}
.van-scale-enter-active,
.van-scale-leave-active {
transition-property: opacity, transform;
}
.van-scale-enter,
.van-scale-leave-to {
opacity: 0;
transform: translate3d(-50%, -50%, 0) scale(0.7);
}
.van-fade-enter-active,
.van-fade-leave-active {
transition-property: opacity;
}
.van-fade-enter,
.van-fade-leave-to {
opacity: 0;
}
.van-center-enter-active,
.van-center-leave-active {
transition-property: opacity;
}
.van-center-enter,
.van-center-leave-to {
opacity: 0;
}
.van-bottom-enter-active,
.van-bottom-leave-active,
.van-left-enter-active,
.van-left-leave-active,
.van-right-enter-active,
.van-right-leave-active,
.van-top-enter-active,
.van-top-leave-active {
transition-property: transform;
}
.van-bottom-enter,
.van-bottom-leave-to {
transform: translate3d(0, 100%, 0);
}
.van-top-enter,
.van-top-leave-to {
transform: translate3d(0, -100%, 0);
}
.van-left-enter,
.van-left-leave-to {
transform: translate3d(-100%, -50%, 0);
}
.van-right-enter,
.van-right-leave-to {
transform: translate3d(100%, -50%, 0);
}
</style>