Skip to content

Commit f60191d

Browse files
committed
feat: Custom spinner for Loading
1 parent 6eb4e0b commit f60191d

File tree

4 files changed

+46
-51
lines changed

4 files changed

+46
-51
lines changed

dev/components/global/dialog.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -373,9 +373,9 @@ export default {
373373
model: 12,
374374
color: 'secondary'
375375
},
376-
slider: {
377-
type: 'slider',
378-
label: 'Slider',
376+
range: {
377+
type: 'range',
378+
label: 'Range',
379379
model: {
380380
min: 7,
381381
max: 12

dev/components/global/loading.vue

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414
</q-btn>
1515
</div>
1616
<p class="caption">
17-
...with a custom colors and spinner size.
17+
...with a custom spinner, colors and size.
1818
</p>
19-
<q-btn push color="light" class="text-dark" @click="customColorSpinner()">
20-
Custom Color and Size Spinner
19+
<q-btn push color="light" class="text-dark" @click="customLoading()">
20+
Show custom Loading
2121
</q-btn>
2222
<p class="caption">
2323
Change Message while Being Displayed
@@ -30,7 +30,11 @@
3030
</template>
3131

3232
<script>
33-
import { Loading } from 'quasar'
33+
import {
34+
Loading,
35+
QSpinnerFacebook,
36+
QSpinnerGears
37+
} from 'quasar'
3438
3539
function show (options) {
3640
Loading.show(options)
@@ -45,12 +49,13 @@ export default {
4549
noMessage () {
4650
show()
4751
},
48-
customColorSpinner () {
52+
customLoading () {
4953
show({
50-
spinnerColor: 'yellow',
51-
spinnerSize: 220,
54+
spinner: QSpinnerFacebook,
55+
spinnerColor: 'amber',
56+
spinnerSize: 140,
5257
message: 'Some important process is in progress. Hang on...',
53-
messageColor: 'teal-3'
58+
messageColor: 'orange'
5459
})
5560
},
5661
withMessage () {
@@ -60,6 +65,7 @@ export default {
6065
Loading.show({message: 'First message. Gonna change it in 3 seconds...'})
6166
setTimeout(() => {
6267
show({
68+
spinner: QSpinnerGears,
6369
spinnerColor: 'red',
6470
message: 'Updated message'
6571
})

src/components/loading/Loading.vue

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/components/loading/index.js

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,28 @@
11
import { Vue } from '../../deps'
22
import Events from '../../features/events'
3-
import Loading from './Loading.vue'
3+
import { QSpinner } from '../spinner'
44

55
let
66
vm,
77
appIsInProgress = false,
88
timeout,
99
props = {}
1010

11+
const staticClass = 'q-loading animate-fade fullscreen column items-center justify-center z-absolute'
12+
1113
function isActive () {
1214
return appIsInProgress
1315
}
1416

1517
function show ({
1618
delay = 500,
1719
message = false,
18-
spinnerSize,
19-
spinnerColor,
20-
messageColor
20+
spinnerSize = 80,
21+
spinnerColor = 'white',
22+
messageColor = 'white',
23+
spinner = QSpinner
2124
} = {}) {
25+
props.spinner = spinner
2226
props.message = message
2327
props.spinnerSize = spinnerSize
2428
props.spinnerColor = spinnerColor
@@ -37,8 +41,28 @@ function show ({
3741
document.body.classList.add('with-loading')
3842

3943
vm = new Vue({
44+
name: 'q-loading',
4045
el: node,
41-
render: h => h(Loading, {props})
46+
functional: true,
47+
render (h) {
48+
const child = [
49+
h(props.spinner, {props: {
50+
color: props.spinnerColor,
51+
size: props.spinnerSize
52+
}})
53+
]
54+
55+
if (message) {
56+
child.push(h('div', {
57+
staticClass: `text-${props.messageColor}`,
58+
domProps: {
59+
innerHTML: props.message
60+
}
61+
}))
62+
}
63+
64+
return h('div', {staticClass}, child)
65+
}
4266
})
4367
}, delay)
4468

0 commit comments

Comments
 (0)