refactor(frontend): hide inactive department members

This commit is contained in:
lizerk 2026-04-13 22:31:21 +03:00
parent 3b855e2ef1
commit 54b7fc498e
2 changed files with 11 additions and 31 deletions

View File

@ -432,7 +432,6 @@ export default function DepartmentDetailPage() {
const h = useDepartmentPage(departmentId);
const activeMembersCount = h.members.filter((member) => member.is_active).length;
const inactiveMembersCount = h.members.length - activeMembersCount;
const roleOptions = h.roles.map((role) => ({ id: role.id, name: role.name }));
const isManagementMode =
h.userPerms.can_manage ||
@ -558,9 +557,6 @@ export default function DepartmentDetailPage() {
<p className="app-card-caption">О составе</p>
<div className="mt-3 flex flex-wrap gap-2">
<MetaChip>{activeMembersCount} активных</MetaChip>
{inactiveMembersCount ? (
<MetaChip>{inactiveMembersCount} неактивных</MetaChip>
) : null}
{isManagementMode ? (
<MetaChip tone="warning">Режим управления</MetaChip>
) : (
@ -612,17 +608,6 @@ export default function DepartmentDetailPage() {
className="app-input w-full rounded-lg py-2.5 pl-9 pr-3 text-sm"
/>
</div>
<label className="app-text-muted inline-flex items-center gap-2 rounded-lg px-3 py-2 text-sm">
<input
type="checkbox"
checked={h.showInactiveMembers}
onChange={(event) =>
h.setShowInactiveMembers(event.target.checked)
}
className="rounded border-[var(--border-strong)]"
/>
Показывать неактивных
</label>
</div>
<div className="space-y-3">
@ -646,15 +631,15 @@ export default function DepartmentDetailPage() {
) : (
<div className="app-surface-muted rounded-xl p-8 text-center">
<Users size={24} className="app-text-muted mx-auto mb-3" />
<p className="text-sm font-medium text-[var(--foreground)]">
Участники не найдены
</p>
<p className="app-text-muted mt-2 text-sm">
Измени поисковый запрос или включи показ неактивных связей.
</p>
</div>
)}
</div>
<p className="text-sm font-medium text-[var(--foreground)]">
Участники не найдены
</p>
<p className="app-text-muted mt-2 text-sm">
Измени поисковый запрос.
</p>
</div>
)}
</div>
</section>
<section className="app-surface rounded-2xl p-5">

View File

@ -51,7 +51,6 @@ export type DepartmentPageController = {
selectableEmployees: Array<{ id: number; name: string }>;
selectedHeadId: number | null;
selectedMemberId: number | null;
showInactiveMembers: boolean;
userPerms: DepartmentUserPermissions;
closeAddMember: () => void;
closeDepartmentEditor: () => void;
@ -67,7 +66,6 @@ export type DepartmentPageController = {
setRoleDraft: (next: DepartmentRoleDraft | ((current: DepartmentRoleDraft) => DepartmentRoleDraft)) => void;
setSelectedHeadId: (id: number | null) => void;
setSelectedMemberId: (id: number | null) => void;
setShowInactiveMembers: (value: boolean) => void;
submitAddMember: () => Promise<void>;
submitHeadChange: () => Promise<void>;
submitQuickHeadChange: (headId: number) => Promise<void>;
@ -132,7 +130,6 @@ export function useDepartmentPage(departmentId: number): DepartmentPageControlle
const [error, setError] = useState<string | null>(null);
const [pendingKey, setPendingKey] = useState<SavingKey | null>(null);
const [membersQuery, setMembersQuery] = useState("");
const [showInactiveMembers, setShowInactiveMembers] = useState(false);
const [editDepartmentOpen, setEditDepartmentOpen] = useState(false);
const [departmentDraft, setDepartmentDraft] = useState({ name: "", description: "" });
@ -234,7 +231,7 @@ export function useDepartmentPage(departmentId: number): DepartmentPageControlle
const q = membersQuery.trim().toLowerCase();
return members.filter((item) => {
if (!showInactiveMembers && !item.is_active) {
if (!item.is_active) {
return false;
}
@ -256,7 +253,7 @@ export function useDepartmentPage(departmentId: number): DepartmentPageControlle
roleName.includes(q)
);
});
}, [members, membersQuery, showInactiveMembers]);
}, [members, membersQuery]);
const selectableEmployees = useMemo(() => {
const activeIds = new Set(
@ -542,7 +539,6 @@ export function useDepartmentPage(departmentId: number): DepartmentPageControlle
selectableEmployees,
selectedHeadId,
selectedMemberId,
showInactiveMembers,
userPerms: userPerms || EMPTY_USER_PERMS,
closeAddMember,
closeDepartmentEditor,
@ -558,7 +554,6 @@ export function useDepartmentPage(departmentId: number): DepartmentPageControlle
setRoleDraft,
setSelectedHeadId,
setSelectedMemberId,
setShowInactiveMembers,
submitAddMember,
submitHeadChange,
submitQuickHeadChange,