This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch v4 in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 51fc13ea0b7e00ca50c67b4f183c9eb76e117683 Author: Andi Huber <[email protected]> AuthorDate: Thu Sep 18 09:59:04 2025 +0200 CAUSEWAY-3889: fine-grained imageIcon CSS control --- .../object/icontitle/ObjectIconAndTitlePanel.html | 2 +- .../object/icontitle/ObjectIconAndTitlePanel.java | 23 +++++++++++++++------- .../bootstrap/css/bootstrap-overrides-all-v2.css | 15 +++++++++----- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.html b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.html index 7b2d989a8de..63fb3a1d88e 100644 --- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.html +++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.html @@ -23,7 +23,7 @@ <span wicket:id="objectLinkWrapper" class="objectIconAndTitlePanel objectIconAndTitleComponentType"> <a href="#" wicket:id="objectLink" class="objectUrlSource"> <span wicket:id="objectIconFaLeft"></span> - <img wicket:id="objectImage" class="objectImage"/> + <img wicket:id="objectIcon"/> <span wicket:id="objectTitle" class="objectTitle">[title]</span> <span wicket:id="objectIconFaRight"></span> </a> diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.java index 0fd4cd24784..2858a7a1a77 100644 --- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.java +++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.java @@ -46,6 +46,8 @@ import lombok.Builder; +import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.CssClassNameModifier; + /** * {@link PanelAbstract Panel} representing the icon and title of an entity, * as per the provided {@link UiObjectWkt}. @@ -60,7 +62,7 @@ class ObjectIconAndTitlePanel private static final String ID_OBJECT_FONT_AWESOME_RIGHT = "objectIconFaRight"; private static final String ID_OBJECT_LINK = "objectLink"; private static final String ID_OBJECT_TITLE = "objectTitle"; - private static final String ID_OBJECT_ICON = "objectImage"; + private static final String ID_OBJECT_ICON = "objectIcon"; private IconWhere iconWhere; @@ -124,15 +126,16 @@ private AbstractLink createLinkWithIconAndTitle(IconWhere iconWhere) { iconWhere, iconUrlBased->{ Wkt.imageAddCachable(link, ID_OBJECT_ICON, - getImageResourceCache().resourceReferenceForObjectIcon(iconUrlBased)); + getImageResourceCache().resourceReferenceForObjectIcon(iconUrlBased)) + .add(cssClassNameModifier("objectIcon", iconWhere)); WktComponents.permanentlyHide(link, ID_OBJECT_FONT_AWESOME_LEFT); WktComponents.permanentlyHide(link, ID_OBJECT_FONT_AWESOME_RIGHT); }, iconEmbedded->{ - // for embedded images we replace the default CSS class 'objectImage' w/ 'objectImageEmbedded' + // for embedded images we use CSS class 'objectIconEmbedded' (instead of 'objectIcon') // which allows to render them differently e.g. don't constrain image sizes, as these should be driven by embedded data - var img = Wkt.imageAddEmbedded(link, ID_OBJECT_ICON, iconEmbedded.dataUri()); - Wkt.attributeReplace(img, "class", "objectImageEmbedded"); + Wkt.imageAddEmbedded(link, ID_OBJECT_ICON, iconEmbedded.dataUri()) + .add(cssClassNameModifier("objectIconEmbedded", iconWhere)); WktComponents.permanentlyHide(link, ID_OBJECT_FONT_AWESOME_LEFT); WktComponents.permanentlyHide(link, ID_OBJECT_FONT_AWESOME_RIGHT); }, @@ -140,11 +143,13 @@ private AbstractLink createLinkWithIconAndTitle(IconWhere iconWhere) { var faLayers = iconFa.fontAwesomeLayers(); WktComponents.permanentlyHide(link, ID_OBJECT_ICON); if(CssClassFaPosition.isLeftOrUnspecified(faLayers.position())) { - Wkt.faIconLayersAdd(link, ID_OBJECT_FONT_AWESOME_LEFT, faLayers); + Wkt.faIconLayersAdd(link, ID_OBJECT_FONT_AWESOME_LEFT, faLayers) + .add(cssClassNameModifier("objectIconFa", iconWhere)); WktComponents.permanentlyHide(link, ID_OBJECT_FONT_AWESOME_RIGHT); } else { WktComponents.permanentlyHide(link, ID_OBJECT_FONT_AWESOME_LEFT); - Wkt.faIconLayersAdd(link, ID_OBJECT_FONT_AWESOME_RIGHT, faLayers); + Wkt.faIconLayersAdd(link, ID_OBJECT_FONT_AWESOME_RIGHT, faLayers) + .add(cssClassNameModifier("objectIconFa", iconWhere)); } }); @@ -166,6 +171,10 @@ private AbstractLink createLinkWithIconAndTitle(IconWhere iconWhere) { return link; } + private CssClassNameModifier cssClassNameModifier(String primaryCssClass, IconWhere iconWhere) { + return new CssClassNameModifier(primaryCssClass, primaryCssClass + "-" + iconWhere.name().toLowerCase()); + } + private boolean isTitleSuppressed() { return getModel().isInlinePrompt() //XXX CAUSEWAY-1699 never hide titles of object references in tables diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/bootstrap/css/bootstrap-overrides-all-v2.css b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/bootstrap/css/bootstrap-overrides-all-v2.css index 69261621df0..fff69797f23 100644 --- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/bootstrap/css/bootstrap-overrides-all-v2.css +++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/bootstrap/css/bootstrap-overrides-all-v2.css @@ -171,19 +171,24 @@ footer > .navbar { margin: 0; } -/* from ActionPromptHeaderPanel */ +/* from ObjectIconAndTitlePanel */ -.objectIconAndTitlePanel img.objectIcon { - width: 24px; - height: 24px; +.objectIconAndTitlePanel img.objectIcon-object_header { + max-width: 2rem; + max-height: 2rem; +} +.objectIconAndTitlePanel img.objectIcon-table_row { + max-width: 1.5rem; + max-height: 1.5rem; } +/* from ActionPromptHeaderPanel */ + .objectIconAndTitlePanel span.actionName { font-size: 20px; font-weight: bolder; } - /* from SimpleClipboardPanel */ .simpleClipboardPanel form {
