18 template <
template <
typename...>
typename ContainerT,
typename ElementT,
typename... OtherArgs>
25 std::variant<std::monostate, std::string, Nui::Observed<std::string>
const*>
caption = std::monostate{};
57 template <
typename ModelT>
60 using Table<std::vector<ModelT>>::Table;
62 template <
template <
typename...>
typename ContainerT,
typename ElementT,
typename... OtherArgs>
63 class Table<ContainerT<ElementT, OtherArgs...>>
67 : tableParams_{std::move(args)}
72 using namespace Elements;
75 return table{tableParams_.tableAttributes}(
77 [cap = std::move(tableParams_.caption), capAttributes = std::move(tableParams_.captionAttributes)]() ->
Nui::ElementRenderer {
83 return caption{capAttributes}(content);
86 return caption{capAttributes}(*model);
91 [headerRenderer = std::move(tableParams_.headerRenderer), headerAttributes = std::move(tableParams_.headerAttributes)]() ->
Nui::ElementRenderer {
93 return thead{headerAttributes}(headerRenderer());
98 tbody{tableParams_.bodyAttributes}(
99 range(tableParams_.tableModel),
100 [renderer = std::move(tableParams_.rowRenderer)](
long i,
auto const& row) ->
Nui::ElementRenderer {
101 using namespace std::string_literals;
104 return renderer(i, row);
110 [footerRenderer = std::move(tableParams_.footerRenderer), footerAttributes = std::move(tableParams_.footerAttributes)]() ->
Nui::ElementRenderer {
113 tfoot{footerAttributes}(footerRenderer());
125 template <
template <
typename...>
typename ContainerT,
typename ElementT,
typename... OtherArgs>
constexpr Table(TableArguments< ContainerT, ElementT, OtherArgs... > &&args)
Definition table.hpp:66
Nui::ElementRenderer operator()() &&
Definition table.hpp:70
A wrapper around the html table elements.
Definition table.hpp:59
Definition observed_value.hpp:1283
static auto nil()
Definition nil.hpp:7
auto visitOverloaded(std::variant< VariantTypes... > const &variant, VisitFunctionTypes &&... visitFunctions)
Definition visit_overloaded.hpp:10
std::function< std::shared_ptr< Dom::Element >(Dom::Element &, Renderer const &)> ElementRenderer
Definition element_renderer.hpp:11
ObservedRange< ObservedValue > range(ObservedValue &observedValues)
Definition range.hpp:83
std::vector< Attribute > tableAttributes
Attributes to be forwarded to the table element.
Definition table.hpp:37
std::function< Nui::ElementRenderer()> footerRenderer
The renderer for the footer. Can be empty.
Definition table.hpp:34
std::vector< Attribute > footerAttributes
Attributes to be forwarded to the footer element.
Definition table.hpp:49
std::vector< Attribute > bodyAttributes
Attributes to be forwarded to the body element.
Definition table.hpp:46
std::function< Nui::ElementRenderer()> headerRenderer
The renderer for the header. Can be empty.
Definition table.hpp:28
std::vector< Attribute > captionAttributes
Attributes to be forwarded to the caption element.
Definition table.hpp:40
Nui::Observed< ContainerT< ElementT, OtherArgs... > > & tableModel
Contains the data to be displayed in the table.
Definition table.hpp:22
std::function< Nui::ElementRenderer(long long i, ElementT const &)> rowRenderer
The renderer for each row.
Definition table.hpp:31
std::variant< std::monostate, std::string, Nui::Observed< std::string > const * > caption
The caption of the table. Can be static, observed or off.
Definition table.hpp:25
std::vector< Attribute > headerAttributes
Attributes to be forwarded to the header element.
Definition table.hpp:43