1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-25 12:56:41 +07:00

added lab sorting

This commit is contained in:
Fedor Katurov 2022-03-23 17:54:51 +07:00
parent 566e1192cd
commit 948f3a7e04
7 changed files with 63 additions and 15 deletions

View file

@ -1,6 +1,8 @@
import React, { FC } from 'react';
import { LabHeadItem } from '~/components/lab/LabHeadItem';
import { LabNodesSort } from '~/types/lab';
import { useLabContext } from '~/utils/context/LabContextProvider';
import styles from './styles.module.scss';
@ -9,20 +11,28 @@ interface IProps {
}
const LabHead: FC<IProps> = ({ isLoading }) => {
const { sort, setSort } = useLabContext();
return (
<div className={styles.wrap}>
<div className={styles.group}>
<LabHeadItem icon="recent" active isLoading={isLoading}>
<LabHeadItem
icon="recent"
active={sort === LabNodesSort.New}
isLoading={isLoading}
onClick={() => setSort(LabNodesSort.New)}
>
Свежие
</LabHeadItem>
<LabHeadItem icon="hot" isLoading={isLoading}>
<LabHeadItem
icon="hot"
active={sort === LabNodesSort.Hot}
isLoading={isLoading}
onClick={() => setSort(LabNodesSort.Hot)}
>
Популярные
</LabHeadItem>
<LabHeadItem icon="star_full" isLoading={isLoading}>
Важные
</LabHeadItem>
</div>
</div>
);

View file

@ -12,12 +12,13 @@ interface IProps {
icon: string;
isLoading?: boolean;
active?: boolean;
onClick?: () => void;
}
const LabHeadItem: FC<IProps> = ({ icon, children, isLoading, active }) => {
const LabHeadItem: FC<IProps> = ({ icon, children, isLoading, active, onClick }) => {
if (isLoading) {
return (
<Group horizontal className={styles.item}>
<Group horizontal className={styles.item} key="loading">
<Placeholder width="32px" height={32} />
<Placeholder width="96px" height={18} />
</Group>
@ -25,7 +26,11 @@ const LabHeadItem: FC<IProps> = ({ icon, children, isLoading, active }) => {
}
return (
<Group horizontal className={classNames(styles.item, { [styles.active]: active })}>
<Group
horizontal
className={classNames(styles.item, { [styles.active]: active })}
onClick={onClick}
>
<Icon icon={icon} size={24} />
<span className={styles.text}>{children}</span>
</Group>