This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/main by this push:
     new 5e580f0f62f Bump org.webjars:font-awesome from 6.7.2 to 7.0.0 (part 2)
5e580f0f62f is described below

commit 5e580f0f62f1c9315b195dbd380e000f9856c2ae
Author: Andi Huber <[email protected]>
AuthorDate: Wed Aug 6 06:08:32 2025 +0200

    Bump org.webjars:font-awesome from 6.7.2 to 7.0.0 (part 2)
    
    fixes a bug that only yet has surfaced due to fa 7.0 CSS changes
---
 .../commons/model/action/HasManagedAction.java     | 19 +++++-----
 .../commons/model/decorators/ActionDecorators.java | 40 +++++++++++++---------
 .../actionlinks/serviceactions/CssMenuItem.java    |  5 +--
 .../serviceactions/ServiceActionUtil.java          | 10 +++---
 .../causeway/viewer/wicket/ui/util/WktLinks.java   |  7 ++--
 5 files changed, 41 insertions(+), 40 deletions(-)

diff --git 
a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/action/HasManagedAction.java
 
b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/action/HasManagedAction.java
index cf6bd0b2812..2078b574743 100644
--- 
a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/action/HasManagedAction.java
+++ 
b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/action/HasManagedAction.java
@@ -26,12 +26,14 @@
 import org.apache.causeway.applib.annotation.ActionLayout.Position;
 import org.apache.causeway.applib.annotation.BookmarkPolicy;
 import org.apache.causeway.applib.fa.FontAwesomeLayers;
+import 
org.apache.causeway.core.metamodel.facets.members.iconfa.FaLayersProvider;
 import 
org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
 import 
org.apache.causeway.core.metamodel.interactions.managed.ActionInteractionHead;
 import org.apache.causeway.core.metamodel.interactions.managed.ManagedAction;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
 import org.apache.causeway.core.metamodel.util.Facets;
+import 
org.apache.causeway.viewer.commons.model.decorators.ActionDecorators.LabelIndent;
 import 
org.apache.causeway.viewer.commons.model.decorators.DisablingDecorator.DisablingDecorationModel;
 
 /**
@@ -96,16 +98,17 @@ default Identifier getFeatureIdentifier() {
      *      but not in horizontal action panels,
      *      where e.g. LinkAndLabel correspond to a UI button.
      */
