<template>
	<view>
		<swiper ref="header" class="h-300" indicator-dots="true" circular="true" @change="swiperChange" @touchstart="swiperTouchStart" @touchmove="swiperTouchMove" @touchend="swiperTouchEnd">
			<swiper-item v-for="i in 3" :item-id="i" @touchstart="swiperItemTouchStart" @touchmove="swiperItemTouchMove" @touchend="swiperItemTouchEnd">
				<view class="h-300 header-tiem" @touchstart="viewTouchStart" @touchmove="viewTouchMove" @touchend="viewTouchEnd">
					<text>{{ i }}</text>
				</view>
			</swiper-item>
		</swiper>
    <view class="content">
      <boolean-data :defaultValue="false" title="stopPropagation" @change="changeStopPropagation"></boolean-data>
      <boolean-data :defaultValue="false" title="preventDefault" @change="changePreventDefault"></boolean-data>
      <text style="padding: 10px;">{{ touchResult }}</text>
      <view class="uni-padding-wrap uni-common-mt" style="bottom: 20px;">
        <navigator url="/pages/component/global-events/touch-events-preventDefault" hover-class="none">
          <button type="default" class="button">
            测试 preventDefault
          </button>
        </navigator>
      </view>
    </view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				swiperChangeEvent: false,
				viewTouchEvent: false,
				swiperItemTouchEvent: false,
				swiperTouchEvent: false,
        stopPropagation: false,
        preventDefault: false,
        touchResult: ""
			}
		},
		methods: {
      changeStopPropagation(value: boolean) {
        this.stopPropagation = value
      },
      changePreventDefault(value: boolean) {
        this.preventDefault = value
      },
			swiperChange(e: UniSwiperChangeEvent) {
				console.log("swiperChange", e.detail.current)
				this.swiperChangeEvent = true
			},
			viewTouchStart(e: UniTouchEvent) {
				console.log("viewTouchStart")
        this.touchResult = "viewTouchStart"
				this.viewTouchEvent = true
        if (this.stopPropagation) e.stopPropagation()
				if (this.preventDefault) e.preventDefault()
			},
      viewTouchMove(e: UniTouchEvent) {
        console.log("viewTouchMove")
        this.touchResult = "viewTouchMove"
        this.viewTouchEvent = true
        if (this.stopPropagation) e.stopPropagation()
      },
      viewTouchEnd(e: UniTouchEvent) {
        console.log("viewTouchEnd")
        this.touchResult = "viewTouchEnd"
        if (this.stopPropagation) e.stopPropagation()
      },
			swiperItemTouchStart(e: UniTouchEvent) {
				console.log("swiperItemTouchStart")
        this.touchResult += " -> swiperItemTouchStart"
				this.swiperItemTouchEvent = true
			},
      swiperItemTouchMove(e: UniTouchEvent) {
        console.log("swiperItemTouchMove")
        this.touchResult += " -> swiperItemTouchMove"
      },
      swiperItemTouchEnd(e: UniTouchEvent) {
        console.log("swiperItemTouchEnd")
        this.touchResult += " -> swiperItemTouchEnd"
      },
			swiperTouchStart(e: UniTouchEvent) {
				console.log("swiperTouchStart")
        this.touchResult += " -> swiperTouchStart"
				this.swiperTouchEvent = true
			},
      swiperTouchMove(e: UniTouchEvent) {
        console.log("swiperTouchMove")
        this.touchResult += " -> swiperTouchMove"
      },
      swiperTouchEnd(e: UniTouchEvent) {
        console.log("swiperTouchEnd")
        this.touchResult += " -> swiperTouchEnd"
      },
      resetEvent() {
        this.swiperChangeEvent = false
        this.viewTouchEvent = false
        this.swiperItemTouchEvent = false
        this.swiperTouchEvent = false
        this.stopPropagation = true
        this.preventDefault = true
      },
      isPassTest1() {
        console.log("swiperChangeEvent:", this.swiperChangeEvent)
        return this.swiperChangeEvent == false
      },
      isPassTest2() {
        console.log("viewTouchEvent:", this.viewTouchEvent)
        console.log("swiperItemTouchEvent:", this.swiperItemTouchEvent)
        console.log("swiperTouchEvent:", this.swiperTouchEvent)
        return this.viewTouchEvent == true && this.swiperItemTouchEvent == true  && this.swiperTouchEvent == true
      }
		}
	}
</script>

<style>
  .h-300{
    height: 300px;
  }
  
	.header-tiem {
		background-color: #89ff8d;
		align-items: center;
		justify-content: center;
	}
</style>
