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

179 lines
3.1 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view
class="tui-list-class tui-list-cell"
:class="[
arrow ? 'tui-cell-arrow' : '',
arrow && arrowRight ? '' : 'tui-arrow-right',
unlined ? 'tui-cell-unlined' : '',
lineLeft ? 'tui-line-left' : '',
lineRight ? 'tui-line-right' : '',
arrow && arrowColor ? 'tui-arrow-' + arrowColor : '',
radius ? 'tui-radius' : ''
]"
:hover-class="hover ? 'tui-cell-hover' : ''"
:style="{ backgroundColor: backgroundColor, fontSize: size + 'rpx', color: color, padding: padding }"
:hover-stay-time="150"
@tap="handleClick"
>
<slot></slot>
</view>
</template>
<script>
export default {
name: 'tuiListCell',
emits: ['click'],
props: {
//是否有箭头
arrow: {
type: Boolean,
default: false
},
//箭头颜色 传值: whitegray,warning,danger
arrowColor: {
type: String,
default: ''
},
//是否有点击效果
hover: {
type: Boolean,
default: true
},
//隐藏线条
unlined: {
type: Boolean,
default: false
},
//线条是否有左偏移距离
lineLeft: {
type: Boolean,
default: true
},
//线条是否有右偏移距离
lineRight: {
type: Boolean,
default: false
},
padding: {
type: String,
default: '26rpx 30rpx'
},
//背景颜色
backgroundColor: {
type: String,
default: '#fff'
},
//字体大小
size: {
type: Number,
default: 28
},
//字体颜色
color: {
type: String,
default: '#333'
},
//是否加圆角
radius: {
type: Boolean,
default: false
},
//箭头是否有偏移距离
arrowRight: {
type: Boolean,
default: true
},
index: {
type: Number,
default: 0
}
},
methods: {
handleClick() {
this.$emit('click', {
index: this.index
});
}
}
};
</script>
<style scoped>
.tui-list-cell {
position: relative;
width: 100%;
box-sizing: border-box;
}
.tui-radius {
border-radius: 6rpx;
overflow: hidden;
}
.tui-cell-hover {
background-color: #f1f1f1 !important;
}
/* #ifdef MP-BAIDU */
.tui-list-cell:active {
background-color: #f1f1f1 !important;
}
/* #endif */
.tui-list-cell::after {
content: '';
position: absolute;
border-bottom: 1px solid #eaeef1;
-webkit-transform: scaleY(0.5) translateZ(0);
transform: scaleY(0.5) translateZ(0);
transform-origin: 0 100%;
bottom: 0;
right: 0;
left: 0;
pointer-events: none;
}
.tui-line-left::after {
left: 30rpx !important;
}
.tui-line-right::after {
right: 30rpx !important;
}
.tui-cell-unlined::after {
border-bottom: 0 !important;
}
.tui-cell-arrow::before {
content: ' ';
height: 10px;
width: 10px;
border-width: 2px 2px 0 0;
border-color: #c0c0c0;
border-style: solid;
-webkit-transform: matrix(0.5, 0.5, -0.5, 0.5, 0, 0);
transform: matrix(0.5, 0.5, -0.5, 0.5, 0, 0);
position: absolute;
top: 50%;
margin-top: -6px;
right: 30rpx;
}
.tui-arrow-right::before {
right: 0 !important;
}
.tui-arrow-gray::before {
border-color: #666666 !important;
}
.tui-arrow-white::before {
border-color: #ffffff !important;
}
.tui-arrow-warning::before {
border-color: #ff7900 !important;
}
.tui-arrow-success::before {
border-color: #19be6b !important;
}
.tui-arrow-danger::before {
border-color: #eb0909 !important;
}
</style>