{"version":3,"file":"InviteModal.mjs","sources":["../../../../../../../../web/src/adminPortal/memberManagement/InviteModal.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\n\nimport { passwordManagerDisableAutofillProps } from '../../utils/passwordManagerDisableAutofillProps';\nimport { Autocomplete } from '../components/Autocomplete';\nimport { Input } from '../components/Input';\nimport { Modal, ModalStateType, useModalState } from '../components/Modal';\nimport { ROLE_ID_STYTCH_MEMBER } from '../utils/roles';\nimport { useRbac } from '../utils/useRbac';\nimport { useRoleAutocomplete } from '../utils/useRoleAutocomplete';\nimport type { SendInviteEmail } from './useSendInviteEmail';\n\nconst defaultInviteRoles: string[] = [];\n\ninterface InviteModalProps {\n  modalState: Omit<ModalStateType, 'open'>;\n  inviteName: string;\n  setInviteName: (value: string) => void;\n  inviteEmail: string;\n  setInviteEmail: (value: string) => void;\n  inviteRoles: string[];\n  setInviteRoles: (value: string[]) => void;\n}\n\nexport const useInviteModal = (inviteUser: SendInviteEmail) => {\n  const [inviteName, setInviteName] = useState('');\n  const [inviteEmail, setInviteEmail] = useState('');\n  const [inviteRoles, setInviteRoles] = useState(defaultInviteRoles);\n\n  const { open: openInviteModal, ...modalState } = useModalState(async () => {\n    await inviteUser(inviteEmail, { name: inviteName, roles: inviteRoles });\n    modalState.close();\n  });\n\n  const handleInviteClick = useCallback(() => {\n    setInviteName('');\n    setInviteEmail('');\n    setInviteRoles(defaultInviteRoles);\n\n    openInviteModal();\n  }, [openInviteModal]);\n\n  return {\n    handleInviteClick,\n    inviteModalProps: {\n      modalState,\n      inviteName,\n      setInviteName,\n      inviteEmail,\n      setInviteEmail,\n      inviteRoles,\n      setInviteRoles,\n    } satisfies InviteModalProps,\n  };\n};\n\nexport const InviteModal = ({\n  modalState,\n  inviteEmail,\n  inviteName,\n  inviteRoles,\n  setInviteEmail,\n  setInviteName,\n  setInviteRoles,\n}: InviteModalProps) => {\n  const { data: canGetOrgCustomRoles } = useRbac('stytch.custom-org-roles', 'get');\n\n  const roleAutocompleteProps = useRoleAutocomplete({\n    excludeStytchMember: true,\n    includeOrgRoles: canGetOrgCustomRoles ?? false,\n  });\n\n  const stytchMemberRoleDisplayName = roleAutocompleteProps.getOptionLabel(ROLE_ID_STYTCH_MEMBER);\n\n  const formIsValid = inviteEmail.trim().length > 0;\n\n  return (\n    <Modal\n      {...modalState}\n      keepOpenOnConfirm\n      title=\"Invite Member\"\n      confirmButtonText=\"Invite\"\n      disableConfirm={!formIsValid}\n    >\n      <Input label=\"Name (optional)\" placeholder=\"Enter name\" value={inviteName} onChange={setInviteName} />\n      <Input\n        label=\"Email address\"\n        placeholder=\"Enter email address\"\n        value={inviteEmail}\n        onChange={setInviteEmail}\n        inputProps={passwordManagerDisableAutofillProps}\n      />\n      <Autocomplete\n        {...roleAutocompleteProps}\n        placeholder={inviteRoles.length > 0 ? undefined : 'Select Role'}\n        label=\"Role\"\n        caption={`All members are automatically assigned the ${stytchMemberRoleDisplayName} Role. Select additional Roles to assign more permissions.`}\n        value={inviteRoles}\n        onChange={setInviteRoles}\n      />\n    </Modal>\n  );\n};\n"],"names":["defaultInviteRoles","useInviteModal","inviteUser","inviteName","setInviteName","useState","inviteEmail","setInviteEmail","inviteRoles","setInviteRoles","open","openInviteModal","modalState","useModalState","name","roles","close","handleInviteClick","useCallback","inviteModalProps","InviteModal","data","canGetOrgCustomRoles","useRbac","roleAutocompleteProps","useRoleAutocomplete","excludeStytchMember","includeOrgRoles","stytchMemberRoleDisplayName","getOptionLabel","ROLE_ID_STYTCH_MEMBER","formIsValid","trim","length","React","Modal","keepOpenOnConfirm","title","confirmButtonText","disableConfirm","Input","label","placeholder","value","onChange","inputProps","passwordManagerDisableAutofillProps","Autocomplete","undefined","caption"],"mappings":"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"}