<template>
  <view
    class="up-image-container"
    :style="{ marginBottom: multiLine ? `-${distance}rpx` : 0 }"
    :class="{ 'up-image-direction': direction == 'column', 'up-image__warp': multiLine }"
  >
    <view
      v-for="(item, index) in imageList"
      :key="index"
      class="up-image__itembox"
      :style="{
        width: width,
        height: height,
        borderRadius: radius,
        marginLeft: direction == 'column' || multiLine ? 0 : (index && distance) + 'rpx',
        marginRight: multiLine ? distance + 'rpx' : 0,
        marginBottom: multiLine ? distance + 'rpx' : 0,
        marginTop: direction == 'row' ? 0 : (index && distance) + 'rpx'
      }"
      @tap="bindClick(index, item.id)"
    >
      <image
        class="up-image-item"
        :mode="mode"
        :lazy-load="lazyLoad"
        fade-show="fadeShow"
        :webp="webp"
        :show-menu-by-longpress="longpress"
        @error="error"
        @load="load"
        :style="{ width: width, height: height, borderRadius: radius, borderWidth: borderWidth, borderColor: borderColor }"
        :src="item.src"
      ></image>
      <slot></slot>
    </view>
  </view>
</template>

<script>
export default {
  name: 'tuiImageGroup',
  emits: ['errorEvent', 'loaded', 'click'],
  props: {
    //图片集合
    /*
		  [{id:1,src:"1.png"}]
		*/
    imageList: {
      type: Array,
      default: () => {
        return [];
      }
    },
    //图片宽度
    width: {
      type: String,
      default: '120rpx'
    },
    //图片高度
    height: {
      type: String,
      default: '120rpx'
    },
    //图片边框宽度 rpx
    borderWidth: {
      type: String,
      default: '0'
    },
    //图片边框颜色 可传rgba
    borderColor: {
      type: String,
      default: '#fff'
    },
    //图片圆角
    radius: {
      type: String,
      default: '50%'
    },
    //图片裁剪、缩放的模式
    mode: {
      type: String,
      default: 'scaleToFill'
    },
    //图片懒加载。只针对page与scroll-view下的image有效
    lazyLoad: {
      type: Boolean,
      default: true
    },
    //图片显示动画效果 | 仅App-nvue 2.3.4+ Android有效
    fadeShow: {
      type: Boolean,
      default: true
    },
    //默认不解析 webP 格式，只支持网络资源 | 微信小程序2.9.0
    webp: {
      type: Boolean,
      default: false
    },
    //开启长按图片显示识别小程序码菜单 | 微信小程序2.7.0
    longpress: {
      type: Boolean,
      default: false
    },
    //是否组合排列
    isGroup: {
      type: Boolean,
      default: false
    },
    //排列方向 row ，column
    direction: {
      type: String,
      default: 'row'
    },
    //偏移距离 rpx
    distance: {
      type: [Number, String],
      default: -16
    },
    //是否可多行展示，排列方向 row时生效，distance需设置为大于0的数
    multiLine: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {};
  },
  methods: {
    error(e) {
      this.$emit('errorEvent', e);
    },
    load(e) {
      this.$emit('loaded', e);
    },
    bindClick(index, id) {
      this.$emit('click', {
        index: index,
        id: id || ''
      });
    }
  }
};
</script>

<style scoped>
.up-image-container {
  display: inline-flex;
  align-items: center;
}
.up-image-direction {
  flex-direction: column;
}
.up-image__warp {
  flex-wrap: wrap;
}
.up-image__itembox {
  position: relative;
}
.up-image-item {
  border-style: solid;
  flex-shrink: 0;
  display: block;
}
</style>
