mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-09 00:18:00 +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 { useNavigate } from 'react-router-dom';
|
||||||
import { useSWRConfig } from 'swr';
|
import { useSWRConfig } from 'swr';
|
||||||
import { Box, Button, Typography } from '@mui/material';
|
import { Box, Button, Typography } from '@mui/material';
|
||||||
@ -19,7 +19,7 @@ import { LinkField } from '../LinkField/LinkField';
|
|||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
|
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
|
||||||
|
|
||||||
type ICreateInviteLinkProps = {};
|
type IInviteLinkProps = {};
|
||||||
|
|
||||||
const expiryOptions = [
|
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 navigate = useNavigate();
|
||||||
const { data, loading } = useInviteTokens();
|
const { data, loading } = useInviteTokens();
|
||||||
const [inviteLink, setInviteLink] = useState('');
|
const [inviteLink, setInviteLink] = useState('');
|
||||||
|
@ -95,7 +95,11 @@ export const InviteLinkBarContent = ({
|
|||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</Typography>
|
</Typography>
|
||||||
<LinkField small inviteLink={inviteLink!} />
|
<LinkField
|
||||||
|
small
|
||||||
|
inviteLink={inviteLink!}
|
||||||
|
isExpired={isExpired}
|
||||||
|
/>
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
elseShow={
|
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 CopyIcon from '@mui/icons-material/FileCopy';
|
||||||
import useToast from 'hooks/useToast';
|
import useToast from 'hooks/useToast';
|
||||||
|
|
||||||
@ -8,15 +9,43 @@ interface ILinkFieldProps {
|
|||||||
successTitle?: string;
|
successTitle?: string;
|
||||||
errorTitle?: string;
|
errorTitle?: string;
|
||||||
onCopy?: () => void;
|
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,
|
inviteLink,
|
||||||
small,
|
small,
|
||||||
successTitle = 'Successfully copied invite link.',
|
successTitle = 'Successfully copied invite link.',
|
||||||
errorTitle = 'Could not copy invite link.',
|
errorTitle = 'Could not copy invite link.',
|
||||||
onCopy,
|
onCopy,
|
||||||
}: ILinkFieldProps) => {
|
isExpired,
|
||||||
|
}) => {
|
||||||
const { setToastData } = useToast();
|
const { setToastData } = useToast();
|
||||||
|
|
||||||
const setError = () =>
|
const setError = () =>
|
||||||
@ -45,38 +74,18 @@ export const LinkField = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box
|
<StyledBox small={small} isExpired={isExpired}>
|
||||||
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,
|
|
||||||
}
|
|
||||||
: {}),
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{inviteLink}
|
{inviteLink}
|
||||||
<Tooltip title='Copy link' arrow>
|
<Tooltip title={isExpired ? '' : 'Copy link'} arrow>
|
||||||
<IconButton
|
<IconButton
|
||||||
onClick={handleCopy}
|
onClick={handleCopy}
|
||||||
size={small ? 'small' : 'large'}
|
size={small ? 'small' : 'large'}
|
||||||
sx={small ? { ml: 0.5 } : {}}
|
sx={small ? { ml: 0.5 } : {}}
|
||||||
|
disabled={isExpired}
|
||||||
>
|
>
|
||||||
<CopyIcon sx={{ fontSize: small ? 20 : undefined }} />
|
<CopyIcon sx={{ fontSize: small ? 20 : undefined }} />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</Box>
|
</StyledBox>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user