| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | <!DOCTYPE html><html><head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>The source code</title>  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>  <style type="text/css">    .highlight { display: block; background-color: #ddd; }  </style>  <script type="text/javascript">    function highlight() {      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";    }  </script></head><body onload="prettyPrint(); highlight();">  <pre class="prettyprint lang-js"><span id='Ext-ux-FieldReplicator'>/**</span> * @class Ext.ux.FieldReplicator * <p>A plugin for Field Components which creates clones of the Field for as * long as the user keeps filling them. Leaving the final one blank ends the repeating series.</p> * <p>Usage:</p> * <pre><code>    {        xtype: 'combo',        plugins: [ Ext.ux.FieldReplicator ],        triggerAction: 'all',        fieldLabel: 'Select recipient',        store: recipientStore    } * </code></pre> */Ext.define('Ext.ux.FieldReplicator', {    singleton: true,    init: function(field) {        // Assign the field an id grouping it with fields cloned from it. If it already        // has an id that means it is itself a clone.        if (!field.replicatorId) {            field.replicatorId = Ext.id();        }        field.on('blur', this.onBlur, this);    },    onBlur: function(field) {        var ownerCt = field.ownerCt,            replicatorId = field.replicatorId,            isEmpty = Ext.isEmpty(field.getRawValue()),            siblings = ownerCt.query('[replicatorId=' + replicatorId + ']'),            isLastInGroup = siblings[siblings.length - 1] === field,            clone, idx;        // If a field before the final one was blanked out, remove it        if (isEmpty && !isLastInGroup) {            Ext.Function.defer(field.destroy, 10, field); //delay to allow tab key to move focus first        }        // If the field is the last in the list and has a value, add a cloned field after it        else if(!isEmpty && isLastInGroup) {            if (field.onReplicate) {                field.onReplicate();            }            clone = field.cloneConfig({replicatorId: replicatorId});            idx = ownerCt.items.indexOf(field);            ownerCt.add(idx + 1, clone);        }    }});</pre></body></html>
 |