/* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You * may not use this file except in compliance with the License. A copy of * the License is located at * * http://aws.amazon.com/apache2.0/ * * or in the "license" file accompanying this file. This file is * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF * ANY KIND, either express or implied. See the License for the specific * language governing permissions and limitations under the License. */ import * as React from 'react'; import { tableClass, cellClass, tablePageClass, tablePageTitleClass, tableWrapperClass } from '../style/SimpleTable'; export interface SimpleTablePageProps { title?: string; children?: JSX.Element; } export class SimpleTableProps { headings: string[]; rows: (string | JSX.Element)[][]; } interface CellData { content: string | JSX.Element; header?: boolean; } export function SimpleTablePage(data: SimpleTablePageProps) { let title = null; if (data.title) { title =
{data.title}
; } return (
{title} {data.children}
); } export class SimpleTable extends React.Component { renderHeadingRow = (_cell: string, cellIndex: number) => { const { headings } = this.props; return ; }; renderRow = (row: (string | JSX.Element)[], rowIndex: number) => { return ( {row.map((cell, cellIndex) => { return ; })} ); }; render() { const { headings, rows } = this.props; this.renderHeadingRow = this.renderHeadingRow.bind(this); this.renderRow = this.renderRow.bind(this); const theadMarkup = {headings.map(this.renderHeadingRow)}; const tbodyMarkup = rows.map(this.renderRow); return (
{theadMarkup}{tbodyMarkup}
); } } function Cell(data: CellData) { const cellMarkup = data.header ? ( {data.content} ) : ( {data.content} ); return cellMarkup; }