<template>
  <view class="tn-table-class tn-table" :class="[tableClass]" :style="[tableStyle]">
    <slot></slot>
  </view>
</template>

<script>
  export default {
    name: 'table-bd',
    props: {
      // 边框宽度
      borderWidth: {
        type: [String, Number],
        default: ''
      },
      // 边框颜色
      borderColor: {
        type: String,
        default: ''
      },
      // 显示上边框
      borderTop: {
        type: Boolean,
        default: true
      },
      // 显示右边框
      borderRight: {
        type: Boolean,
        default: false
      },
      // 显示下边框
      borderBottom: {
        type: Boolean,
        default: false
      },
      // 显示左边框
      borderLeft: {
        type: Boolean,
        default: true
      }
    },
    computed: {
      parentData() {
        return [this.borderWidth, this.borderColor]
      },
      tableClass() {
        let clazz = ''
        return clazz
      },
      tableStyle() {
        let style = {}
        if (this.borderWidth !== '') {
          style.borderWidth = this.borderWidth + 'rpx'
        }
        if (this.borderColor) {
          style.borderColor = this.borderColor
        }
        if (this.borderLeft) {
          style.borderLeftStyle = 'solid'
        }
        if (this.borderRight) {
          style.borderRightStyle = 'solid'
        }
        if (this.borderTop) {
          style.borderTopStyle = 'solid'
        }
        if (this.borderBottom) {
          style.borderBottomStyle = 'solid'
        }
        return style
      }
    },
    data() {
      return {}
    },
    created() {
      this.children = []
    },
    watch: {
      parentData() {
        // 更新子组件的数据
        if (this.children.length) {
          this.children.map((child) => {
            typeof(child.updateParentData) === 'function' && child.updateParentData()
          })
        }
      }
    }
  }
</script>

<style lang="scss" scoped>
  .tn-table {
    box-sizing: border-box;
    width: 100%;
    border-width: 1rpx;
    border-style: none;
    border-color: var(--ui-BG-Main);;
  }
</style>
