"use client"; import type { GroupSettingsViewModelState } from "@/features/groups/components/use-group-settings-view-model"; import TagInput from "@/shared/components/forms/tag-input"; import ConfirmRetypeModal from "@/shared/components/modals/confirm-retype-modal"; import ConfirmSlideModal from "@/shared/components/modals/confirm-slide-modal"; type GroupSettingsModalsProps = { vm: GroupSettingsViewModelState; }; export default function GroupSettingsModals({ vm }: GroupSettingsModalsProps) { return ( <> {vm.renameModalOpen ? (
event.stopPropagation()} onKeyDown={event => { if (event.key === "Escape") vm.handleCloseRenameModal(); if (event.key === "Enter" && vm.renameDirty && vm.isAdmin && vm.renameValue.trim()) vm.setConfirmRenameOpen(true); }} role="dialog" tabIndex={-1} >
Change group name
vm.setRenameValue(event.target.value)} placeholder="Group name" /> {vm.renameDirty ? (
You have unsaved changes.
) : null}
{vm.renameDirty ? ( <> ) : ( )}
) : null} {vm.tagModalOpen ? (
vm.setTagModalOpen(false)}>
event.stopPropagation()} onKeyDown={event => { if (event.key === "Escape") vm.setTagModalOpen(false); }} role="dialog" tabIndex={-1} >
Edit tags
vm.setPendingTags(prev => prev.filter(item => item !== tag))} onAddTag={tag => vm.setPendingTags(prev => (prev.includes(tag) ? prev : [...prev, tag]))} /> {!vm.canManageTags ? (
Only admins can add new tags.
) : null}
Existing tags
{vm.tags.map(tag => ( ))} {!vm.tags.length ?
No tags yet.
: null}
{vm.toggleRemoveTags.length ? ( ) : null}
) : null} vm.setConfirmDeleteOpen(false)} onConfirm={() => { vm.setConfirmDeleteOpen(false); vm.handleConfirmDelete(); }} /> vm.setConfirmDeleteInvite(null)} onConfirm={vm.handleConfirmDeleteInvite} /> vm.setConfirmRenameOpen(false)} onConfirm={vm.handleRenameGroup} /> vm.setConfirmLeaveOpen(false)} onConfirm={vm.handleConfirmLeaveGroup} /> vm.setConfirmKick(null)} onConfirm={vm.handleConfirmKickMember} /> vm.setConfirmTransfer(null)} onConfirm={vm.handleConfirmTransferOwnership} /> vm.setConfirmDeleteGroupOpen(false)} onConfirm={vm.handleDeleteGroup} /> ); }