File tree 6 files changed +79
-17
lines changed
components/modals/Settings 6 files changed +79
-17
lines changed Original file line number Diff line number Diff line change 1
1
<template >
2
2
<div class =" setting" >
3
- <BaseSelect
4
- :value =" setting.value"
5
- :options =" setting.options"
6
- :reduce =" (s) => s.value"
7
- :label =" (s) => s.label"
8
- @input =" change" />
3
+ <component :is =" component" :setting =" setting" @change =" change" />
9
4
10
5
<label class =" setting__label" v-text =" setting.label" ></label >
11
6
</div >
14
9
<script >
15
10
import { Mindmap } from ' ../../../types/mindmap'
16
11
12
+ import Toggle from ' ./Types/Toggle.vue'
13
+ import Select from ' ./Types/Select.vue'
14
+
17
15
export default {
18
16
props: {
19
17
setting: {
@@ -22,6 +20,25 @@ export default {
22
20
},
23
21
},
24
22
23
+ components: {
24
+ Toggle,
25
+ Select,
26
+ },
27
+
28
+ computed: {
29
+ component () {
30
+ if (typeof this .setting .value === ' boolean' ) {
31
+ return Toggle
32
+ }
33
+
34
+ if (Array .isArray (this .setting .options )) {
35
+ return Select
36
+ }
37
+
38
+ return null
39
+ },
40
+ },
41
+
25
42
methods: {
26
43
change (value ) {
27
44
this .setting .set (value)
@@ -36,7 +53,6 @@ export default {
36
53
justify-content : space-between ;
37
54
align-items : center ;
38
55
gap : 8px ;
39
- width : 100% ;
40
56
}
41
57
42
58
.setting__label {
Original file line number Diff line number Diff line change
1
+ <template >
2
+ <BaseSelect
3
+ :value =" setting.value"
4
+ :options =" setting.options"
5
+ :reduce =" (s) => s.value"
6
+ :label =" (s) => s.label"
7
+ @input =" $emit('change', $event)" />
8
+ </template >
9
+
10
+ <script >
11
+ import Setting from ' ../../../../types/setting'
12
+
13
+ export default {
14
+ props: {
15
+ setting: {
16
+ type: Setting,
17
+ required: true ,
18
+ },
19
+ },
20
+ }
21
+ </script >
Original file line number Diff line number Diff line change
1
+ <template >
2
+ <BaseToggle
3
+ :value =" setting.value"
4
+ :description =" setting.description"
5
+ :disabled =" setting.disabled"
6
+ @input =" $emit('change', $event)" />
7
+ </template >
8
+
9
+ <script >
10
+ import Setting from ' ../../../../types/setting'
11
+
12
+ export default {
13
+ props: {
14
+ setting: {
15
+ type: Setting,
16
+ required: true ,
17
+ },
18
+ },
19
+ }
20
+ </script >
Original file line number Diff line number Diff line change @@ -49,13 +49,13 @@ export default {
49
49
.settings {
50
50
display : flex ;
51
51
flex-direction : column ;
52
- justify-content : center ;
53
- align-items : flex-start ;
52
+ justify-content : stretch ;
53
+ gap : 16 px ;
54
54
min-width : 250px ;
55
55
}
56
56
57
57
.settings__title {
58
- margin : 0 0 15 px 0 ;
58
+ margin : 0 0 16 px 0 ;
59
59
font-weight : bold ;
60
60
font-size : 20px ;
61
61
}
Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ import { Mindmap } from './mindmap'
10
10
* @property {string } label
11
11
* @property {any } value
12
12
* @property {string[] } [options]
13
- * @property {SettingRunner } changed
13
+ * @property {SettingRunner } [ changed]
14
14
*/
15
15
16
16
export default class Setting {
@@ -19,9 +19,9 @@ export default class Setting {
19
19
constructor ( mindmap , settingLike ) {
20
20
this . mindmap = mindmap
21
21
22
- this . id = settingLike . id || ''
23
- this . label = settingLike . label || ''
24
- this . value = settingLike . value || null
22
+ this . id = settingLike . id
23
+ this . label = settingLike . label
24
+ this . value = settingLike . value
25
25
this . options = settingLike . options || [ ]
26
26
27
27
this . #change = settingLike . changed || null
Original file line number Diff line number Diff line change @@ -26,19 +26,24 @@ export default class SettingsManager {
26
26
27
27
const setting = new Setting ( this . mindmap , settingsLike )
28
28
this . settings [ setting . id ] = setting
29
- setting . changed ( )
30
29
}
31
30
32
31
get ( key ) {
33
32
const setting = this . settings [ key ]
34
- if ( ! setting ) return
33
+ if ( ! setting ) {
34
+ console . warn ( 'trying to get unknown setting' , key )
35
+ return null
36
+ }
35
37
36
38
return setting . value
37
39
}
38
40
39
41
set ( key , value ) {
40
42
const setting = this . settings [ key ]
41
- if ( ! setting ) return
43
+ if ( ! setting ) {
44
+ console . warn ( 'trying to set unknown setting' , key )
45
+ return
46
+ }
42
47
43
48
setting . value = value
44
49
setting . changed ( )
You can’t perform that action at this time.
0 commit comments