-    default Optional<FontAwesomeLayers> lookupFontAwesomeLayers(final boolean 
forceAlignmentOnIconAbsence) {
+    default Optional<FontAwesomeLayers> lookupFontAwesomeLayers(final 
LabelIndent labelIndent) {
         var managedAction = getManagedAction();
         return ObjectAction.Util.cssClassFaFactoryFor(
                     managedAction.getAction(),
                     managedAction.getOwner())
-                .map(cssClassFaFactory->
-                    forceAlignmentOnIconAbsence
-                        ? cssClassFaFactory.getLayers().emptyToBlank()
-                        : cssClassFaFactory.getLayers()
-                    );
+                .map(FaLayersProvider::getLayers)
+                .map(layers->
+                    switch(labelIndent) {
+                        case FORCE_ALIGNMENT_WITH_BLANK_ICON -> 
layers.emptyToBlank();
+                        case NONE -> layers;
+                    });
     }
 
     default Optional<String> getAdditionalCssClass() {
@@ -120,10 +123,10 @@ public static <T extends HasManagedAction> Predicate<T> 
isPositionedAt(
             final ActionLayout.Position position) {
         return a -> a.getPosition() == position;
     }
-    
+
     /**
      * With respect to UI visual hierarchy, actions that appear in the 
field-set header
-     * are ranked higher than those that appear inside a field-set. 
+     * are ranked higher than those that appear inside a field-set.
      */
     default boolean isPositionedInsideFieldSet() {
         return isPositionedAt(Position.BELOW)
diff --git 
a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/decorators/ActionDecorators.java
 
b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/decorators/ActionDecorators.java
index 5e0e98118ac..518b928c5c9 100644
--- 
a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/decorators/ActionDecorators.java
+++ 
b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/decorators/ActionDecorators.java
@@ -41,18 +41,18 @@ public enum ActionStyle {
         MENU_ITEM;
     }
 
-    public enum ButtonModifier {
-        NONE,
+    public enum VisualRank {
+        DEFAULT,
         /**
          * With respect to UI visual hierarchy, actions that appear in the 
field-set header
          * are ranked higher than those that appear inside a field-set.
          * <p>
          * Consequently, viewers may reflect lower visual rank e.g. by 
rendering the latter action buttons as outlined.
          */
-        LOWER_VISUAL_RANK,
+        LOWER,
     }
 
-    public enum MenuItemModifier {
+    public enum LabelIndent {
         NONE,
         /**
          * For menu items that are rendered in vertical sequence, some may 
have icons some may not.
@@ -68,32 +68,38 @@ public enum MenuItemModifier {
     public record ActionDecorationModel(
             ObjectAction action,
             ActionStyle actionStyle,
-            ButtonModifier buttonModifier,
-            MenuItemModifier menuItemModifier,
+            VisualRank visualRank,
+            LabelIndent labelIndent,
             Optional<DisablingDecorationModel> disabling,
             Optional<PrototypingDecorationModel> prototyping,
             Optional<FontAwesomeLayers> fontAwesomeLayers,
             Optional<String> describedAs,
             Optional<String> additionalCssClass) {
 
-        public static ActionDecorationModelBuilder builder(
-                final HasManagedAction managedActionHolder) {
+        public static ActionDecorationModel of(
+                final HasManagedAction managedActionHolder, final ActionStyle 
actionStyle) {
             var managedAction = managedActionHolder.getManagedAction();
             var action = managedAction.getAction();
+            var labelIndent = switch (actionStyle) {
+                case BUTTON -> LabelIndent.NONE;
+                case MENU_ITEM -> LabelIndent.FORCE_ALIGNMENT_WITH_BLANK_ICON;
+            };
             return builderInternal()
                 .action(action)
-                
.buttonModifier(managedActionHolder.isPositionedInsideFieldSet()
+                .actionStyle(actionStyle)
+                .visualRank(managedActionHolder.isPositionedInsideFieldSet()
                         || action.isPrototype()
-                        ? ButtonModifier.LOWER_VISUAL_RANK
-                        : ButtonModifier.NONE)
-                
.menuItemModifier(MenuItemModifier.FORCE_ALIGNMENT_WITH_BLANK_ICON) // default
+                        ? VisualRank.LOWER
+                        : VisualRank.DEFAULT)
+                .labelIndent(labelIndent)
                 .prototyping(action.isPrototype()
                         ? 
Optional.of(PrototypingDecorationModel.of(managedAction))
                         : Optional.empty())
                 .describedAs(managedAction.getDescription())
                 
.disabling(DisablingDecorationModel.of(managedAction.checkUsability()))
                 
.additionalCssClass(managedActionHolder.getAdditionalCssClass())
-                
.fontAwesomeLayers(managedActionHolder.lookupFontAwesomeLayers(true));
+                
.fontAwesomeLayers(managedActionHolder.lookupFontAwesomeLayers(labelIndent))
+                .build();
         }
 
         public Identifier featureIdentifier() {
@@ -109,17 +115,17 @@ public Optional<String> disabledReason() {
         }
 
         /**
-         * @see ButtonModifier
+         * @see VisualRank
          */
         public boolean isLowerVisualRank() {
-            return buttonModifier==ButtonModifier.LOWER_VISUAL_RANK;
+            return visualRank==VisualRank.LOWER;
         }
 
         /**
-         * @see MenuItemModifier
+         * @see LabelIndent
          */
         public boolean isForceAlignmentWithBlankIcon() {
-            return 
menuItemModifier==MenuItemModifier.FORCE_ALIGNMENT_WITH_BLANK_ICON;
+            return labelIndent==LabelIndent.FORCE_ALIGNMENT_WITH_BLANK_ICON;
         }
 
         /**
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/serviceactions/CssMenuItem.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/serviceactions/CssMenuItem.java
index 7d1074ec370..57980ba84b0 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/serviceactions/CssMenuItem.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/serviceactions/CssMenuItem.java
@@ -22,7 +22,6 @@
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.model.Model;
-
 import org.jspecify.annotations.Nullable;
 
 import org.apache.causeway.commons.collections.Can;
@@ -120,9 +119,7 @@ private Component addMenuItemComponentTo(final 
MarkupContainer markupContainer)
 
             WktDecorators.decorateMenuAction(
                     actionLink, actionLink, label,
-                    ActionDecorationModel.builder(actionLinkElseFail())
-                        .actionStyle(ActionStyle.MENU_ITEM)
-                        .build());
+                    ActionDecorationModel.of(actionLinkElseFail(), 
ActionStyle.MENU_ITEM));
 
             // .. and hide label
             WktComponents.permanentlyHide(markupContainer, 
CssMenuItem.ID_MENU_LABEL);
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/serviceactions/ServiceActionUtil.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/serviceactions/ServiceActionUtil.java
index 6cb03795e76..d772acee3f5 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/serviceactions/ServiceActionUtil.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/serviceactions/ServiceActionUtil.java
@@ -53,10 +53,8 @@ void addLeafItem(
         var menuItemLabel = Wkt.labelAdd(actionLink, "menuLinkLabel", 
menuItem.getName());
 
         WktDecorators
-            .decorateMenuAction(actionLink, listItem, menuItemLabel, 
-                    ActionDecorationModel.builder(actionLink)
-                        .actionStyle(ActionStyle.MENU_ITEM)
-                        .build());
+            .decorateMenuAction(actionLink, listItem, menuItemLabel,
+                    ActionDecorationModel.of(actionLink, 
ActionStyle.MENU_ITEM));
 
         var leafItem = new Fragment("content", "leafItem", parent);
         leafItem.add(actionLink);
@@ -107,13 +105,13 @@ public void onSectionSpacer() {
             var menuSection = CssMenuItem.newSpacer();
             currentTopLevelMenu.addSubMenuItem(menuSection);
         }
-        
+
         @Override
         public void onMenuAction(MenuAction menuAction) {
             var menuItem = CssMenuItem.newMenuItemWithLink(menuAction.name(), 
newActionLink(menuAction.managedAction().orElseThrow()));
             currentTopLevelMenu.addSubMenuItem(menuItem);
         }
-        
+
         @Override
         public void onSectionLabel(final String named) {
             var menuSectionLabel = CssMenuItem.newSectionLabel(named);
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktLinks.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktLinks.java
index a9378b67479..a51e6ec00f5 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktLinks.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktLinks.java
@@ -32,7 +32,7 @@
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-
+import org.jspecify.annotations.NonNull;
 import org.jspecify.annotations.Nullable;
 
 import org.apache.causeway.applib.fa.FontAwesomeLayers;
@@ -40,7 +40,6 @@
 import 
org.apache.causeway.viewer.commons.model.decorators.ActionDecorators.ActionStyle;
 import 
org.apache.causeway.viewer.wicket.ui.components.widgets.actionlink.ActionLink;
 
-import org.jspecify.annotations.NonNull;
 import lombok.experimental.UtilityClass;
 
 @UtilityClass
@@ -65,9 +64,7 @@ public AbstractLink asActionLink(
 
         WktDecorators.decorateActionLink(
                 link, tooltipReceiver, actionLabel,
-                ActionDecorationModel.builder(link)
-                    .actionStyle(actionStyle)
-                    .build());
+                ActionDecorationModel.of(link, actionStyle));
 
         return link;
     }

Reply via email to