primefaces / primereact

The Most Complete React UI Component Library
https://primereact.org
MIT License
6.58k stars 989 forks source link

DataTable Passthrough: rowExpansion className not set in DOM #6782

Open LouisTrinczek opened 2 months ago

LouisTrinczek commented 2 months ago

Describe the bug

When using the "rowExpansion" property in the DataTable Pass Through, the className is not set in the DOM.

Reproducer

https://stackblitz.com/edit/9dqyrn-cyspsk?file=src%2FApp.jsx

PrimeReact version

10.6.2

React version

18.x

Language

TypeScript

Build / Runtime

Vite

Browser(s)

Firefox 126.0, Chrome 125.0.6422.142

Steps to reproduce the behavior

Create a DataTable with all the necessary rowExpansion Code. Add the pt prop with these values:

pt={{
          bodyRow: { className: 'CUSTOM-ROW-CLASSNAME' },
          rowExpansion: { className: 'CUSTOM-ROW-EXPANSION-CLASSNAME' },
        }}

Go in your browsers dev tools and select the row.

You will find, that the "CUSTOM-ROW-CLASSNAME" is applied to the bodyRow, but not the "CUSTOM-ROW-EXPANSION-CLASSNAME" to the expanded row.

Expected behavior

Custom className is set to the rowExpansion element and styling is applied.

melloware commented 2 months ago

The bug is here its looking on the Column for PT instead of the DataTable


                const rowExpansionProps = mergeProps(
                    {
                        id,
                        className: cx('rowExpansion'),
                        role: 'row'
                    },
                    getColumnPTOptions('rowExpansion')
                );