<template>
	<view class="tui-divider" :style="{ height: height + 'rpx' }">
		<view class="tui-divider-line" :style="{ width: width, background: getBgColor(gradual, gradualColor, dividerColor) }"></view>
		<view
			class="tui-divider-text"
			:style="{ color: color, fontSize: size + 'rpx', lineHeight: size + 'rpx', backgroundColor: backgroundColor, fontWeight: bold ? 'bold' : 'normal' }"
		>
			<slot></slot>
		</view>
	</view>
</template>

<script>
export default {
	name: 'tuiDivider',
	props: {
		//divider占据高度
		height: {
			type: Number,
			default: 100
		},
		//divider宽度,可填写具体长度,如400rpx
		width: {
			type: String,
			default: '100%'
		},
		//divider颜色,如果为渐变线条,此属性失效
		dividerColor: {
			type: String,
			default: '#e5e5e5'
		},
		//文字颜色
		color: {
			type: String,
			default: '#999'
		},
		//文字大小 rpx
		size: {
			type: Number,
			default: 24
		},
		bold: {
			type: Boolean,
			default: false
		},
		//背景颜色,和当前页面背景色保持一致
		backgroundColor: {
			type: String,
			default: '#fafafa'
		},
		//是否为渐变线条,为true,divideColor失效
		gradual: {
			type: Boolean,
			default: false
		},
		//渐变色值,to right ,提供两个色值即可,由浅至深
		gradualColor: {
			type: Array,
			default: function() {
				return ['#eee', '#ccc'];
			}
		}
	},
	methods: {
		getBgColor: function(gradual, gradualColor, dividerColor) {
			let bgColor = dividerColor;
			if (gradual) {
				bgColor = 'linear-gradient(to right,' + gradualColor[0] + ',' + gradualColor[1] + ',' + gradualColor[1] + ',' + gradualColor[0] + ')';
			}
			return bgColor;
		}
	}
};
</script>

<style scoped>
.tui-divider {
	width: 100%;
	position: relative;
	text-align: center;
	display: flex;
	justify-content: center;
	align-items: center;
	box-sizing: border-box;
	overflow: hidden;
}

.tui-divider-line {
	position: absolute;
	height: 1rpx;
	top: 50%;
	left: 50%;
	-webkit-transform: scaleY(0.5) translateX(-50%) translateZ(0);
	transform: scaleY(0.5) translateX(-50%) translateZ(0);
}

.tui-divider-text {
	position: relative;
	text-align: center;
	padding: 0 18rpx;
	z-index: 1;
}
</style>