This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 3_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/3_0_X by this push:
new d36d135fb3 [SYNCOPE-1841] Hiding buttons when panel is readonly
d36d135fb3 is described below
commit d36d135fb3f86b90d22b283fc271ca41b656aa86
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Thu Apr 17 14:11:32 2025 +0200
[SYNCOPE-1841] Hiding buttons when panel is readonly
---
.../markup/html/form/AbstractMultiPanel.java | 88 ++++++++++++----------
.../wicket/markup/html/form/MultiFieldPanel.html | 10 ++-
.../enduser/markup/html/form/MultiFieldPanel.html | 10 ++-
3 files changed, 64 insertions(+), 44 deletions(-)
diff --git
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AbstractMultiPanel.java
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AbstractMultiPanel.java
index 1e317eeea4..e403729c26 100644
---
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AbstractMultiPanel.java
+++
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AbstractMultiPanel.java
@@ -66,32 +66,65 @@ public abstract class AbstractMultiPanel<INNER> extends
AbstractFieldPanel<List<
view = new InnerView("view", name, model);
if (CollectionUtils.isEmpty(model.getObject())) {
- form.addOrReplace(getNoDataFragment(model, name));
+ form.addOrReplace(getNoDataFragment(name));
} else {
form.addOrReplace(getDataFragment());
}
}
- // SYNCOPE-1476
public AbstractMultiPanel<INNER> setFormAsMultipart(final boolean
multipart) {
form.setMultiPart(multipart);
return this;
}
- private Fragment getNoDataFragment(final IModel<List<INNER>> model, final
String label) {
+ private Fragment getNoDataFragment(final String label) {
Fragment fragment = new Fragment("content", "noDataFragment",
AbstractMultiPanel.this);
fragment.add(new Label("field-label", new ResourceModel(label,
label)));
- fragment.add(getPlusFragment(model));
+ fragment.add(getFragmentPlus());
return fragment;
}
private Fragment getDataFragment() {
- Fragment contentFragment = new Fragment("content", "dataFragment",
AbstractMultiPanel.this);
- contentFragment.add(view.setOutputMarkupId(true));
- return contentFragment;
+ Fragment fragment = new Fragment("content", "dataFragment",
AbstractMultiPanel.this);
+ fragment.add(view.setOutputMarkupId(true));
+ return fragment;
}
- private Fragment getPlusFragment(final IModel<List<INNER>> model) {
+ private Fragment getFragmentMinus(final ListItem<INNER> item, final Panel
panel, final String label) {
+ IndicatorAjaxSubmitLink minus = new IndicatorAjaxSubmitLink("drop") {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ protected void onSubmit(final AjaxRequestTarget target) {
+ // drop the current component
+ view.getModel().getObject().remove(item.getModelObject());
+ clearInput(panel);
+
+ if (view.getModel().getObject().isEmpty()) {
+ form.addOrReplace(getNoDataFragment(label));
+ }
+
+ target.add(container);
+ }
+
+ @Override
+ protected void onError(final AjaxRequestTarget target) {
+ onSubmit(target);
+ }
+ };
+
+ Fragment fragment = new Fragment("panelMinus", "fragmentMinus",
AbstractMultiPanel.this);
+ fragment.addOrReplace(minus);
+ fragment.setRenderBodyOnly(true);
+
+ fragment.setOutputMarkupPlaceholderTag(true);
+ fragment.setVisible(container.isEnabled() && form.isEnabled());
+
+ return fragment;
+ }
+
+ private Fragment getFragmentPlus() {
IndicatorAjaxSubmitLink plus = new IndicatorAjaxSubmitLink("add") {
private static final long serialVersionUID = -7978723352517770644L;
@@ -99,9 +132,9 @@ public abstract class AbstractMultiPanel<INNER> extends
AbstractFieldPanel<List<
@Override
protected void onSubmit(final AjaxRequestTarget target) {
//Add current component
- model.getObject().add(newModelObject());
+ view.getModel().getObject().add(newModelObject());
- if (model.getObject().size() == 1) {
+ if (view.getModel().getObject().size() == 1) {
form.addOrReplace(getDataFragment());
}
@@ -121,6 +154,9 @@ public abstract class AbstractMultiPanel<INNER> extends
AbstractFieldPanel<List<
fragment.addOrReplace(plus);
fragment.setRenderBodyOnly(true);
+ fragment.setOutputMarkupPlaceholderTag(true);
+ fragment.setVisible(container.isEnabled() && form.isEnabled());
+
return fragment;
}
@@ -158,36 +194,12 @@ public abstract class AbstractMultiPanel<INNER> extends
AbstractFieldPanel<List<
item.add(panel.setRenderBodyOnly(true));
- IndicatorAjaxSubmitLink minus = new
IndicatorAjaxSubmitLink("drop") {
-
- private static final long serialVersionUID =
-7978723352517770644L;
+ item.add(getFragmentMinus(item, panel, label));
- @Override
- protected void onSubmit(final AjaxRequestTarget target) {
- //Drop current component
- model.getObject().remove(item.getModelObject());
- clearInput(panel);
-
- if (model.getObject().isEmpty()) {
- form.addOrReplace(getNoDataFragment(model, label));
- }
-
- target.add(container);
- }
-
- @Override
- protected void onError(final AjaxRequestTarget target) {
- onSubmit(target);
- }
- };
-
- item.add(minus);
-
- Fragment fragment = item.getIndex() == model.getObject().size() - 1
- ? getPlusFragment(model)
+ Fragment plus = item.getIndex() == model.getObject().size() - 1
+ ? getFragmentPlus()
: new Fragment("panelPlus", "emptyFragment",
AbstractMultiPanel.this);
-
- item.add(fragment.setRenderBodyOnly(true));
+ item.add(plus.setRenderBodyOnly(true));
}
}
diff --git
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.html
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.html
index 5463ef7931..113f278e15 100644
---
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.html
+++
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.html
@@ -42,14 +42,18 @@ under the License.
<span wicket:id="view">
<div class="input-group">
<span wicket:id="panel">[form field]</span>
- <div class="input-group-addon">
- <a wicket:id="drop"><i class="fa fa-minus"></i></a>
- </div>
+ <span wicket:id="panelMinus">[minus]</span>
<span wicket:id="panelPlus">[plus]</span>
</div>
</span>
</wicket:fragment>
+ <wicket:fragment wicket:id="fragmentMinus">
+ <div class="input-group-addon">
+ <a wicket:id="drop"><i class="fa fa-minus"></i></a>
+ </div>
+ </wicket:fragment>
+
<wicket:fragment wicket:id="fragmentPlus">
<div class="input-group-addon">
<a wicket:id="add"><i class="fa fa-plus"></i></a>
diff --git
a/client/idrepo/enduser/src/main/resources/org/apache/syncope/client/enduser/markup/html/form/MultiFieldPanel.html
b/client/idrepo/enduser/src/main/resources/org/apache/syncope/client/enduser/markup/html/form/MultiFieldPanel.html
index 1f645f29bc..f3066da52c 100644
---
a/client/idrepo/enduser/src/main/resources/org/apache/syncope/client/enduser/markup/html/form/MultiFieldPanel.html
+++
b/client/idrepo/enduser/src/main/resources/org/apache/syncope/client/enduser/markup/html/form/MultiFieldPanel.html
@@ -47,14 +47,18 @@ under the License.
<span wicket:id="view">
<div class="input-group">
<span wicket:id="panel">[form field]</span>
- <div class="input-group-addon">
- <a wicket:id="drop"><i class="fa fa-minus"></i></a>
- </div>
+ <span wicket:id="panelMinus">[minus]</span>
<span wicket:id="panelPlus">[plus]</span>
</div>
</span>
</wicket:fragment>
+ <wicket:fragment wicket:id="fragmentMinus">
+ <div class="input-group-addon me-1 ms-2">
+ <a wicket:id="drop"><i class="fa fa-minus"></i></a>
+ </div>
+ </wicket:fragment>
+
<wicket:fragment wicket:id="fragmentPlus">
<div class="input-group-addon">
<a wicket:id="add"><i class="fa fa-plus"></i></a>