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 6c076f5696..8316574b62 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 @@ -1168,6 +1168,8 @@ PrimeFaces.widget.PickList = PrimeFaces.widget.BaseWidget.extend({ $($this.jqId + ' ul').sortable('enable'); $this.updateButtonsState(); } + + this.fireInputChanged(); }, /** @@ -1229,6 +1231,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"); }, /**