Fix TODO's comments
This commit is contained in:
parent
c0683dafb3
commit
a9d4e94580
6 changed files with 22 additions and 34 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
6
src/components/Table/Table.module.css
Normal file
6
src/components/Table/Table.module.css
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
.table th,
|
||||||
|
.table td {
|
||||||
|
padding: 0.25rem 1rem;
|
||||||
|
border: 1px solid white;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
@ -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) => (
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue