From 2836831335e4895e85100ca7d81036fd92f4a73f Mon Sep 17 00:00:00 2001 From: alistair3149 Date: Thu, 21 Jan 2021 21:43:20 -0500 Subject: [PATCH] fix: allow checkbox button to uncheck when clicked --- resources/skins.citizen.scripts/checkboxHack.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/resources/skins.citizen.scripts/checkboxHack.js b/resources/skins.citizen.scripts/checkboxHack.js index 468d79e1..aa78623d 100644 --- a/resources/skins.citizen.scripts/checkboxHack.js +++ b/resources/skins.citizen.scripts/checkboxHack.js @@ -1,18 +1,23 @@ var DRAWER_ID = 'mw-drawer', + DRAWER_BUTTON_ID = 'mw-drawer-button', DRAWER_CHECKBOX_ID = 'mw-drawer-checkbox', PERSONAL_MENU_ID = 'p-personal', + PERSONAL_MENU_BUTTON_ID = 'personalmenu-button', PERSONAL_MENU_CHECKBOX_ID = 'personalmenu-checkbox'; /** * Uncheck CSS hack checkbox when clicked outside * * @param {HTMLElement} element + * @param {HTMLElement} button * @param {HTMLElement} checkbox */ -function uncheckOnClickOutside( element, checkbox ) { +function uncheckOnClickOutside( element, button, checkbox ) { var listener = function ( e ) { if ( e.target !== checkbox && e.target !== element ) { - checkbox.checked = false; + if ( e.target !== button ) { + checkbox.checked = false; + } document.removeEventListener( 'click', listener ); } }; @@ -28,11 +33,13 @@ function uncheckOnClickOutside( element, checkbox ) { */ function init() { var drawer = document.getElementById( DRAWER_ID ), + drawerButton = document.getElementById( DRAWER_BUTTON_ID ), drawerCheckbox = document.getElementById( DRAWER_CHECKBOX_ID ), personalMenu = document.getElementById( PERSONAL_MENU_ID ), + personalMenuButton = document.getElementById( PERSONAL_MENU_BUTTON_ID ), personalMenuCheckbox = document.getElementById( PERSONAL_MENU_CHECKBOX_ID ); - uncheckOnClickOutside( drawer, drawerCheckbox ); - uncheckOnClickOutside( personalMenu, personalMenuCheckbox ); + uncheckOnClickOutside( drawer, drawerButton, drawerCheckbox ); + uncheckOnClickOutside( personalMenu, personalMenuButton, personalMenuCheckbox ); } module.exports = {