From c4ed952d234ce35ea6d3cd21e97c3ec1be47909e Mon Sep 17 00:00:00 2001 From: Melloware Date: Mon, 4 Mar 2024 15:07:59 -0500 Subject: [PATCH] Fix #11540: Picklist trigger input changes on transfer (#11543) * Fix #11540: Picklist trigger input changes on transfer * Update primefaces/src/main/resources/META-INF/resources/primefaces/picklist/picklist.js * Fix #11540: Picklist trigger input changes on transfer * Fix #11540: Picklist trigger input changes on transfer --------- Co-authored-by: Jasper de Vries --- docs/14_0_0/components/picklist.md | 6 ++++++ docs/migrationguide/14_0_0.md | 1 + .../org/primefaces/component/picklist/PickList.java | 5 +++++ .../resources/primefaces/picklist/picklist.js | 13 +++++++++++++ 4 files changed, 25 insertions(+) diff --git a/docs/14_0_0/components/picklist.md b/docs/14_0_0/components/picklist.md index 465068c18b..0a66b355f2 100644 --- a/docs/14_0_0/components/picklist.md +++ b/docs/14_0_0/components/picklist.md @@ -187,6 +187,11 @@ to _onTransfer_ attribute. ## Ajax Behavior Events +The following AJAX behavior events are available for this component. If no event is specified the default event is called. + +**Default Event:** `transfer` +**Available Events:** `reorder, select, transfer, unselect` + | Event | Listener Parameter | Fired | | --- | --- | --- | select | org.primefaces.event.SelectEvent | When an item selected. @@ -194,6 +199,7 @@ unselect | org.primefaces.event.UnselectEvent | When an item unselected. reorder | javax.faces.event.AjaxBehaviorEvent | When list is reordered. transfer | org.primefaces.event.TransferEvent | When an item is moved to another list. + ```xhtml diff --git a/docs/migrationguide/14_0_0.md b/docs/migrationguide/14_0_0.md index 1b3f5d39a2..c2dffb6ba2 100644 --- a/docs/migrationguide/14_0_0.md +++ b/docs/migrationguide/14_0_0.md @@ -89,6 +89,7 @@ Few selection attributes have been renamed for consistency purposes: ## PickList * `addLabel, addAllLabel, removeLabel, removeAllLabel, moveUpLabel, moveTopLabel, moveDownLabel, moveBottomLabel` properties have been moved to client side locale + * `transfer` and `reorder` events now fire `change` events on the source and target inputs to make it consistent with other inputs ## SelectOneRadio diff --git a/primefaces/src/main/java/org/primefaces/component/picklist/PickList.java b/primefaces/src/main/java/org/primefaces/component/picklist/PickList.java index fc3b2080d5..c11b26b9d1 100644 --- a/primefaces/src/main/java/org/primefaces/component/picklist/PickList.java +++ b/primefaces/src/main/java/org/primefaces/component/picklist/PickList.java @@ -104,6 +104,11 @@ public Collection getEventNames() { return EVENT_NAMES; } + @Override + public String getDefaultEventName() { + return "transfer"; + } + @Override protected void validateValue(FacesContext facesContext, Object newValue) { super.validateValue(facesContext, newValue); diff --git a/primefaces/src/main/resources/META-INF/resources/primefaces/picklist/picklist.js b/primefaces/src/main/resources/META-INF/resources/primefaces/picklist/picklist.js index a652a34b83..a772fb1aed 100644 --- a/primefaces/src/main/resources/META-INF/resources/primefaces/picklist/picklist.js +++ b/primefaces/src/main/resources/META-INF/resources/primefaces/picklist/picklist.js @@ -1163,6 +1163,8 @@ PrimeFaces.widget.PickList = PrimeFaces.widget.BaseWidget.extend({ $($this.jqId + ' ul').sortable('enable'); $this.updateButtonsState(); } + + this.fireInputChanged(); }, /** @@ -1224,6 +1226,17 @@ PrimeFaces.widget.PickList = PrimeFaces.widget.BaseWidget.extend({ */ fireReorderEvent: function() { this.callBehavior('reorder'); + this.fireInputChanged(); + }, + + /** + * Triggers change events on the input fields. + * @private + */ + fireInputChanged: function() { + // #11540: trigger change events on inputs for form handling + this.targetInput.trigger("change"); + this.sourceInput.trigger("change"); }, /**