mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	Expired invite link style (#7928)
This commit is contained in:
		
							parent
							
								
									4e11e57f7f
								
							
						
					
					
						commit
						c363fdcfc4
					
				| @ -1,4 +1,4 @@ | ||||
| import { type FormEventHandler, useState, type VFC } from 'react'; | ||||
| import { type FormEventHandler, useState, type FC } from 'react'; | ||||
| import { useNavigate } from 'react-router-dom'; | ||||
| import { useSWRConfig } from 'swr'; | ||||
| import { Box, Button, Typography } from '@mui/material'; | ||||
| @ -19,7 +19,7 @@ import { LinkField } from '../LinkField/LinkField'; | ||||
| import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; | ||||
| import { usePlausibleTracker } from 'hooks/usePlausibleTracker'; | ||||
| 
 | ||||
| type ICreateInviteLinkProps = {}; | ||||
| type IInviteLinkProps = {}; | ||||
| 
 | ||||
| const expiryOptions = [ | ||||
|     { | ||||
| @ -56,7 +56,7 @@ const useFormatApiCode = (isUpdating: boolean, expiry: string) => { | ||||
|     )}'`;
 | ||||
| }; | ||||
| 
 | ||||
| export const InviteLink: VFC<ICreateInviteLinkProps> = () => { | ||||
| export const InviteLink: FC<IInviteLinkProps> = () => { | ||||
|     const navigate = useNavigate(); | ||||
|     const { data, loading } = useInviteTokens(); | ||||
|     const [inviteLink, setInviteLink] = useState(''); | ||||
|  | ||||
| @ -95,7 +95,11 @@ export const InviteLinkBarContent = ({ | ||||
|                                     } | ||||
|                                 /> | ||||
|                             </Typography> | ||||
|                             <LinkField small inviteLink={inviteLink!} /> | ||||
|                             <LinkField | ||||
|                                 small | ||||
|                                 inviteLink={inviteLink!} | ||||
|                                 isExpired={isExpired} | ||||
|                             /> | ||||
|                         </> | ||||
|                     } | ||||
|                     elseShow={ | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| import { Box, IconButton, Tooltip } from '@mui/material'; | ||||
| import type { FC } from 'react'; | ||||
| import { Box, IconButton, styled, Tooltip } from '@mui/material'; | ||||
| import CopyIcon from '@mui/icons-material/FileCopy'; | ||||
| import useToast from 'hooks/useToast'; | ||||
| 
 | ||||
| @ -8,15 +9,43 @@ interface ILinkFieldProps { | ||||
|     successTitle?: string; | ||||
|     errorTitle?: string; | ||||
|     onCopy?: () => void; | ||||
|     isExpired?: boolean; | ||||
| } | ||||
| 
 | ||||
| export const LinkField = ({ | ||||
| const StyledBox = styled(Box)<{ isExpired?: boolean; small?: boolean }>( | ||||
|     ({ theme, small, isExpired }) => ({ | ||||
|         backgroundColor: theme.palette.background.elevation2, | ||||
|         padding: theme.spacing(4), | ||||
|         borderRadius: `${theme.shape.borderRadius}px`, | ||||
|         marginTop: theme.spacing(2), | ||||
|         display: 'flex', | ||||
|         justifyContent: 'space-between', | ||||
|         alignItems: 'center', | ||||
|         wordBreak: 'break-all', | ||||
|         ...(small | ||||
|             ? { | ||||
|                   marginTop: 0, | ||||
|                   padding: theme.spacing(0.5, 0.5, 0.5, 1.5), | ||||
|                   fontSize: theme.typography.body2.fontSize, | ||||
|               } | ||||
|             : {}), | ||||
|         ...(isExpired | ||||
|             ? { | ||||
|                   textDecoration: 'line-through', | ||||
|                   color: theme.palette.text.disabled, | ||||
|               } | ||||
|             : {}), | ||||
|     }), | ||||
| ); | ||||
| 
 | ||||
| export const LinkField: FC<ILinkFieldProps> = ({ | ||||
|     inviteLink, | ||||
|     small, | ||||
|     successTitle = 'Successfully copied invite link.', | ||||
|     errorTitle = 'Could not copy invite link.', | ||||
|     onCopy, | ||||
| }: ILinkFieldProps) => { | ||||
|     isExpired, | ||||
| }) => { | ||||
|     const { setToastData } = useToast(); | ||||
| 
 | ||||
|     const setError = () => | ||||
| @ -45,38 +74,18 @@ export const LinkField = ({ | ||||
|     }; | ||||
| 
 | ||||
|     return ( | ||||
|         <Box | ||||
|             sx={{ | ||||
|                 backgroundColor: (theme) => theme.palette.background.elevation2, | ||||
|                 py: 4, | ||||
|                 px: 4, | ||||
|                 borderRadius: (theme) => `${theme.shape.borderRadius}px`, | ||||
|                 mt: 2, | ||||
|                 display: 'flex', | ||||
|                 justifyContent: 'space-between', | ||||
|                 alignItems: 'center', | ||||
|                 wordBreak: 'break-all', | ||||
|                 ...(small | ||||
|                     ? { | ||||
|                           my: 0, | ||||
|                           py: 0.5, | ||||
|                           pl: 1.5, | ||||
|                           pr: 0.5, | ||||
|                           fontSize: (theme) => theme.typography.body2.fontSize, | ||||
|                       } | ||||
|                     : {}), | ||||
|             }} | ||||
|         > | ||||
|         <StyledBox small={small} isExpired={isExpired}> | ||||
|             {inviteLink} | ||||
|             <Tooltip title='Copy link' arrow> | ||||
|             <Tooltip title={isExpired ? '' : 'Copy link'} arrow> | ||||
|                 <IconButton | ||||
|                     onClick={handleCopy} | ||||
|                     size={small ? 'small' : 'large'} | ||||
|                     sx={small ? { ml: 0.5 } : {}} | ||||
|                     disabled={isExpired} | ||||
|                 > | ||||
|                     <CopyIcon sx={{ fontSize: small ? 20 : undefined }} /> | ||||
|                 </IconButton> | ||||
|             </Tooltip> | ||||
|         </Box> | ||||
|         </StyledBox> | ||||
|     ); | ||||
| }; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user