Table
The table component is an example component for tables. Manual table rendering is as easy as using the table component.
Usage:
#include <nui/frontend/components/table.hpp>
/* ... */
struct TableEntry
{
std::string firstName;
std::string lastName;
int age;
};
auto makeTable(Nui::Observed<std::vector<TableEntry>>& tableModel)
{
return Table<TableEntry>{{ // 2 braces, because Table takes a struct
// All parameters except tableModel can be omited.
.tableModel = tableModel,
.caption = "Table",
// called once for the header:
.headerRenderer =
[]() {
return Nui::Elements::tr{}(
Nui::Elements::th{}("First Name"),
Nui::Elements::th{}("Last Name"),
Nui::Elements::th{}("Age"));
},
// called for every row of data:
.rowRenderer =
[](long long, auto const& entry) {
return Nui::Elements::tr{}(
Nui::Elements::td{}(entry.firstName),
Nui::Elements::td{}(entry.lastName),
Nui::Elements::td{}(entry.age));
},
// called once for the footer:
.footerRenderer =
[]() {
return Nui::Elements::tr{}(Nui::Elements::td{}("Footer"));
},
// forwarded attributes:
.tableAttributes = {id = "table"},
.captionAttributes = {id = "caption"},
.headerAttributes = {id = "header"},
.bodyAttributes = {id = "body"},
.footerAttributes = {id = "footer"},
}}();
}