refactor: move sortable fields in table

This commit is contained in:
Sammy Teillet
2023-04-24 13:53:49 +02:00
parent 00ad3a89b5
commit bc91e97695
3 changed files with 33 additions and 13 deletions

View File

@ -10,6 +10,7 @@ import TableHeader from './table-header/TableHeader';
import { IconProp } from '@fortawesome/fontawesome-svg-core';
import styled from '@emotion/styled';
import { SortType } from './table-header/SortAndFilterBar';
import { faCalendar } from '@fortawesome/pro-regular-svg-icons';
type OwnProps<TData> = {
data: Array<TData>;
@ -75,12 +76,22 @@ function Table<TData>({
getCoreRowModel: getCoreRowModel(),
});
const sortsAvailable: Array<SortType> = [
{
id: 'created_at',
label: 'Created at',
order: 'asc',
icon: faCalendar,
},
];
return (
<StyledTableWithHeader>
<TableHeader
viewName={viewName}
viewIcon={viewIcon}
onSortsUpdate={onSortsUpdate}
sortsAvailable={sortsAvailable}
/>
<StyledTable>
<thead>

View File

@ -2,7 +2,6 @@ import styled from '@emotion/styled';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import DropdownButton from './DropdownButton';
import { IconProp } from '@fortawesome/fontawesome-svg-core';
import { faCalendar } from '@fortawesome/pro-regular-svg-icons';
import SortAndFilterBar, { SortType } from './SortAndFilterBar';
import { useEffect, useState } from 'react';
@ -10,6 +9,7 @@ type OwnProps = {
viewName: string;
viewIcon?: IconProp;
onSortsUpdate?: (sorts: Array<SortType>) => void;
sortsAvailable: Array<SortType>;
};
const StyledContainer = styled.div`
@ -44,7 +44,12 @@ const StyledFilters = styled.div`
margin-right: ${(props) => props.theme.spacing(2)};
`;
function TableHeader({ viewName, viewIcon, onSortsUpdate }: OwnProps) {
function TableHeader({
viewName,
viewIcon,
onSortsUpdate,
sortsAvailable,
}: OwnProps) {
const [sorts, setSorts] = useState([] as Array<SortType>);
const onSortItemSelect = (sortId: string) => {
@ -64,15 +69,6 @@ function TableHeader({ viewName, viewIcon, onSortsUpdate }: OwnProps) {
onSortsUpdate && onSortsUpdate(sorts);
}, [sorts, onSortsUpdate]);
const sortsAvailable: Array<SortType> = [
{
id: 'created_at',
label: 'Created at',
order: 'asc',
icon: faCalendar,
},
];
return (
<StyledContainer>
<StyledTableHeader>

View File

@ -1,7 +1,8 @@
import TableHeader from '../TableHeader';
import { ThemeProvider } from '@emotion/react';
import { lightTheme } from '../../../../layout/styles/themes';
import { faBuilding } from '@fortawesome/pro-regular-svg-icons';
import { faBuilding, faCalendar } from '@fortawesome/pro-regular-svg-icons';
import { SortType } from '../SortAndFilterBar';
const component = {
title: 'TableHeader',
@ -11,9 +12,21 @@ const component = {
export default component;
export const RegularTableHeader = () => {
const sortsAvailable: Array<SortType> = [
{
id: 'created_at',
label: 'Created at',
order: 'asc',
icon: faCalendar,
},
];
return (
<ThemeProvider theme={lightTheme}>
<TableHeader viewName="Test" viewIcon={faBuilding} />
<TableHeader
viewName="Test"
viewIcon={faBuilding}
sortsAvailable={sortsAvailable}
/>
</ThemeProvider>
);
};