Skip to content

Commit 063170f

Browse files
committed
JS events (support 3rd party fields)
1 parent a1b0f52 commit 063170f

File tree

3 files changed

+84
-16
lines changed

3 files changed

+84
-16
lines changed

js/admin/repeater-duplicate.js

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@
151151
repeater:function( $src, $dest ) {
152152
var srcField = acf.getField($src),
153153
destField = acf.getField($dest);
154+
154155
srcField.$rows().each(function(i,row){
155156
$new_row = destField.add();
156157
copy_values( $(row), $new_row, '> .acf-field, > .acf-fields > .acf-field' );
@@ -223,21 +224,38 @@
223224
* @param $dest jQuery object holding the .acf-field object to copy to
224225
*/
225226
function copy_value( $src, $dest ) {
226-
var $srcInput, $destInput, type;
227+
var type,
228+
copyEvent,
229+
doneEvent;
227230

228231
type = $src.attr('data-type');
229232

233+
copyEvent = $.Event( 'acf_duplicate:' + type );
234+
copyEvent.destination = $dest;
235+
236+
$src.trigger( copyEvent );
237+
238+
// allow canceling
239+
if ( copyEvent.isDefaultPrevented() ) {
240+
return;
241+
}
242+
230243
if ( ! copy_value_cb[ type ] ) {
231-
// tet, range, url, number,
232-
return copy_value_cb._default( $src, $dest, type );
244+
// Defalt behaviour for text, range, url, number,
245+
copy_value_cb._default( $src, $dest, type );
246+
} else {
247+
copy_value_cb[type]( $src, $dest );
233248
}
234249

235-
return copy_value_cb[type]( $src, $dest );
250+
doneEvent = $.Event( 'acf_duplicated:' + type );
251+
doneEvent.destination = $dest;
252+
253+
$src.trigger( doneEvent );
236254
}
237255

238256
/**
239257
* Copy values from one set of acf-fields to another.
240-
* It is assumed that both $src adn $dest have an identical
258+
* It is assumed that both $src and $dest have identical fields
241259
*
242260
* @param $src jQuery object containing the .acf-field objects to copy from
243261
* @param $dest jQuery object containing the .acf-field object to copy to
@@ -305,8 +323,8 @@
305323
_duplicate: function( e ) {
306324
var layout,
307325
$field,
308-
$layout,
309-
$new_layout;
326+
$layout, // original field
327+
$new_layout; // cloned field
310328

311329
// get layout wrapper
312330
$layout = $(e.target).closest('.layout');
@@ -375,4 +393,20 @@
375393
});
376394

377395

396+
})(jQuery);
397+
398+
399+
// tests!
400+
(function($){
401+
$(document).on('acf_duplicate:table',function(e){
402+
var $src = $(e.target),
403+
$dest = e.destination;
404+
405+
$dest.find('.acf-table-table').html($src.find('.acf-table-table').html());
406+
$dest.find('select').val( $src.find('select').val() ).trigger('change');
407+
$dest.trigger('change');
408+
// trigger change
409+
410+
e.preventDefault();
411+
});
378412
})(jQuery)

0 commit comments

Comments
 (0)