From 9e0fde7ed793426d9a3ed8c79e56bc95c01486b2 Mon Sep 17 00:00:00 2001 From: eug-vs Date: Sun, 14 Mar 2021 00:47:33 +0300 Subject: feat: implement ListTable --- src/components/ListTable.tsx | 37 +++++++++++++++++++++++++++++++++++++ src/index.tsx | 17 +++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/components/ListTable.tsx diff --git a/src/components/ListTable.tsx b/src/components/ListTable.tsx new file mode 100644 index 0000000..5d899e0 --- /dev/null +++ b/src/components/ListTable.tsx @@ -0,0 +1,37 @@ +import React from 'react'; + +interface Field { + key: string; + label: string; +} + +interface Props { + items: any[]; + fields: Field[]; + handleRowClick?: (index: number) => any; +} + + +const ListTable: React.FC = ({ children, items, fields, handleRowClick = () => {} }) => { + return ( + + + + {fields.map(field => )} + + + + {items.map((item, index) => ( + handleRowClick(index)} + > + {fields.map(field => )} + + ))} + +
{field.label}
{item[field.key]}
+ ); +}; + +export default ListTable; diff --git a/src/index.tsx b/src/index.tsx index 779f0d0..4c354f4 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -4,12 +4,28 @@ import 'tailwindcss/tailwind.css'; import Paper from './components/Paper'; import Header from './components/Header'; import Button from './components/Button'; +import ListTable from './components/ListTable'; const navigation = [ { name: 'Главная', route: '/'}, { name: 'Товары', route: '/products'} ]; +const fields = [ + { key: '_id', label: 'ID' }, + { key: 'name', label: 'Название' }, + { key: 'type', label: 'Тип' }, +]; + +const items = [ + { _id: 1, name: 'Товар 1', type: 'Кондиционер' }, + { _id: 2, name: 'Товар 2', type: 'Кондиционер' }, + { _id: 3, name: 'Товар 3', type: 'Кондиционер' }, + { _id: 4, name: 'Товар 4', type: 'Кондиционер' }, + { _id: 5, name: 'Товар 5', type: 'Кондиционер' }, + { _id: 6, name: 'Товар 6', type: 'Кондиционер' }, +]; + const App: React.FC = () => ( <>
@@ -19,6 +35,7 @@ const App: React.FC = () => (

+ ); -- cgit v1.2.3