Skip to content

Commit dea3eb0

Browse files
committed
fix(LoadingBar): isActive reactive prop #12059 (#12062)
1 parent f039572 commit dea3eb0

File tree

4 files changed

+50
-14
lines changed

4 files changed

+50
-14
lines changed

ui/src/components/ajax-bar/QAjaxBar.js

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,8 @@ export default createComponent({
118118
const progress = ref(0)
119119
const onScreen = ref(false)
120120
const animate = ref(true)
121-
const calls = ref(0)
122121

123-
let timer, speed
122+
let sessions = 0, timer, speed
124123

125124
const classes = computed(() =>
126125
`q-loading-bar q-loading-bar--${ props.position }`
@@ -166,42 +165,51 @@ export default createComponent({
166165
const oldSpeed = speed
167166
speed = Math.max(0, newSpeed) || 0
168167

169-
calls.value++
168+
sessions++
170169

171-
if (calls.value > 1) {
170+
if (sessions > 1) {
172171
if (oldSpeed === 0 && newSpeed > 0) {
173172
planNextStep()
174173
}
175174
else if (oldSpeed > 0 && newSpeed <= 0) {
176175
clearTimeout(timer)
177176
}
178-
return
177+
178+
return sessions
179179
}
180180

181181
clearTimeout(timer)
182182
emit('start')
183183

184184
progress.value = 0
185185

186-
if (onScreen.value === true) { return }
186+
if (onScreen.value === true) {
187+
return sessions
188+
}
187189

188190
onScreen.value = true
189191
animate.value = false
190192
timer = setTimeout(() => {
191193
animate.value = true
192194
newSpeed > 0 && planNextStep()
193195
}, 100)
196+
197+
return sessions
194198
}
195199

196200
function increment (amount) {
197-
if (calls.value > 0) {
201+
if (sessions > 0) {
198202
progress.value = inc(progress.value, amount)
199203
}
204+
205+
return sessions
200206
}
201207

202208
function stop () {
203-
calls.value = Math.max(0, calls.value - 1)
204-
if (calls.value > 0) { return }
209+
sessions = Math.max(0, sessions - 1)
210+
if (sessions > 0) {
211+
return sessions
212+
}
205213

206214
clearTimeout(timer)
207215
emit('stop')
@@ -220,6 +228,8 @@ export default createComponent({
220228
else {
221229
end()
222230
}
231+
232+
return sessions
223233
}
224234

225235
function planNextStep () {
@@ -250,7 +260,7 @@ export default createComponent({
250260
})
251261

252262
// expose public methods
253-
Object.assign(proxy, { start, stop, increment, calls })
263+
Object.assign(proxy, { start, stop, increment })
254264

255265
return () => h('div', {
256266
class: classes.value,

ui/src/components/ajax-bar/QAjaxBar.json

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@
7373
"desc": "Delay (in milliseconds) between progress auto-increments; If delay is 0 then it disables auto-incrementing",
7474
"examples": [ 400, 0 ]
7575
}
76+
},
77+
"returns": {
78+
"sessions": {
79+
"type": "Number",
80+
"desc": "Number of active simultaneous sessions"
81+
}
7682
}
7783
},
7884

@@ -84,11 +90,23 @@
8490
"desc": "Amount (0 < x <= 100) to increment with",
8591
"examples": [ 1 ]
8692
}
93+
},
94+
"returns": {
95+
"sessions": {
96+
"type": "Number",
97+
"desc": "Number of active simultaneous sessions"
98+
}
8799
}
88100
},
89101

90102
"stop": {
91-
"desc": "Notify bar that one process you were waiting has finished"
103+
"desc": "Notify bar that one process you were waiting has finished",
104+
"returns": {
105+
"sessions": {
106+
"type": "Number",
107+
"desc": "Number of active simultaneous sessions"
108+
}
109+
}
92110
}
93111
}
94112
}

ui/src/plugins/LoadingBar.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ const Plugin = defineReactivePlugin({
4949
Object.assign(this, {
5050
start (speed) {
5151
barRef.value.start(speed)
52-
Plugin.isActive = barRef.value.calls.value > 0
52+
Plugin.isActive = true
5353
},
5454
stop () {
55-
barRef.value.stop()
56-
Plugin.isActive = barRef.value.calls.value > 0
55+
const sessions = barRef.value.stop()
56+
Plugin.isActive = sessions > 0
5757
},
5858
increment () {
5959
barRef.value.increment.apply(null, arguments)

ui/src/plugins/LoadingBar.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@
1616
}
1717
},
1818

19+
"props": {
20+
"isActive": {
21+
"type": "Boolean",
22+
"desc": "Is LoadingBar active?",
23+
"reactive": true
24+
}
25+
},
26+
1927
"methods": {
2028
"start": {
2129
"desc": "Notify bar you've started a background activity",

0 commit comments

Comments
 (0)