mirror of
https://github.com/muerwre/vault-frontend.git
synced 2025-04-24 20:36:40 +07:00
fixed comment loader animation
This commit is contained in:
parent
85f3de775a
commit
c30ecc1b81
4 changed files with 56 additions and 28 deletions
|
@ -9,20 +9,25 @@ import { t } from '~/utils/trans';
|
|||
import styles from './styles.module.scss';
|
||||
|
||||
interface IProps {
|
||||
is_loading?: boolean;
|
||||
loading?: boolean;
|
||||
count?: number;
|
||||
}
|
||||
|
||||
const NodeNoComments: FC<IProps> = ({ is_loading = false, count = 3 }) => {
|
||||
const NodeNoComments: FC<IProps> = ({ loading = false, count = 3 }) => {
|
||||
const items = useMemo(
|
||||
() => [...new Array(count)].map((_, i) => <div className={styles.card} key={i} />),
|
||||
[count]
|
||||
() =>
|
||||
[...new Array(count)].map((_, i) => (
|
||||
<div className={styles.card} key={i} />
|
||||
)),
|
||||
[count],
|
||||
);
|
||||
|
||||
return (
|
||||
<Group className={classNames(styles.wrap, { is_loading })}>
|
||||
<Group className={classNames(styles.wrap, { [styles.loading]: loading })}>
|
||||
{items}
|
||||
{!is_loading && <div className={styles.nothing}>{t(ERRORS.NO_COMMENTS)}</div>}
|
||||
{!loading && (
|
||||
<div className={styles.nothing}>{t(ERRORS.NO_COMMENTS)}</div>
|
||||
)}
|
||||
</Group>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -1,5 +1,14 @@
|
|||
@import 'src/styles/variables';
|
||||
|
||||
@keyframes fade {
|
||||
from {
|
||||
opacity: 1;
|
||||
}
|
||||
to {
|
||||
opacity: 0.3;
|
||||
}
|
||||
}
|
||||
|
||||
.wrap {
|
||||
user-select: none;
|
||||
overflow: hidden;
|
||||
|
@ -17,7 +26,7 @@
|
|||
bottom: 0;
|
||||
}
|
||||
|
||||
&:global(.is_loading) {
|
||||
&.loading {
|
||||
opacity: 1;
|
||||
|
||||
.card {
|
||||
|
|
|
@ -17,21 +17,21 @@ const BorisComments: FC<IProps> = () => {
|
|||
const user = useUserContext();
|
||||
const { isUser } = useAuth();
|
||||
|
||||
const {
|
||||
isLoading,
|
||||
comments,
|
||||
onSaveComment,
|
||||
} = useCommentContext();
|
||||
const { isLoading, comments, onSaveComment } = useCommentContext();
|
||||
const { node } = useNodeContext();
|
||||
|
||||
return (
|
||||
<Group>
|
||||
{(isUser || isSSR) && (
|
||||
<NodeCommentFormSSR user={user} nodeId={node.id} saveComment={onSaveComment} />
|
||||
<NodeCommentFormSSR
|
||||
user={user}
|
||||
nodeId={node.id}
|
||||
saveComment={onSaveComment}
|
||||
/>
|
||||
)}
|
||||
|
||||
{isLoading || !comments?.length ? (
|
||||
<NodeNoComments is_loading count={7} />
|
||||
<NodeNoComments loading count={7} />
|
||||
) : (
|
||||
<NodeComments order="ASC" />
|
||||
)}
|
||||
|
|
|
@ -26,7 +26,11 @@ interface IProps {
|
|||
const NodeBottomBlock: FC<IProps> = ({ commentsOrder }) => {
|
||||
const user = useUserContext();
|
||||
const { node, isLoading } = useNodeContext();
|
||||
const { comments, isLoading: isLoadingComments, onSaveComment } = useCommentContext();
|
||||
const {
|
||||
comments,
|
||||
isLoading: isLoadingComments,
|
||||
onSaveComment,
|
||||
} = useCommentContext();
|
||||
const { related, isLoading: isLoadingRelated } = useNodeRelatedContext();
|
||||
const { inline } = useNodeBlocks(node, isLoading);
|
||||
const { isUser } = useAuthProvider();
|
||||
|
@ -43,15 +47,21 @@ const NodeBottomBlock: FC<IProps> = ({ commentsOrder }) => {
|
|||
{inline && <div className={styles.inline}>{inline}</div>}
|
||||
|
||||
<article>
|
||||
{isLoading || isLoadingComments || (!comments.length && !inline) ? (
|
||||
<NodeNoComments is_loading={isLoadingComments || isLoading} />
|
||||
{isLoading ||
|
||||
isLoadingComments ||
|
||||
(!comments.length && !inline) ? (
|
||||
<NodeNoComments loading={isLoadingComments || isLoading} />
|
||||
) : (
|
||||
<NodeComments order={commentsOrder} />
|
||||
)}
|
||||
</article>
|
||||
|
||||
{isUser && !isLoading && (
|
||||
<NodeCommentFormSSR nodeId={node.id} saveComment={onSaveComment} user={user} />
|
||||
<NodeCommentFormSSR
|
||||
nodeId={node.id}
|
||||
saveComment={onSaveComment}
|
||||
user={user}
|
||||
/>
|
||||
)}
|
||||
</Group>
|
||||
|
||||
|
@ -66,7 +76,11 @@ const NodeBottomBlock: FC<IProps> = ({ commentsOrder }) => {
|
|||
<NodeTagsBlock />
|
||||
</div>
|
||||
<div className={styles.left_item}>
|
||||
<NodeRelatedBlock isLoading={isLoadingRelated} node={node} related={related} />
|
||||
<NodeRelatedBlock
|
||||
isLoading={isLoadingRelated}
|
||||
node={node}
|
||||
related={related}
|
||||
/>
|
||||
</div>
|
||||
</Sticky>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue