pl-fe: Minor changes to gallery display
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
@ -12,9 +12,10 @@ import type { AccountGalleryAttachment } from 'pl-fe/selectors';
|
||||
interface IMediaItem {
|
||||
attachment: AccountGalleryAttachment;
|
||||
onOpenMedia: (attachment: AccountGalleryAttachment) => void;
|
||||
isLast?: boolean;
|
||||
}
|
||||
|
||||
const MediaItem: React.FC<IMediaItem> = ({ attachment, onOpenMedia }) => {
|
||||
const MediaItem: React.FC<IMediaItem> = ({ attachment, onOpenMedia, isLast }) => {
|
||||
const { autoPlayGif, displayMedia } = useSettings();
|
||||
const [visible, setVisible] = useState<boolean>(displayMedia !== 'hide_all' && !attachment.status?.sensitive || displayMedia === 'show_all');
|
||||
|
||||
@ -66,7 +67,7 @@ const MediaItem: React.FC<IMediaItem> = ({ attachment, onOpenMedia }) => {
|
||||
src={attachment.preview_url}
|
||||
alt={attachment.description}
|
||||
style={{ objectPosition: `${x}% ${y}%` }}
|
||||
className='size-full overflow-hidden rounded-lg'
|
||||
className={clsx('size-full overflow-hidden', { 'rounded-br-md': isLast })}
|
||||
/>
|
||||
);
|
||||
} else if (['gifv', 'video'].indexOf(attachment.type) !== -1) {
|
||||
@ -80,7 +81,7 @@ const MediaItem: React.FC<IMediaItem> = ({ attachment, onOpenMedia }) => {
|
||||
thumbnail = (
|
||||
<div className={clsx('media-gallery__gifv', { autoplay: autoPlayGif })}>
|
||||
<video
|
||||
className='media-gallery__item-gifv-thumbnail'
|
||||
className={clsx('media-gallery__item-gifv-thumbnail overflow-hidden', { 'rounded-br-md': isLast })}
|
||||
aria-label={attachment.description}
|
||||
title={attachment.description}
|
||||
role='application'
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { List as ImmutableList } from 'immutable';
|
||||
import React, { useEffect, useRef } from 'react';
|
||||
import React, { useEffect } from 'react';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { useParams } from 'react-router-dom';
|
||||
|
||||
@ -29,8 +29,6 @@ const AccountGallery = () => {
|
||||
const isLoading = useAppSelector((state) => state.timelines.get(`account:${account?.id}:with_replies:media`)?.isLoading);
|
||||
const hasMore = useAppSelector((state) => state.timelines.get(`account:${account?.id}:with_replies:media`)?.hasMore);
|
||||
|
||||
const node = useRef<HTMLDivElement>(null);
|
||||
|
||||
const handleScrollToBottom = () => {
|
||||
if (hasMore) {
|
||||
handleLoadMore();
|
||||
@ -97,12 +95,13 @@ const AccountGallery = () => {
|
||||
|
||||
return (
|
||||
<Column label={`@${account.acct}`} transparent withHeader={false}>
|
||||
<div role='feed' className='grid grid-cols-2 gap-2 sm:grid-cols-3' ref={node}>
|
||||
<div role='feed' className='grid grid-cols-2 gap-1 overflow-hidden rounded-md sm:grid-cols-3'>
|
||||
{attachments.map((attachment, index) => (
|
||||
<MediaItem
|
||||
key={`${attachment.status.id}+${attachment.id}`}
|
||||
attachment={attachment}
|
||||
onOpenMedia={handleOpenMedia}
|
||||
isLast={index === attachments.size - 1}
|
||||
/>
|
||||
))}
|
||||
|
||||
|
||||
@ -67,12 +67,13 @@ const GroupGallery: React.FC<IGroupGallery> = (props) => {
|
||||
|
||||
return (
|
||||
<Column label={group.display_name} transparent withHeader={false}>
|
||||
<div role='feed' className='mt-4 grid grid-cols-2 gap-2 sm:grid-cols-3'>
|
||||
{attachments.map((attachment) => (
|
||||
<div role='feed' className='mt-4 grid grid-cols-2 gap-1 overflow-hidden rounded-md sm:grid-cols-3'>
|
||||
{attachments.map((attachment, index) => (
|
||||
<MediaItem
|
||||
key={`${attachment.status.id}+${attachment.id}`}
|
||||
attachment={attachment}
|
||||
onOpenMedia={handleOpenMedia}
|
||||
isLast={index === attachments.length - 1}
|
||||
/>
|
||||
))}
|
||||
|
||||
|
||||
@ -54,12 +54,13 @@ const GroupMediaPanel: React.FC<IGroupMediaPanel> = ({ group }) => {
|
||||
|
||||
if (!nineAttachments.isEmpty()) {
|
||||
return (
|
||||
<div className='grid grid-cols-3 gap-1'>
|
||||
{nineAttachments.map((attachment, _index) => (
|
||||
<div className='grid grid-cols-3 gap-1 overflow-hidden rounded-md'>
|
||||
{nineAttachments.map((attachment, index) => (
|
||||
<MediaItem
|
||||
key={`${attachment.status.id}+${attachment.id}`}
|
||||
attachment={attachment}
|
||||
onOpenMedia={handleOpenMedia}
|
||||
isLast={index === nineAttachments.size - 1}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
|
||||
@ -52,12 +52,13 @@ const ProfileMediaPanel: React.FC<IProfileMediaPanel> = ({ account }) => {
|
||||
|
||||
if (!nineAttachments.isEmpty()) {
|
||||
return (
|
||||
<div className='grid grid-cols-3 gap-1'>
|
||||
{nineAttachments.map((attachment, _index) => (
|
||||
<div className='grid grid-cols-3 gap-1 overflow-hidden rounded-md'>
|
||||
{nineAttachments.map((attachment, index) => (
|
||||
<MediaItem
|
||||
key={`${attachment.status.id}+${attachment.id}`}
|
||||
attachment={attachment}
|
||||
onOpenMedia={handleOpenMedia}
|
||||
isLast={index === nineAttachments.size - 1}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
}
|
||||
|
||||
&__item-gifv-thumbnail {
|
||||
@apply rounded-md cursor-zoom-in h-full object-cover relative w-full z-[1] transform-none top-0;
|
||||
@apply cursor-zoom-in h-full object-cover relative w-full z-[1] transform-none top-0;
|
||||
}
|
||||
|
||||
&__gifv__label,
|
||||
|
||||
Reference in New Issue
Block a user