UNPKG

awesome-gcl

Version:
88 lines (87 loc) 3.25 kB
import React from "react"; import { TablePropTypes } from "./types"; /** * Table Row component * * @param {TablePropTypes} props * @property {HeaderPropTypes[]} headers - Determines what data should be rendered based on the header * @property {DataPropTypes[]} data - First-level table data information * @property {function} [onRowClick] - Function to retrieve row information * @param {DataPropTypes} onRowClick.row - Row clicked * @property {DataPropTypes[]} checkedArray - Determines which rows change a marked checkbox * @property {function} [details] - Function to render a ReactNode based on the row information * @param {DataPropTypes} details.row - Row clicked * @property {number} index - Determines if all rows have the marked checkbox * @property {TableAdditionalClassesPropTypes} [props.additionalClasses] - Object for additional css classes to each HTML tah * @property {string[]} [additionalClasses.header] - CSS classes for header-{id} th HTML tag * @property {string[]} [additionalClasses.row] - CSS classes for row tr HTML tag * @property {string[]} [additionalClasses.dataWrapper] - CSS classes for data wrapper td HTML tag * @property {string[]} [additionalClasses.data] - CSS classes for data div th HTML tag * @property {string[]} [additionalClasses.details] - CSS classes for details td HTML tag * @property {string[]} [additionalClasses.iconWrapper] - CSS classes for icon wrapper div th HTML tag * @property {string[]} [additionalClasses.table] - CSS classes for table HTML tag * @property {string[]} [additionalClasses.tableHead] - CSS classes for thead HTML tag * @property {string[]} [additionalClasses.headerRow] - CSS classes for tr HTML tag * @property {string[]} [additionalClasses.hiddenIconRep] - CSS classes for table header div HTML tag * @example * type TableRowType = Record<string, any> & { * details?: any * } * * <Table * headers={[ * { * id: 'name', * label: 'Name' * }, * { * id: 'rank', * label: 'Rank' * }, * { * id: 'lightsaberColor', * label: 'Lightsaber Color' * }, * ]} * data={[ * { * name: 'Obi-wan', * rank: 'Master', * lightsaberColor: 'Blue', * details: 'Anakin\'s master' * }, * { * name: 'Yoda', * rank: 'Master', * lightsaberColor: 'Green', * details: 'Jedi Master' * }, * { * name: 'Anakin', * rank: 'Master', * lightsaberColor: 'Red', * details: 'Luke\'s father' * } * ]} * checkedArray={[]} * onRowClick={(row: TableRowType) => console.log(row)} * details={(row: TableRowType) => ( * <p>{row.details}</p> * )} * additionalClasses={{ * header: ['font-size-large'], * row: ['gray-background'], * dataWrapper: ['red-background'], * data: ['large-font-size'], * details: ['yellow-background'], * iconWrapper: ['blue-border'], * table: ['width-twice'], * tableHead: ['light-gray-background'], * headerRow: ['medium-padding'], * hiddenIconRep: ['width-0'] * }} * /> * * @returns {JSX.Element} - Table */ export declare const Table: ({ headers, data, checkedArray, onRowClick, details, additionalClasses }: TablePropTypes) => React.JSX.Element;