Commit | Line | Data |
---|---|---|
98db2082 BA |
1 | <template lang="pug"> |
2 | div | |
3 | input#modalSettings.modal(type="checkbox") | |
42a92848 | 4 | div#settingsDiv( |
910d631b BA |
5 | role="dialog" |
6 | data-checkbox="modalSettings" | |
7 | ) | |
5b3dc10e | 8 | .card |
98db2082 | 9 | label.modal-close(for="modalSettings") |
5b3dc10e BA |
10 | - |
11 | var langName = { | |
12 | "en": "English", | |
13 | "es": "Español", | |
14 | "fr": "Français", | |
15 | }; | |
16 | fieldset(@change="setLanguage($event)") | |
17 | label(for="langSelect") | |
18 | | {{ st.tr["Language"] }} | |
19 | select#langSelect | |
20 | each language,langCode in langName | |
21 | option(value=langCode) | |
22 | =language | |
23 | #flagContainer | |
24 | img( | |
25 | v-if="!!st.lang" | |
26 | :src="flagImage" | |
27 | ) | |
28 | div(@change="updateSettings($event)") | |
9a3049f3 | 29 | fieldset |
42a92848 | 30 | label(for="setHints") {{ st.tr["Show possible moves"] }} |
910d631b BA |
31 | input#setHints( |
32 | type="checkbox" | |
33 | v-model="st.settings.hints" | |
34 | ) | |
9a3049f3 BA |
35 | fieldset |
36 | label(for="setHighlight") | |
42a92848 | 37 | | {{ st.tr["Highlight last move"] }} |
910d631b BA |
38 | input#setHighlight( |
39 | type="checkbox" | |
40 | v-model="st.settings.highlight" | |
41 | ) | |
9a3049f3 BA |
42 | fieldset |
43 | label(for="setBcolor") {{ st.tr["Board colors"] }} | |
44 | select#setBcolor(v-model="st.settings.bcolor") | |
45 | option(value="lichess") {{ st.tr["brown"] }} | |
46 | option(value="chesscom") {{ st.tr["green"] }} | |
47 | option(value="chesstempo") {{ st.tr["blue"] }} | |
baa6f86f | 48 | option(value="orangecc") {{ st.tr["orange"] }} |
9a3049f3 | 49 | fieldset |
db1f1f9a | 50 | label(for="setSound") |
42a92848 | 51 | | {{ st.tr["Sound alert at game start"] }} |
db1f1f9a BA |
52 | input#setSound( |
53 | type="checkbox" | |
54 | v-model="st.settings.sound" | |
55 | ) | |
aae89b49 BA |
56 | fieldset |
57 | label(for="setGotonext") | |
42a92848 | 58 | | {{ st.tr["Show next game after a move"] }} |
aae89b49 BA |
59 | input#setGotonext( |
60 | type="checkbox" | |
61 | v-model="st.settings.gotonext" | |
62 | ) | |
4313762d BA |
63 | fieldset(v-if="desktopBrowser") |
64 | label(for="setScrollmove") | |
65 | | {{ st.tr["Mouse scroll to replay moves"] }} | |
66 | input#setScrollmove( | |
67 | type="checkbox" | |
68 | v-model="st.settings.scrollmove" | |
69 | ) | |
98db2082 BA |
70 | </template> |
71 | ||
72 | <script> | |
c66a829b | 73 | import { store } from "@/store.js"; |
42a92848 | 74 | import { processModalClick } from "@/utils/modalClick.js"; |
98db2082 | 75 | export default { |
c66a829b BA |
76 | name: "my-settings", |
77 | data: function() { | |
78 | return { | |
6808d7a1 | 79 | st: store.state |
c66a829b | 80 | }; |
5701c228 | 81 | }, |
5b3dc10e | 82 | mounted: function() { |
42a92848 BA |
83 | document.getElementById("settingsDiv") |
84 | .addEventListener("click", processModalClick); | |
5b3dc10e BA |
85 | // NOTE: better style would be in pug directly, but how? |
86 | document.querySelectorAll("#langSelect > option").forEach(opt => { | |
87 | if (opt.value == this.st.lang) opt.selected = true; | |
88 | }); | |
89 | }, | |
90 | computed: { | |
91 | flagImage: function() { | |
92 | return `/images/flags/${this.st.lang}.svg`; | |
4313762d BA |
93 | }, |
94 | desktopBrowser: function() { | |
95 | return !("ontouchstart" in window); | |
5b3dc10e BA |
96 | } |
97 | }, | |
dac39588 | 98 | methods: { |
5b3dc10e BA |
99 | setLanguage: function(e) { |
100 | localStorage["lang"] = e.target.value; | |
101 | store.setLanguage(e.target.value); | |
102 | }, | |
98db2082 | 103 | updateSettings: function(event) { |
6808d7a1 BA |
104 | const propName = event.target.id |
105 | .substr(3) | |
106 | .replace(/^\w/, c => c.toLowerCase()); | |
eb2d61de | 107 | const value = propName == "bcolor" |
602d6bef | 108 | ? event.target.value |
6808d7a1 | 109 | : event.target.checked; |
dfeb96ea | 110 | store.updateSetting(propName, value); |
6808d7a1 BA |
111 | } |
112 | } | |
98db2082 BA |
113 | }; |
114 | </script> | |
9a3049f3 BA |
115 | |
116 | <style lang="sass" scoped> | |
117 | [type="checkbox"].modal+div .card | |
6b7b2cf7 | 118 | max-width: 520px |
9a3049f3 | 119 | max-height: 100% |
5b3dc10e BA |
120 | #flagContainer |
121 | display: inline-block | |
122 | height: 100% | |
123 | & > img | |
124 | vertical-align: middle | |
125 | padding: 0 0 0 10px | |
126 | width: 36px | |
127 | height: 27px | |
9a3049f3 | 128 | </style> |