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', () => ({