[ 
https://issues.apache.org/jira/browse/DOXIA-590?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17540332#comment-17540332
 ] 

ASF GitHub Bot commented on DOXIA-590:
--------------------------------------

feckertson commented on code in PR #98:
URL: https://github.com/apache/maven-doxia/pull/98#discussion_r878615108


##########
doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java:
##########
@@ -1567,21 +1567,24 @@ public void tableRow()
     @Override
     public void tableRow( SinkEventAttributes attributes )
     {
-        MutableAttributeSet att = new SinkEventAttributeSet();
+        MutableAttributeSet atts = SinkUtils.filterAttributes(
+                attributes, SinkUtils.SINK_TR_ATTRIBUTES );
 
-        if ( evenTableRow )
+        if ( atts == null )
         {
-            att.addAttribute( Attribute.CLASS, "a" );
+            atts = new SinkEventAttributeSet();
         }
-        else
+
+        String rowClass = evenTableRow ? "a" : "b";
+        if ( atts.isDefined( Attribute.CLASS.toString() ) )
         {
-            att.addAttribute( Attribute.CLASS, "b" );
+            String givenRowClass = (String) atts.getAttribute( 
Attribute.CLASS.toString() );
+            rowClass = givenRowClass + " " + rowClass;

Review Comment:
   This change covers the opening statement in my Jira but not the complexity 
described in my follow-up statement.
   
   I believe the code should check to see if givenRowClass matches 
`"\b(?:a|b)\b"` and skip appending rowClass if it does. That is, don't add "a" 
or "b" if the provide class already has one or the other.  This would allow the 
consumer to decide whether a row is initially odd or even.
   
   Why would one want to control this?  In order to create a table which 
supports hiding/showing selected rows and have it initially displayed with the 
rows hidden.
   
   To be clear, the zebra striping does not work correctly when rows are 
hidden. To address the matter, javascript must be employed to fix up the "a" 
and "b" assignments when rows are hidden/displayed and I did not see a way to 
have doxia execute some javascript just before or just after the document is 
rendered. 
   
   Without this control one must first display all the rows and then hide the 
rows that should be hidden.  This can create a noticeable flicker.  In my use 
case, I opted to start with no rows hidden because of the flicker.  The user 
then has to select a toggle to hide the noise, but it would be better 
experience to start with those rows already hidden. 
   
   





> Either provided element class or default class gets ignored
> -----------------------------------------------------------
>
>                 Key: DOXIA-590
>                 URL: https://issues.apache.org/jira/browse/DOXIA-590
>             Project: Maven Doxia
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.8
>            Reporter: Fred Eckertson
>            Assignee: Michael Osipov
>            Priority: Major
>             Fix For: 2.0.0-M3, 1.11.2
>
>         Attachments: image-2022-05-18-21-57-40-619.png
>
>
> The following construct is somewhat common in doxia-core
> att.addAttribute( Attribute.CLASS, "a" );
> The documentation says that basic attributes (including CLASS) are supported. 
> However in cases like this either that "a" or the CLASS that was provided in 
> the attributes parameter will be ignored. The correct way to do this is to 
> append the provided CLASS to "a " if a CLASS attribute was provided.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to