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.
duomendian/components/thorui/tui-list-cell.vue

179 lines
3.1 KiB

3 months ago
<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
},
//箭头颜色 传值: white,gray,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>