From: Benjamin Auder Date: Mon, 30 Mar 2020 19:52:09 +0000 (+0200) Subject: Fix X-Git-Url: https://git.auder.net/%7B%7B%20asset%28%27mixstore/css/mini-custom.min.css?a=commitdiff_plain;h=077ba3446c4ea3c6553c325fc8d16a96b7a9ff4f;p=vchess.git Fix --- diff --git a/client/src/utils/modalClick.js b/client/src/utils/modalClick.js index f4687fde..8709fd15 100644 --- a/client/src/utils/modalClick.js +++ b/client/src/utils/modalClick.js @@ -2,5 +2,5 @@ export function processModalClick(e, cb) { // Close a modal when click on it but outside focused element const data = e.target.dataset; if (!!data.checkbox) document.getElementById(data.checkbox).checked = false; - if (!!cb) cb(); + if (!!cb && ["chatWrap","peopleWrap"].includes(e.target.id)) cb(); } diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue index d0012fc6..fd4bd2da 100644 --- a/client/src/views/Hall.vue +++ b/client/src/views/Hall.vue @@ -99,7 +99,7 @@ main button(@click="issueNewChallenge()") {{ st.tr["Send challenge"] }} input#modalPeople.modal( type="checkbox" - @click="resetSocialColor()" + @click="toggleSocialColor()" ) div#peopleWrap( role="dialog" @@ -135,7 +135,7 @@ main .row .col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2 .button-group - button#peopleBtn(@click="openModalPeople()") + button#peopleBtn(onClick="window.doClick('modalPeople')") | {{ st.tr["Who's there?"] }} button(@click="showNewchallengeForm()") | {{ st.tr["New game"] }} @@ -322,7 +322,13 @@ export default { ); }, mounted: function() { - ["peopleWrap", "infoDiv", "newgameDiv"].forEach(eltName => { + document.getElementById("peopleWrap") + .addEventListener("click", (e) => { + processModalClick(e, () => { + this.toggleSocialColor("close") + }); + }); + ["infoDiv", "newgameDiv"].forEach(eltName => { document.getElementById(eltName) .addEventListener("click", processModalClick); }); @@ -423,10 +429,6 @@ export default { ["random-" + pc.randomness]: true }; }, - openModalPeople: function() { - window.doClick("modalPeople"); - document.getElementById("inputChat").focus(); - }, anonymousCount: function() { let count = 0; Object.values(this.people).forEach(p => { @@ -577,9 +579,11 @@ export default { // ==> Moves sent by connected remote player(s) if live game this.$router.push("/game/" + g.id); }, - resetSocialColor: function() { - // TODO: this is called twice, once on opening an once on closing - document.getElementById("peopleBtn").classList.remove("somethingnew"); + toggleSocialColor: function(action) { + if (!action && document.getElementById("modalPeople").checked) + document.getElementById("inputChat").focus(); + else + document.getElementById("peopleBtn").classList.remove("somethingnew"); }, processChat: function(chat) { this.send("newchat", { data: chat }); diff --git a/server/models/Game.js b/server/models/Game.js index ee381d42..ed3fb436 100644 --- a/server/models/Game.js +++ b/server/models/Game.js @@ -313,7 +313,7 @@ const GameModel = ) && ( !obj.score || !!(obj.score.match(/^[012?*\/-]+$/)) ) && ( - !obj.chatRead || !(['w','b'].includes(obj.chatRead)) + !obj.chatRead || ['w','b'].includes(obj.chatRead) ) && ( !obj.scoreMsg || !!(obj.scoreMsg.match(/^[a-zA-Z ]+$/)) ) && (