diff --git a/client/src/modules/front_end_components/Toast.js b/client/src/modules/front_end_components/Toast.js index 62554d3..d19844a 100644 --- a/client/src/modules/front_end_components/Toast.js +++ b/client/src/modules/front_end_components/Toast.js @@ -10,7 +10,7 @@ export const toast = ( } }; -function buildAndInsertMessageElement (message, type, positionAtTop, dispelAutomatically, duration, innerHTML) { +function buildAndInsertMessageElement (message, type, positionAtTop, dispelAutomatically, duration, domChild) { cancelCurrentToast(); const messageEl = document.createElement('div'); messageEl.classList.add('info-message'); @@ -56,8 +56,8 @@ function buildAndInsertMessageElement (message, type, positionAtTop, dispelAutom } messageEl.setAttribute('id', 'current-info-message'); - if (innerHTML) { - messageEl.innerHTML = message; + if (domChild) { + messageEl.appendChild(message); } else { messageEl.innerText = message; } diff --git a/client/src/modules/game_creation/DeckStateManager.js b/client/src/modules/game_creation/DeckStateManager.js index ef222f2..66f626e 100644 --- a/client/src/modules/game_creation/DeckStateManager.js +++ b/client/src/modules/game_creation/DeckStateManager.js @@ -197,15 +197,16 @@ export class DeckStateManager { const minusOneHandler = (e) => { if (e.type === 'click' || e.code === 'Enter') { e.preventDefault(); - toast( - '-1' + - sortedDeck[i].role + ' (' + (sortedDeck[i].quantity - 1).toString() + ')', - 'neutral', - true, - true, - 'short', - true - ); + const toastContent = document.createElement("span") + toastContent.innerHTML = + `-1 + + ()` + toastContent.querySelector('#toast-minus-one-name').innerText = sortedDeck[i].role; + toastContent.querySelector('.toast-minus-role-quantity').innerText = sortedDeck[i].quantity - 1; + + toast(toastContent, 'neutral', true, true, 'short', true); + this.removeCopyOfCard(sortedDeck[i].role); this.updateDeckStatus(); } diff --git a/client/src/modules/game_creation/RoleBox.js b/client/src/modules/game_creation/RoleBox.js index 3f0b13f..b20261b 100644 --- a/client/src/modules/game_creation/RoleBox.js +++ b/client/src/modules/game_creation/RoleBox.js @@ -44,9 +44,13 @@ export class RoleBox { loadCustomRolesFromCookies () { const customRoles = localStorage.getItem('play-werewolf-custom-roles'); if (customRoles !== null && validateCustomRoleCookie(customRoles)) { - this.customRoles = JSON.parse(customRoles).map((role) => { - role.id = createRandomId(); - return role; + this.customRoles = JSON.parse(customRoles).map((roleObj) => { + return { + id: createRandomId(), + role: roleObj.role, + team: roleObj.team, + description: roleObj.description + }; }); // we know it is valid JSON from the validate function } } @@ -64,9 +68,13 @@ export class RoleBox { string = e.target.result; } if (validateCustomRoleCookie(string)) { - this.customRoles = JSON.parse(string).map((role) => { - role.id = createRandomId(); - return role; + this.customRoles = JSON.parse(string).map((roleObj) => { + return { + id: createRandomId(), + role: roleObj.role, + team: roleObj.team, + description: roleObj.description + }; }); // we know it is valid JSON from the validate function const initialLength = this.customRoles.length; // If any imported roles match a default role, exclude them. @@ -182,6 +190,7 @@ export class RoleBox { ? document.querySelectorAll('#role-select .custom-role') : document.querySelectorAll('#role-select .default-role'); elements.forEach((role) => { + const name = role.querySelector('.role-name').innerText; if (addOne) { const plusOneHandler = (e) => { if (e.type === 'click' || e.code === 'Enter') { @@ -195,22 +204,22 @@ export class RoleBox { } else { this.deckManager.addCopyOfCard(name); } - toast( - '+1 ' + - name + ' (' + this.deckManager.getQuantityOfRole(name) + ')', - 'neutral', - true, - true, - 'short', - true - ); + const toastContent = document.createElement("span") + toastContent.innerHTML = + `+1 + + ()` + toastContent.querySelector('#toast-plus-one-name').innerText = name; + toastContent.querySelector('.toast-plus-role-quantity').innerText = this.deckManager.getQuantityOfRole(name); + + toast(toastContent, 'neutral', true, true, 'short', true); + this.deckManager.updateDeckStatus(); } }; role.querySelector('.role-include').addEventListener('click', plusOneHandler); role.querySelector('.role-include').addEventListener('keyup', plusOneHandler); } - const name = role.querySelector('.role-name').innerText; if (remove) { const removeHandler = (e) => {