<template>
  <view style="flex: 1;">
    <scroll-view direction="horizontal" style="flex-direction: row;">
      <button class="button_item" @click="delayShow">测试延时显示</button>
      <button class="button_item" @click="switchItemContent">修改item子元素</button>
    </scroll-view>
    <list-view v-show="list_show" id="listview" style="flex: 1;" show-scrollbar=false @scrolltolower="onScrollTolower">
      <list-item v-for="index in item_count" class="item" @click="itemClick(index)">
        <view style="flex-direction: row;">
          <text>item-------<text>{{index}}</text></text>
          <scroll-view direction="horizontal" show-scrollbar="false" class="scroll_item">
            <text>scroll-view{{index}}：</text>
            <text class="tip_text" v-for="tab in 5">元素{{tab}}</text>
          </scroll-view>
        </view>
        <text v-show="displayArrow">item-------<text>{{index}}</text></text>

        <switch :checked="true"></switch>
      </list-item>
    </list-view>
  </view>
</template>

<script>
  export default {
    data() {
      return {
        item_count: 20,
        list_show: true,
        listViewElement: null as UniListViewElement | null,
        displayArrow: false
      }
    },
    onReady() {
      this.listViewElement = uni.getElementById<UniListViewElement>('listview')
    },
    methods: {
      onScrollTolower(_ : ScrollToLowerEvent) {
        setTimeout(() => {
          this.item_count += 20
        }, 300)
      },
      //用于自动化测试
      listViewScrollByY(y : number) {
        this.listViewElement?.scrollBy(0, y)
      },
      itemClick(index : number) {
        console.log("itemTextClick---" + index)
      },
      delayShow() {
        this.list_show = !this.list_show
        this.item_count += 20
        //延时显示list-view 测试list-item延时显示bug
        setTimeout(() => {
          this.list_show = !this.list_show
        }, 400)
      },
      switchItemContent() {
        this.displayArrow = !this.displayArrow
      }
    }
  }
</script>

<style>
  .item {
    padding: 15px;
    margin: 0 0 5px 0;
    border: 1px solid #000000;
    background-color: #fdfdfd;
    border-radius: 5px;
  }

  .button_item {
    width: 200px;
  }

  .scroll_item {
    flex: 1;
    flex-direction: row;
    overflow: hidden;
    margin-left: 10px;
  }

  .tip_text {
    border-style: solid;
    border-radius: 3px;
    border-width: 1px;
    margin: 0px 10px;
  }
</style>
