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;
}