X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FSettings.vue;h=a6c3e658283ea1df16f9f3e39c2fb8999e41876a;hp=117133d18c62e3e32b977feebc33ff338996277e;hb=5b3dc10e34bf5bf970494be6ee1fa0b67e2ca88c;hpb=311cba767e3c461edb0c8c758bfb193ef670a68f diff --git a/client/src/components/Settings.vue b/client/src/components/Settings.vue index 117133d1..a6c3e658 100644 --- a/client/src/components/Settings.vue +++ b/client/src/components/Settings.vue @@ -5,9 +5,27 @@ div role="dialog" data-checkbox="modalSettings" ) - .card(@change="updateSettings($event)") + .card label.modal-close(for="modalSettings") - form + - + var langName = { + "en": "English", + "es": "Español", + "fr": "Français", + }; + fieldset(@change="setLanguage($event)") + label(for="langSelect") + | {{ st.tr["Language"] }} + select#langSelect + each language,langCode in langName + option(value=langCode) + =language + #flagContainer + img( + v-if="!!st.lang" + :src="flagImage" + ) + div(@change="updateSettings($event)") fieldset label(for="setHints") {{ st.tr["Show possible moves?"] }} input#setHints( @@ -44,7 +62,22 @@ export default { st: store.state }; }, + mounted: function() { + // NOTE: better style would be in pug directly, but how? + document.querySelectorAll("#langSelect > option").forEach(opt => { + if (opt.value == this.st.lang) opt.selected = true; + }); + }, + computed: { + flagImage: function() { + return `/images/flags/${this.st.lang}.svg`; + } + }, methods: { + setLanguage: function(e) { + localStorage["lang"] = e.target.value; + store.setLanguage(e.target.value); + }, updateSettings: function(event) { const propName = event.target.id .substr(3) @@ -63,4 +96,12 @@ export default { [type="checkbox"].modal+div .card max-width: 767px max-height: 100% +#flagContainer + display: inline-block + height: 100% + & > img + vertical-align: middle + padding: 0 0 0 10px + width: 36px + height: 27px