<template>
	<view class="uni-section">
		<view class="uni-section-header" @click="onClick">
			<view class="uni-section-header__decoration" v-if="type" :class="type" />
			<slot v-else name="decoration"></slot>

			<view class="uni-section-header__content">
				<text :style="{'font-size':titleFontSize,'color':titleColor}" class="uni-section__content-title"
					:class="{'distraction':!subTitle}">{{ title }}</text>
				<text v-if="subTitle" :style="{'font-size':subTitleFontSize,'color':subTitleColor}"
					class="uni-section-header__content-sub">{{ subTitle }}</text>
			</view>

			<view class="uni-section-header__slot-right">
				<slot name="right"></slot>
			</view>
		</view>

		<view class="uni-section-content" :style="{padding: _padding}">
			<slot />
		</view>
	</view>
</template>

<script>
	/**
	 * Section 标题栏
	 * @description 标题栏
	 * @property {String} type = [line|circle|square] 标题装饰类型
	 * 	@value line 竖线
	 * 	@value circle 圆形
	 * 	@value square 正方形
	 * @property {String} title 主标题
	 * @property {String} titleFontSize 主标题字体大小
	 * @property {String} titleColor 主标题字体颜色
	 * @property {String} subTitle 副标题
	 * @property {String} subTitleFontSize 副标题字体大小
	 * @property {String} subTitleColor 副标题字体颜色
	 * @property {String} padding 默认插槽 padding
	 */

	export default {
		name: 'UniSection',
		emits: ['click'],
		props: {
			type: {
				type: String,
				default: ''
			},
			title: {
				type: String,
				required: true,
				default: ''
			},
			titleFontSize: {
				type: String,
				default: '14px'
			},
			titleColor: {
				type: String,
				default: '#333'
			},
			subTitle: {
				type: String,
				default: ''
			},
			subTitleFontSize: {
				type: String,
				default: '12px'
			},
			subTitleColor: {
				type: String,
				default: '#999'
			},
			padding: {
				type: [Boolean, String],
				default: false
			}
		},
		computed: {
			_padding() {
				if (typeof this.padding === 'string') {
					return this.padding
				}

				return this.padding ? '10px' : ''
			}
		},
		watch: {
			title(newVal) {
				if (uni.report && newVal !== '') {
					uni.report('title', newVal)
				}
			}
		},
		methods: {
			onClick() {
				this.$emit('click')
			}
		}
	}
</script>
<style lang="scss">
	$uni-primary: #2979ff !default;

	.uni-section {
		background-color: #fff;

		.uni-section-header {
			position: relative;
			/* #ifndef APP-NVUE */
			display: flex;
			/* #endif */
			flex-direction: row;
			align-items: center;
			padding: 12px 10px;
			font-weight: normal;

			&__decoration {
				margin-right: 6px;
				background-color: $uni-primary;

				&.line {
					width: 4px;
					height: 12px;
					border-radius: 10px;
				}

				&.circle {
					width: 8px;
					height: 8px;
					border-top-right-radius: 50px;
					border-top-left-radius: 50px;
					border-bottom-left-radius: 50px;
					border-bottom-right-radius: 50px;
				}

				&.square {
					width: 8px;
					height: 8px;
				}
			}

			&__content {
				/* #ifndef APP-NVUE */
				display: flex;
				/* #endif */
				flex-direction: column;
				flex: 1;
				color: #333;

				.distraction {
					flex-direction: row;
					align-items: center;
				}

				&-sub {
					margin-top: 2px;
				}
			}

			&__slot-right {
				font-size: 14px;
			}
		}

		.uni-section-content {
			font-size: 14px;
		}
	}
</style>