Porównaj commity

...

2 Commity

Autor SHA1 Wiadomość Data
Alex Gleason 38d3f5914b
eslint fix 2022-08-25 21:36:57 -05:00
Alex Gleason b57c906e4e
Create StatusCard component 2022-08-22 11:34:59 -05:00
7 zmienionych plików z 45 dodań i 27 usunięć

Wyświetl plik

@ -0,0 +1,29 @@
import classNames from 'classnames';
import React from 'react';
import { Card } from './ui';
interface IStatusCard {
className?: string,
variant?: 'default' | 'rounded',
children: React.ReactNode,
}
/**
* Wrapper around a Status with all the cute spacing.
* Not to be confused with the API entity called "Card".
*/
const StatusCard: React.FC<IStatusCard> = ({ variant = 'rounded', className, children }) => {
return (
<Card
variant={variant}
className={classNames({
'py-6 sm:p-5': variant === 'rounded',
}, className)}
>
{children}
</Card>
);
};
export default StatusCard;

Wyświetl plik

@ -15,10 +15,11 @@ import { useAppDispatch, useSettings } from 'soapbox/hooks';
import { defaultMediaVisibility, textForScreenReader, getActualStatus } from 'soapbox/utils/status'; import { defaultMediaVisibility, textForScreenReader, getActualStatus } from 'soapbox/utils/status';
import StatusActionBar from './status-action-bar'; import StatusActionBar from './status-action-bar';
import StatusCard from './status-card';
import StatusMedia from './status-media'; import StatusMedia from './status-media';
import StatusReplyMentions from './status-reply-mentions'; import StatusReplyMentions from './status-reply-mentions';
import StatusContent from './status_content'; import StatusContent from './status_content';
import { Card, HStack, Text } from './ui'; import { HStack, Text } from './ui';
import type { Map as ImmutableMap } from 'immutable'; import type { Map as ImmutableMap } from 'immutable';
import type { import type {
@ -63,7 +64,6 @@ const Status: React.FC<IStatus> = (props) => {
muted, muted,
hidden, hidden,
featured, featured,
unread,
group, group,
hideActionBar, hideActionBar,
variant = 'rounded', variant = 'rounded',
@ -322,16 +322,7 @@ const Status: React.FC<IStatus> = (props) => {
</div> </div>
)} )}
<Card <StatusCard variant={variant} data-id={status.id}>
variant={variant}
className={classNames('status__wrapper', `status-${actualStatus.visibility}`, {
'py-6 sm:p-5': variant === 'rounded',
'status-reply': !!status.in_reply_to_id,
muted,
read: unread === false,
})}
data-id={status.id}
>
{reblogElementMobile} {reblogElementMobile}
<div className='mb-4'> <div className='mb-4'>
@ -384,7 +375,7 @@ const Status: React.FC<IStatus> = (props) => {
</div> </div>
)} )}
</div> </div>
</Card> </StatusCard>
</div> </div>
</HotKeys> </HotKeys>
); );

Wyświetl plik

