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>
|