kotlinx.html icon indicating copy to clipboard operation
kotlinx.html copied to clipboard

TBODY should be a FlowContent

Open reubenfirmin opened this issue 8 months ago • 0 comments

For the same reason as #283, TBODY should be a FlowContent. The strict typing makes it hard to flexibly generate fragments. HTMX style pages are where this framework really shines - but the typing makes it difficult.

Consider:

I have a data table component. My tbody is:

            tbody {
                id = tableTarget.id
                renderRows([email protected], [email protected], [email protected])
            }

When I call my data table component, I want it to either generate additional rows (using all of the same configs) or generate the full table.

fun <T, R> FlowContent.datatable(classes: String,
                                 records: List<TableRecord<T, R>>,
                                 configs: List<FieldConfiguration<T, R>>,
                                 headingRenderers: List<FieldHeadingConfiguration>? = null,
                                 loadNextPage: BaseRoute? = null,
                                 rowsOnly: Boolean = false,
                                 rowStyle: String = DEFAULT_ROW_STYLE) {
    if (rowsOnly) {
        renderRows(records, rowStyle, configs)
    } else {
        Datatable(classes, records, configs, headingRenderers, rowStyle, loadNextPage, consumer).visit {
            render()
        }
    }
}

What receiver works for renderRows in both cases? Nada. It's inconvenient.

reubenfirmin avatar Jun 14 '24 15:06 reubenfirmin