<template>
  <view
    class="tn-grid-item-class tn-grid-item"
    :class="[
      backgroundColorClass
    ]"
    :hover-class="hoverClass"
    :hover-stay-time="150"
    :style="{
      backgroundColor: backgroundColorStyle,
      width: gridWidth
    }"
    @tap="click"
  >
    <view
      class="tn-grid-item__box"
    >
      <slot></slot>
    </view>
  </view>
</template>

<script>
  import componentsColorMixin from '../../libs/mixin/components_color.js'
  export default {
    mixins: [ componentsColorMixin ],
    name: 'tn-grid-item',
    props: {
      // 序号
      index: {
        type: [Number, String],
        default: ''
      }
    },
    data() {
      return {
        // 父组件数据
        parentData: {
          // 按下去的样式
          hoverClass: '',
          col: 3
        }
      }
    },
    created() {
      // 父组件实例
      this.updateParentData()
      this.parent.children.push(this)
    },
    computed: {
      // 计算每个宫格的宽度
      gridWidth() {
        // #ifdef MP-WEIXIN
        return '100%'
        // #endif
        // #ifndef MP-WEIXIN
        return 100 / Number(this.parentData.col) + '%'
        // #endif
      },
      // 点击效果
      hoverClass() {
        return this.parentData.hoverClass !== 'none' 
                 ? this.parentData.hoverClass + ' tn-grid-item--hover' 
                 : this.parentData.hoverClass
      }
    },
    methods: {
      // 获取父组件参数
      updateParentData() {
        this.getParentData('tn-grid')
      },
      click() {
        this.$emit('click', this.index)
        this.parent && this.parent.click(this.index)
      }
    }
  }
</script>

<style lang="scss" scoped>
  .tn-grid-item {
    box-sizing: border-box;
    background-color: #FFFFFF;
    /* #ifndef APP-NVUE */
    display: flex;
    flex-direction: row;
    /* #endif */
    align-items: center;
    justify-content: center;
    position: relative;
    flex-direction: column;
    
    /* #ifdef MP */
    // float: left;
    /* #endif */
    
    &__box {
      /* #ifndef APP-NVUE */
      display: flex;
      flex-direction: row;
      /* #endif */
      align-items: center;
      justify-content: center;
      flex-direction: column;
      flex: 1;
      width: 100%;
      height: 100%;
    }
    
    &--hover {
      background: #F8F7F8 !important;
    }
  }
</style>
