From 251d2411f235e23209d57173857e05b637729ce8 Mon Sep 17 00:00:00 2001
From: LiuHao <liuhaoai545@gmail.com>
Date: 星期日, 02 四月 2023 01:01:56 +0800
Subject: [PATCH] refactor ts

---
 src/layout/components/TagsView/ScrollPane.vue |   43 ++++++++++++++++++++-----------------------
 1 files changed, 20 insertions(+), 23 deletions(-)

diff --git a/src/layout/components/TagsView/ScrollPane.vue b/src/layout/components/TagsView/ScrollPane.vue
index 5c2977a..b5b4b6d 100644
--- a/src/layout/components/TagsView/ScrollPane.vue
+++ b/src/layout/components/TagsView/ScrollPane.vue
@@ -1,21 +1,11 @@
-<template>
-  <el-scrollbar
-    ref="scrollContainer"
-    :vertical="false"
-    class="scroll-container"
-    @wheel.prevent="handleScroll"
-  >
-    <slot />
-  </el-scrollbar>
-</template>
-
-<script setup>
+<script setup lang="ts">
 import useTagsViewStore from '@/store/modules/tagsView'
-
+import { ElScrollbar } from 'element-plus';
+import { TagView } from 'vue-router'
 const tagAndTagSpacing = ref(4);
-const { proxy } = getCurrentInstance();
 
-const scrollWrapper = computed(() => proxy.$refs.scrollContainer.$refs.wrapRef);
+const scrollContainerRef = ref(ElScrollbar)
+const scrollWrapper = computed(() => scrollContainerRef.value.$refs.wrapRef);
 
 onMounted(() => {
   scrollWrapper.value.addEventListener('scroll', emitScroll, true)
@@ -24,12 +14,12 @@
   scrollWrapper.value.removeEventListener('scroll', emitScroll)
 })
 
-function handleScroll(e) {
-  const eventDelta = e.wheelDelta || -e.deltaY * 40
+const handleScroll = (e: WheelEvent) => {
+  const eventDelta = (e as any).wheelDelta || -e.deltaY * 40
   const $scrollWrapper = scrollWrapper.value;
   $scrollWrapper.scrollLeft = $scrollWrapper.scrollLeft + eventDelta / 4
 }
-const emits = defineEmits()
+const emits = defineEmits(['scroll'])
 const emitScroll = () => {
   emits('scroll')
 }
@@ -37,8 +27,8 @@
 const tagsViewStore = useTagsViewStore()
 const visitedViews = computed(() => tagsViewStore.visitedViews);
 
-function moveToTarget(currentTag) {
-  const $container = proxy.$refs.scrollContainer.$el
+const moveToTarget = (currentTag: TagView) => {
+  const $container = scrollContainerRef.value.$el
   const $containerWidth = $container.offsetWidth
   const $scrollWrapper = scrollWrapper.value;
 
@@ -56,10 +46,11 @@
   } else if (lastTag === currentTag) {
     $scrollWrapper.scrollLeft = $scrollWrapper.scrollWidth - $containerWidth
   } else {
-    const tagListDom = document.getElementsByClassName('tags-view-item');
+    const tagListDom: any = document.getElementsByClassName('tags-view-item');
     const currentIndex = visitedViews.value.findIndex(item => item === currentTag)
     let prevTag = null
     let nextTag = null
+
     for (const k in tagListDom) {
       if (k !== 'length' && Object.hasOwnProperty.call(tagListDom, k)) {
         if (tagListDom[k].dataset.path === visitedViews.value[currentIndex - 1].path) {
@@ -89,7 +80,13 @@
 })
 </script>
 
-<style lang='scss' scoped>
+<template>
+	<el-scrollbar ref="scrollContainerRef" :vertical="false" class="scroll-container" @wheel.prevent="handleScroll">
+		<slot />
+	</el-scrollbar>
+</template>
+
+<style lang="scss" scoped>
 .scroll-container {
   white-space: nowrap;
   position: relative;
@@ -102,4 +99,4 @@
     height: 49px;
   }
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3