@ -1,9 +1,10 @@
import React, { useState, useEffect, useRef } from 'react'; import React, { useState, useEffect, useRef } from 'react';
import { FormattedMessage } from 'react-intl'; import { FormattedMessage } from 'react-intl';
import StatusCard from 'soapbox/components/status-card';
import { Stack, HStack, Card, Avatar, Text, Icon } from 'soapbox/components/ui'; import { Stack, HStack, Card, Avatar, Text, Icon } from 'soapbox/components/ui';
import IconButton from 'soapbox/components/ui/icon-button/icon-button'; import IconButton from 'soapbox/components/ui/icon-button/icon-button';
import StatusCard from 'soapbox/features/status/components/card'; import LinkPreview from 'soapbox/features/status/components/card';
import { useAppSelector } from 'soapbox/hooks'; import { useAppSelector } from 'soapbox/hooks';
import type { Card as CardEntity } from 'soapbox/types/entities'; import type { Card as CardEntity } from 'soapbox/types/entities';
@ -53,7 +54,7 @@ const Ad: React.FC<IAd> = ({ card, impression }) => {
return ( return (
<div className='relative'> <div className='relative'>
<Card className='py-6 sm:p-5' variant='rounded'> <StatusCard>
<Stack space={4}> <Stack space={4}>
<HStack alignItems='center' space={3}> <HStack alignItems='center' space={3}>
<Avatar src={instance.thumbnail} size={42} /> <Avatar src={instance.thumbnail} size={42} />
@ -88,9 +89,9 @@ const Ad: React.FC<IAd> = ({ card, impression }) => {
</Stack> </Stack>
</HStack> </HStack>
<StatusCard card={card} onOpenMedia={() => {}} horizontal /> <LinkPreview card={card} onOpenMedia={() => {}} horizontal />
</Stack> </Stack>
</Card> </StatusCard>
{showInfo && ( {showInfo && (
<div ref={infobox} className='absolute top-5 right-5 max-w-[234px]'> <div ref={infobox} className='absolute top-5 right-5 max-w-[234px]'>

Wyświetl plik

@ -42,8 +42,7 @@ const ThreadStatus: React.FC<IThreadStatus> = (props): JSX.Element => {
<div className='thread__status'> <div className='thread__status'>
{renderConnector()} {renderConnector()}
{isLoaded ? ( {isLoaded ? (
// @ts-ignore FIXME <StatusContainer {...props} variant='default' />
<StatusContainer {...props} />
) : ( ) : (
<PlaceholderStatus thread /> <PlaceholderStatus thread />
)} )}

Wyświetl plik

@ -1,9 +1,10 @@
import classNames from 'classnames'; import classNames from 'classnames';
import React from 'react'; import React from 'react';
import StatusCard from 'soapbox/components/status-card';
import StatusReplyMentions from 'soapbox/components/status-reply-mentions'; import StatusReplyMentions from 'soapbox/components/status-reply-mentions';
import StatusContent from 'soapbox/components/status_content'; import StatusContent from 'soapbox/components/status_content';
import { Card, HStack } from 'soapbox/components/ui'; import { HStack } from 'soapbox/components/ui';
import AccountContainer from 'soapbox/containers/account_container'; import AccountContainer from 'soapbox/containers/account_container';
import PlaceholderCard from 'soapbox/features/placeholder/components/placeholder_card'; import PlaceholderCard from 'soapbox/features/placeholder/components/placeholder_card';
import PlaceholderMediaGallery from 'soapbox/features/placeholder/components/placeholder_media_gallery'; import PlaceholderMediaGallery from 'soapbox/features/placeholder/components/placeholder_media_gallery';
@ -59,10 +60,7 @@ const PendingStatus: React.FC<IPendingStatus> = ({ idempotencyKey, className, mu
return ( return (
<div className={classNames('opacity-50', className)}> <div className={classNames('opacity-50', className)}>
<div className={classNames('status', { 'status-reply': !!status.in_reply_to_id, muted })} data-id={status.id}> <div className={classNames('status', { 'status-reply': !!status.in_reply_to_id, muted })} data-id={status.id}>
<Card <StatusCard variant={thread ? 'default' : 'rounded'}>
className={classNames('py-6 sm:p-5', `status-${status.visibility}`, { 'status-reply': !!status.in_reply_to_id })}
variant={thread ? 'default' : 'rounded'}
>
<div className='mb-4'> <div className='mb-4'>
<HStack justifyContent='between' alignItems='start'> <HStack justifyContent='between' alignItems='start'>
<AccountContainer <AccountContainer
@ -92,7 +90,7 @@ const PendingStatus: React.FC<IPendingStatus> = ({ idempotencyKey, className, mu
{/* TODO */} {/* TODO */}
{/* <PlaceholderActionBar /> */} {/* <PlaceholderActionBar /> */}
</Card> </StatusCard>
</div> </div>
</div> </div>
); );