From 1b5c77b32209f10cf17a4ceea9cce1173ec335c7 Mon Sep 17 00:00:00 2001 From: Untone Date: Fri, 25 Jul 2025 11:25:39 +0300 Subject: [PATCH] roles-checkbox-fix2 --- panel/modals/RolesModal.tsx | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/panel/modals/RolesModal.tsx b/panel/modals/RolesModal.tsx index db9c9434..ef99f2e5 100644 --- a/panel/modals/RolesModal.tsx +++ b/panel/modals/RolesModal.tsx @@ -105,17 +105,21 @@ const UserEditModal: Component = (props) => { const handleRoleToggle = (roleId: string) => { if (roleId === 'admin') { - return + return // Системная роль не может быть изменена } setFormData((prev) => { const currentRoles = prev.roles || [] - const newRoles = currentRoles.includes(roleId) - ? currentRoles.filter((r: string) => r !== roleId) - : [...currentRoles, roleId] + const isCurrentlySelected = currentRoles.includes(roleId) + + const newRoles = isCurrentlySelected + ? currentRoles.filter((r: string) => r !== roleId) // Убираем роль + : [...currentRoles, roleId] // Добавляем роль + return { ...prev, roles: newRoles } }) + // Очищаем ошибки, связанные с ролями if (errors().roles) { setErrors((prev) => { const newErrors = { ...prev } @@ -288,7 +292,11 @@ const UserEditModal: Component = (props) => { background: isAdminRole && isSelected ? 'rgba(245, 158, 11, 0.1)' : undefined, border: isAdminRole && isSelected ? '1px solid rgba(245, 158, 11, 0.3)' : undefined }} - onClick={() => !isDisabled && handleRoleToggle(role.id)} + onClick={() => { + if (!isDisabled && role.id !== 'admin') { + handleRoleToggle(role.id) + } + }} >
@@ -334,7 +342,7 @@ const UserEditModal: Component = (props) => { stroke-linecap="round" stroke-linejoin="round" > - +