vue-stack-tabs 0.1.37 → 0.1.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,103 +1,103 @@
1
- import { defu } from 'defu'
2
-
3
- import { getCurrentInstance } from 'vue'
4
- import type { ComponentInternalInstance } from 'vue'
5
- import { type RouteLocationPathRaw, useRoute, useRouter } from 'vue-router'
6
-
7
- import useTabpanel from '@/lib/hooks/useTabpanel'
8
- import { uriDecode } from '@/lib/utils/UriHelper'
9
- import { useEmitter } from '@/lib/hooks/useTabMitt'
10
- export default () => {
11
- const { attrs, props } = getCurrentInstance() as ComponentInternalInstance
12
- const { pageShown, getTab, markDeletableCache, removeComponent, getComponent, addPageScroller } =
13
- useTabpanel()
14
- const route = useRoute()
15
- const router = useRouter()
16
- const emitter = useEmitter()
17
- let currentId = ''
18
- // const currentPageId = ''
19
- let currentTab = ''
20
- currentId = (attrs.tId || props.tId) as string
21
- const currentPageId = (attrs.pId || props.pId) as string
22
- // currentPageId = attrs.pId as string
23
- currentTab = route.query.__tab as string
24
-
25
- const addScroller = (...scroller: string[]) => {
26
- addPageScroller(currentPageId, ...scroller)
27
- }
28
- const forward = (to: RouteLocationPathRaw) => {
29
- // pageShown.value = false
30
- const query = defu(
31
- {
32
- __tab: currentTab
33
- },
34
- to.query
35
- )
36
- emitter.emit('FORWARD')
37
- router.push({
38
- path: to.path,
39
- query
40
- })
41
- }
42
- /**
43
- * 返回
44
- * @param to url or step
45
- * @param query 返回时要加截的数据
46
- */
47
- const backward = (to: number | string, query?: Object) => {
48
- // pageShown.value = false
49
-
50
- const tab = getTab(currentId)
51
- if (!tab) {
52
- return
53
- }
54
- const tabStack = tab.pages
55
- let absTo = 0
56
- if (typeof to === 'number') {
57
- absTo = Math.abs(to)
58
- } else {
59
- let index = 1
60
- let hasPath = false
61
- const pageItems = tabStack.list()
62
- const url = uriDecode(to)
63
- query = defu(url.query, query)
64
- for (let i = tabStack.size() - 2; i >= 0; i--) {
65
- if (pageItems[i].path === url.path) {
66
- hasPath = true
67
- break
68
- }
69
- index += 1
70
- }
71
- if (hasPath) {
72
- absTo = index
73
- }
74
- }
75
-
76
- if (absTo === 0 || tabStack!.size() <= absTo) {
77
- return
78
- }
79
- // const removeCaches = new Set()
80
- for (let i = 0; i < absTo; i++) {
81
- const popRoute = tabStack.pop()
82
- removeComponent(popRoute!.id)
83
- markDeletableCache(popRoute!.id)
84
- }
85
- const pageRoute = tabStack?.peek()
86
- const component = getComponent(pageRoute!.id)
87
- if (component !== null && component !== undefined) {
88
- const sourceComponent = component.components.DynamicComponent
89
- sourceComponent.props = defu(query, sourceComponent.props)
90
- }
91
- emitter.emit('BACKWARD')
92
- router.push({
93
- path: pageRoute!.path,
94
- query: pageRoute!.query
95
- })
96
- }
97
-
98
- return {
99
- forward,
100
- backward,
101
- addScroller
102
- }
103
- }
1
+ import { defu } from 'defu'
2
+
3
+ import { getCurrentInstance } from 'vue'
4
+ import type { ComponentInternalInstance } from 'vue'
5
+ import { type RouteLocationPathRaw, useRoute, useRouter } from 'vue-router'
6
+
7
+ import useTabpanel from '@/lib/hooks/useTabpanel'
8
+ import { uriDecode } from '@/lib/utils/UriHelper'
9
+ import { useEmitter } from '@/lib/hooks/useTabMitt'
10
+ export default () => {
11
+ const { attrs, props } = getCurrentInstance() as ComponentInternalInstance
12
+ const { pageShown, getTab, markDeletableCache, removeComponent, getComponent, addPageScroller } =
13
+ useTabpanel()
14
+ const route = useRoute()
15
+ const router = useRouter()
16
+ const emitter = useEmitter()
17
+ let currentId = ''
18
+ // const currentPageId = ''
19
+ let currentTab = ''
20
+ currentId = (attrs.tId || props.tId) as string
21
+ const currentPageId = (attrs.pId || props.pId) as string
22
+ // currentPageId = attrs.pId as string
23
+ currentTab = route.query.__tab as string
24
+
25
+ const addScroller = (...scroller: string[]) => {
26
+ addPageScroller(currentPageId, ...scroller)
27
+ }
28
+ const forward = (to: RouteLocationPathRaw) => {
29
+ // pageShown.value = false
30
+ const query = defu(
31
+ {
32
+ __tab: currentTab
33
+ },
34
+ to.query
35
+ )
36
+ emitter.emit('FORWARD')
37
+ router.push({
38
+ path: to.path,
39
+ query
40
+ })
41
+ }
42
+ /**
43
+ * 返回
44
+ * @param to url or step
45
+ * @param query 返回时要加截的数据
46
+ */
47
+ const backward = (to: number | string, query?: Object) => {
48
+ // pageShown.value = false
49
+
50
+ const tab = getTab(currentId)
51
+ if (!tab) {
52
+ return
53
+ }
54
+ const tabStack = tab.pages
55
+ let absTo = 0
56
+ if (typeof to === 'number') {
57
+ absTo = Math.abs(to)
58
+ } else {
59
+ let index = 1
60
+ let hasPath = false
61
+ const pageItems = tabStack.list()
62
+ const url = uriDecode(to)
63
+ query = defu(url.query, query)
64
+ for (let i = tabStack.size() - 2; i >= 0; i--) {
65
+ if (pageItems[i].path === url.path) {
66
+ hasPath = true
67
+ break
68
+ }
69
+ index += 1
70
+ }
71
+ if (hasPath) {
72
+ absTo = index
73
+ }
74
+ }
75
+
76
+ if (absTo === 0 || tabStack!.size() <= absTo) {
77
+ return
78
+ }
79
+ // const removeCaches = new Set()
80
+ for (let i = 0; i < absTo; i++) {
81
+ const popRoute = tabStack.pop()
82
+ removeComponent(popRoute!.id)
83
+ markDeletableCache(popRoute!.id)
84
+ }
85
+ const pageRoute = tabStack?.peek()
86
+ const component = getComponent(pageRoute!.id)
87
+ if (component !== null && component !== undefined) {
88
+ const sourceComponent = component.components.DynamicComponent
89
+ sourceComponent.props = defu(query, sourceComponent.props)
90
+ }
91
+ emitter.emit('BACKWARD')
92
+ router.push({
93
+ path: pageRoute!.path,
94
+ query: pageRoute!.query
95
+ })
96
+ }
97
+
98
+ return {
99
+ forward,
100
+ backward,
101
+ addScroller
102
+ }
103
+ }