Open JonathanCoxLRS opened 1 year ago
This is supported presently as it's merely a matter of adding a row at the beginning and optionally customizing the style.
This isn't well documented, so I'll leave this open as something that can be added to the docs.
For now, here is an example:
const Table = require('.');
const colors = require('@colors/colors');
const table = new Table({
head: [{ content: 'Users', colSpan: 4, hAlign: 'center' }],
});
table.push(
// Subhead row with custom style
['First', 'Last', 'Email', 'Phone'].map((content) => ({ content: colors.bold(content) })),
['Jane', 'Doe', 'Jane.Doe@example.com', '555-867-5309'],
['John', 'Doe', 'John.Doe@example.com', '555-867-5310'],
);
console.log(table.toString());
Outputs:
The downside to the above example is that it requires adding @colors/colors
as an additional dependency (to optionally use it to customize styles) which should therefore be a peerDependency.
It would be ideal if colors was exposed through the Table interface so that it could be used directly: Eg.
['First', 'Last', 'Email', 'Phone'].map((content) => ({ content: Table.colors.bold(content) })),
Note: This doesn't presently work. @colors/colors
has to be added as a dependency and specifically included.
Gotcha. I'm already using chalk
so I can use that for styles. This approach does seem to work for my use case, even though it's a bit clunky. table.push
seems like it should only be for body rows. It'd be nice if this supported something like one of the following:
Perhaps table.body.push
and table.head.push
for managing body vs head rows.
Updating the constructor to allow specifying additional head rows at time of instantiation.
const table = new Table(
{
head: [
{ content: 'Users', colSpan: 4, hAlign: 'center' }, // row 1
['First', 'Last', 'Email', 'Phone'] // row 2
],
}
);
Thanks for the help!
Hello,
Does cli-table3 support multiple header rows? For example:
If so, can you point me to some documentation for this?
Thanks!