feat: add scrollbar support and enhance tab navigation finish:1/2

This commit is contained in:
Vigo.zhou 2025-04-29 18:08:10 +08:00
parent 44ebd5f19e
commit 68ec342482
2 changed files with 43 additions and 25 deletions

View File

@ -18,5 +18,8 @@ export default antfu(
'vue/component-definition-name-casing': 'off', 'vue/component-definition-name-casing': 'off',
}, },
}, },
rules: {
'no-console': 'off',
},
}, },
) )

View File

@ -2,6 +2,7 @@
import type { RouteLocationNormalized } from 'vue-router' import type { RouteLocationNormalized } from 'vue-router'
import { useAppStore, useTabStore } from '@/store' import { useAppStore, useTabStore } from '@/store'
import { useDraggable } from 'vue-draggable-plus' import { useDraggable } from 'vue-draggable-plus'
import type { NScrollbar } from 'naive-ui'
import IconClose from '~icons/icon-park-outline/close' import IconClose from '~icons/icon-park-outline/close'
import IconDelete from '~icons/icon-park-outline/delete-four' import IconDelete from '~icons/icon-park-outline/delete-four'
import IconFullwith from '~icons/icon-park-outline/fullwidth' import IconFullwith from '~icons/icon-park-outline/fullwidth'
@ -103,7 +104,19 @@ function onClickoutside() {
} }
const el = ref() const el = ref()
const scrollbar = ref<InstanceType<typeof NScrollbar>>()
function onWheel(e: WheelEvent) {
e.preventDefault()
if (Math.abs(e.deltaY) > Math.abs(e.deltaX)) {
e.preventDefault()
console.log('dddwdadad', e.deltaY)
scrollbar.value?.scrollBy({
left: e.deltaY,
behavior: 'smooth',
})
}
}
useDraggable(el, tabs, { useDraggable(el, tabs, {
animation: 150, animation: 150,
ghostClass: 'ghost', ghostClass: 'ghost',
@ -111,6 +124,7 @@ useDraggable(el, tabs, {
</script> </script>
<template> <template>
<n-scrollbar ref="scrollbar" :x-scrollable="true" @wheel="onWheel">
<div class="p-l-2 flex w-full relative"> <div class="p-l-2 flex w-full relative">
<div class="flex items-end"> <div class="flex items-end">
<TabBarItem <TabBarItem
@ -137,6 +151,7 @@ useDraggable(el, tabs, {
<DropTabs /> <DropTabs />
</n-el> </n-el>
</div> </div>
</n-scrollbar>
</template> </template>
<style scoped> <style scoped>