Create OutlineBox component

Visual container for QuotedStatus and Accounts in some scenarios
nuke-scss
Alex Gleason 2022-09-16 12:24:33 -05:00
rodzic 8e021d4e2c
commit 2eb08aced9
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 7211D1F99744FBB7
3 zmienionych plików z 53 dodań i 30 usunięć

Wyświetl plik

@ -0,0 +1,18 @@
import classNames from 'clsx';
import React from 'react';
interface IOutlineBox {
children: React.ReactNode,
className?: string,
}
/** Wraps children in a container with an outline. */
const OutlineBox: React.FC<IOutlineBox> = ({ children, className }) => {
return (
<div className={classNames('p-4 rounded-lg border border-solid border-gray-300 dark:border-gray-800', className)}>
{children}
</div>
);
};
export default OutlineBox;

Wyświetl plik

@ -9,6 +9,8 @@ import AccountContainer from 'soapbox/containers/account_container';
import { useSettings } from 'soapbox/hooks'; import { useSettings } from 'soapbox/hooks';
import { defaultMediaVisibility } from 'soapbox/utils/status'; import { defaultMediaVisibility } from 'soapbox/utils/status';
import OutlineBox from './outline-box';
import type { Account as AccountEntity, Status as StatusEntity } from 'soapbox/types/entities'; import type { Account as AccountEntity, Status as StatusEntity } from 'soapbox/types/entities';
const messages = defineMessages({ const messages = defineMessages({
@ -123,38 +125,40 @@ const QuotedStatus: React.FC<IQuotedStatus> = ({ status, onCancel, compose }) =>
} }
return ( return (
<Stack <OutlineBox className={classNames('mt-3 cursor-pointer', {
data-testid='quoted-status' 'hover:bg-gray-100 dark:hover:bg-gray-800': !compose,
space={2} })}
className={classNames('mt-3 p-4 rounded-lg border border-solid border-gray-300 dark:border-gray-800 cursor-pointer', {
'hover:bg-gray-100 dark:hover:bg-gray-800': !compose,
})}
onClick={handleExpandClick}
> >
<AccountContainer <Stack
{...actions} data-testid='quoted-status'
id={account.id} space={2}
timestamp={status.created_at} onClick={handleExpandClick}
withRelationship={false} >
showProfileHoverCard={!compose} <AccountContainer
withLinkToProfile={!compose} {...actions}
/> id={account.id}
timestamp={status.created_at}
withRelationship={false}
showProfileHoverCard={!compose}
withLinkToProfile={!compose}
/>
{renderReplyMentions()} {renderReplyMentions()}
<Text <Text
className='break-words status__content status__content--quote' className='break-words status__content status__content--quote'
size='sm' size='sm'
dangerouslySetInnerHTML={{ __html: status.contentHtml }} dangerouslySetInnerHTML={{ __html: status.contentHtml }}
/> />
<StatusMedia <StatusMedia
status={status} status={status}
muted={compose} muted={compose}
showMedia={showMedia} showMedia={showMedia}
onToggleVisibility={handleToggleMediaVisibility} onToggleVisibility={handleToggleMediaVisibility}
/> />
</Stack> </Stack>
</OutlineBox>
); );
}; };

Wyświetl plik

@ -13,6 +13,7 @@ import snackbar from 'soapbox/actions/snackbar';
import Account from 'soapbox/components/account'; import Account from 'soapbox/components/account';
import List, { ListItem } from 'soapbox/components/list'; import List, { ListItem } from 'soapbox/components/list';
import MissingIndicator from 'soapbox/components/missing_indicator'; import MissingIndicator from 'soapbox/components/missing_indicator';
import OutlineBox from 'soapbox/components/outline-box';
import { Button, Text, HStack, Modal, Stack, Toggle } from 'soapbox/components/ui'; import { Button, Text, HStack, Modal, Stack, Toggle } from 'soapbox/components/ui';
import { useAppDispatch, useAppSelector, useFeatures, useOwnAccount } from 'soapbox/hooks'; import { useAppDispatch, useAppSelector, useFeatures, useOwnAccount } from 'soapbox/hooks';
import { makeGetAccount } from 'soapbox/selectors'; import { makeGetAccount } from 'soapbox/selectors';
@ -109,14 +110,14 @@ const AccountModerationModal: React.FC<IAccountModerationModal> = ({ onClose, ac
onClose={handleClose} onClose={handleClose}
> >
<Stack space={4}> <Stack space={4}>
<div className='p-4 rounded-lg border border-solid border-gray-300 dark:border-gray-800'> <OutlineBox>
<Account <Account
account={account} account={account}
showProfileHoverCard={false} showProfileHoverCard={false}
withLinkToProfile={false} withLinkToProfile={false}
hideActions hideActions
/> />
</div> </OutlineBox>
<List> <List>
{(ownAccount.admin && isLocal(account)) && ( {(ownAccount.admin && isLocal(account)) && (