Fix TODO's comments

This commit is contained in:
Alexander Navarro 2023-11-11 12:26:39 -03:00
parent c0683dafb3
commit a9d4e94580
6 changed files with 22 additions and 34 deletions

View file

@ -61,14 +61,6 @@ li:not(:last-child) {
margin-bottom: var(--prj-spacing-1); margin-bottom: var(--prj-spacing-1);
} }
/* TODO: Move to where it belogns */
th,
td {
padding: 0.25rem 1rem;
border: 1px solid white;
text-align: center;
}
.btn { .btn {
padding: var(--prj-spacing-1); padding: var(--prj-spacing-1);
} }

View file

@ -1,16 +1,16 @@
import { HeaderType, type Filter, type Value } from '../types.ts'; import { HeaderType, type Filter, type Value } from '../types.ts';
export { default as SelectFilter } from './SelectFilter.tsx'; export { default as SelectFilter } from './SelectFilter.tsx';
export { default as NumberInput } from './NumberInput.tsx'; export { default as NumberFilter } from './NumberFilter.tsx';
export type DataItem = Record<string, any>;
const filterString = (value: Value, data: any): boolean => { const filterString = (value: Value, data: any): boolean => {
return data.search(value) !== -1; return data.search(value) !== -1;
}; };
const filterNumber = (value: Value, data: any): boolean => { const filterNumber = (value: Value, data: any): boolean => {
if (!Array.isArray(value)) { if (!Array.isArray(value)) {
return true; throw new Error(
'Value should be an array in the form of [operator: string, value: number]',
);
} }
const [operator, numberValue] = value; const [operator, numberValue] = value;

View file

@ -0,0 +1,6 @@
.table th,
.table td {
padding: 0.25rem 1rem;
border: 1px solid white;
text-align: center;
}

View file

@ -1,13 +1,9 @@
import React, { useMemo, useRef, useState } from 'react'; import React, { useMemo, useRef, useState } from 'react';
import usePagination, { Offset } from 'src/hooks/usePagination'; import usePagination, { Offset } from 'src/hooks/usePagination';
import { import { SelectFilter, NumberFilter, resolveFilterByType } from './Filters';
SelectFilter, import type { DataItem, Header, Value, Filter } from './types';
NumberInput,
resolveFilterByType,
type Filter,
} from './Filters';
import type { DataItem, Header, Value } from './types';
import { HeaderType } from './types'; import { HeaderType } from './types';
import styles from './Table.module.css';
interface Props { interface Props {
data: DataItem[]; data: DataItem[];
@ -92,7 +88,14 @@ export default function Table({ data, headers }: Props): JSX.Element {
/> />
); );
case HeaderType.Number: case HeaderType.Number:
return <NumberInput {...baseProps} />; return (
<NumberFilter
{...baseProps}
onChange={(value: [string, number | null]) => {
handleUpdateFilters(header.key, header.type, value as Value);
}}
/>
);
case HeaderType.Select: case HeaderType.Select:
return <SelectFilter data={data} {...baseProps} />; return <SelectFilter data={data} {...baseProps} />;
case HeaderType.Multiple: case HeaderType.Multiple:
@ -120,7 +123,7 @@ export default function Table({ data, headers }: Props): JSX.Element {
</section> </section>
<section className="mt-1 overflow-scroll"> <section className="mt-1 overflow-scroll">
<table> <table className={styles.table}>
<thead> <thead>
<tr> <tr>
{headers.map((item, idx) => ( {headers.map((item, idx) => (

View file

@ -54,17 +54,4 @@ const headers: Header[] = [
<section> <section>
<Table client:load data={games} headers={headers} /> <Table client:load data={games} headers={headers} />
</section> </section>
<section>
<ul>
{
games.map((item) => (
<li>
{/* <a href={`games/${item.slug}`}>{item.title}</a> */}
{item.title}
</li>
))
}
</ul>
</section>
</Layout> </Layout>