1
1
<template >
2
2
<div >
3
3
<section v-if =" loaded" >
4
- <b-field label =" Prefix" >
5
- <b-input v-model =" prefix" @input =" saveSnackbar" maxlength =" 50" />
6
- </b-field >
7
- <b-field label =" Language" >
8
- <b-autocomplete
9
- v-model =" languageText"
10
- :data =" filteredDataObj"
11
- @select =" setLanguage" >
12
- <template slot="empty">No results found</template >
13
- </b-autocomplete >
14
- </b-field >
4
+ <div class =" columns" >
5
+ <div class =" column is-narrow" >
6
+ <b-field label =" Prefix" >
7
+ <b-input v-model =" prefix" @input =" saveSnackbar" maxlength =" 50" />
8
+ </b-field >
9
+ </div >
10
+ <div class =" column is-narrow" >
11
+ <b-field label =" Language" >
12
+ <b-select v-model =" language" @input =" saveSnackbar" >
13
+ <option
14
+ v-for =" lang in languages"
15
+ :value =" lang.key"
16
+ :key =" lang.key"
17
+ class =" dashboard-option" >
18
+ {{ lang.displayName }}
19
+ </option >
20
+ </b-select >
21
+ </b-field >
22
+ </div >
23
+ </div >
15
24
</section >
16
25
<b-loading :active =" !loaded" />
17
26
</div >
@@ -23,40 +32,41 @@ export default {
23
32
props: [ ' guild' ],
24
33
data : () => ({
25
34
loaded: false ,
35
+ snackbar: false ,
26
36
language: null ,
27
37
languages: null ,
28
- languageText: null ,
29
- prefix: null ,
30
- snackbar: false
38
+ prefix: null
31
39
}),
32
- computed: {
33
- filteredDataObj () {
34
- return this .languages ? this .languages .filter (o => o .toString ().toLowerCase ().indexOf (this .languageText ) >= 0 ) : []
35
- }
36
- },
37
40
mounted () {
38
- this .$api .guildConfiguration (this .guild .id )
39
- .then (({ language, prefix, availableLanguages }) => {
41
+ Promise .all ([
42
+ this .$api .locales (navigator .language || navigator .userLanguage ).then (({ languages }) => {
43
+ this .languages = languages
44
+ }),
45
+ this .$api .guildConfiguration (this .guild .id ).then (({ language, prefix }) => {
40
46
this .language = this .languageText = language
41
47
this .prefix = prefix
42
- this .languages = availableLanguages
43
- })
44
- .catch (e => this .errorToast ())
45
- .finally (() => {
46
- this .loaded = true
47
48
})
49
+ ]).catch (e => this .errorToast ())
50
+ .then (() => { this .loaded = true })
48
51
},
49
52
methods: {
50
53
saveSnackbar () {
51
54
if (this .snackbar ) return
52
55
this .snackbar = true
53
- this .$snackbar .open ({
56
+ const snackbar = this .$snackbar .open ({
54
57
message: ' You have unsaved changes!' ,
55
58
position: ' is-top' ,
56
59
actionText: ' Save' ,
57
60
duration: 10000 ,
58
61
onAction : () => this .save ()
59
62
})
63
+
64
+ const self = this
65
+ snackbar .realClose = snackbar .close
66
+ snackbar .close = function (... args ) {
67
+ self .snackbar = false
68
+ this .realClose (... args)
69
+ }
60
70
},
61
71
save () {
62
72
const { language , prefix } = this
@@ -68,9 +78,6 @@ export default {
68
78
})
69
79
})
70
80
.catch (e => this .errorToast ())
71
- .finally (() => {
72
- this .snackbar = false
73
- })
74
81
},
75
82
errorToast () {
76
83
this .$toast .open ({
@@ -79,10 +86,16 @@ export default {
79
86
})
80
87
},
81
88
setLanguage (option ) {
82
- console .log (' a' )
83
89
this .language = option
84
90
this .saveSnackbar ()
85
91
}
86
92
}
87
93
}
88
94
</script >
95
+
96
+ <style scoped>
97
+ .dashboard-option {
98
+ color : #fff ;
99
+ background-color : #484B52 ;
100
+ }
101
+ </style >
0 commit comments