From 1974c422ce8a822cf572b65f7b909a05d9b4f7f2 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 29 Aug 2022 22:27:54 +1200 Subject: [PATCH] Reset custom validity before validation check --- public/scripts/permissions-matrix.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/public/scripts/permissions-matrix.js b/public/scripts/permissions-matrix.js index d7c5696f89..a4d8cc53e9 100644 --- a/public/scripts/permissions-matrix.js +++ b/public/scripts/permissions-matrix.js @@ -34,15 +34,7 @@ }); }, addPermission(formId, role, permissions) { - if (Object.values(permissions).every(p => p === false)) { - document.getElementById(`${formId}Input`) - .setCustomValidity('No permissions selected'); - } - if (this.permissions.some(p => p.role === role)) { - document.getElementById(`${formId}Input`) - .setCustomValidity('Role entry already exists'); - } - if (!document.getElementById(formId).reportValidity()) { + if (!this.validate(formId, role, permissions)) { return; } Object.entries(permissions).forEach(entry => { @@ -113,6 +105,21 @@ return 'delete'; } return key; + }, + validate(formId, role, permissions) { + const form = document.getElementById(formId); + const input = document.getElementById(`${formId}Input`); + + input.setCustomValidity(''); + + if (!Object.values(permissions).some(p => p)) { + input.setCustomValidity('No permissions selected'); + } + if (this.permissions.some(p => p.role === role)) { + input.setCustomValidity('Role entry already exists'); + } + + return form.reportValidity(); } })); Alpine.data('permissionsRow', () => ({