Draggable adds dragdrop capability to a component.
<style>
.ui-panel {
margin: 15px;
width: 300px;
}
</style>
<div class="card">
<p:panel id="pnl" header="Draggable Panel">
<h:outputText value="A regular p:panel."/>
</p:panel>
<p:draggable for="pnl"/>
<p:panel id="handlepnl" header="Handle">
<h:outputText value="Can only be dragged with my header."/>
</p:panel>
<p:draggable for="handlepnl" handle=".ui-panel-titlebar"/>
<p:panel id="hpnl" header="Horizontal Only">
<h:outputText value="Can only be dragged horizontally."/>
</p:panel>
<p:draggable for="hpnl" axis="x"/>
<p:panel id="vpnl" header="Vertical Only">
<h:outputText value="Can only be dragged vertically"/>
</p:panel>
<p:draggable for="vpnl" axis="y"/>
<p:panel id="rpnl" header="Revert">
<h:outputText value="Will be reverted back to my original position"/>
</p:panel>
<p:draggable for="rpnl" revert="true"/>
<p:panel id="opnl" header="Opacity">
<h:outputText value="Opacity is lower when I'm being dragged"/>
</p:panel>
<p:draggable for="opnl" opacity="0.3"/>
<p:panel id="gpnl" header="Grid">
<h:outputText value="Dragged in grid mode"/>
</p:panel>
<p:draggable for="gpnl" grid="20,40"/>
<p:outputPanel id="restrictPanel" layout="block"
style="width:400px;height:200px;border:1px solid var(--surface-d);margin-bottom:20px">
<p:panel id="conpnl" header="Restricted">
<h:outputText value="Restricted to my parent's boundaries"/>
</p:panel>
</p:outputPanel>
<p:draggable for="conpnl" containment="parent"/>
<p:graphicImage id="pic" name="demo/images/nature/nature10.jpg"/>
<p:draggable for="pic"/>
</div>