(function($){
if(typeof acf === 'undefined')
return;
acf.addAction('new_field/type=flexible_content', function(flexible){
var $clones = flexible.$clones();
var $layouts = flexible.$layouts();
if($clones.length < 1)
return;
// ACFE: Modal Prepare
if(flexible.$el.attr('data-acfe-flexible-modal')){
flexible.acfe_flexible_modal = function(e, $el){
// validate
if(!this.validateAdd())
return false;
// within layout
var $layout = null;
if($el.hasClass('acf-icon')){
$layout = $el.closest('.layout');
$layout.addClass('-hover');
}
// Create modal
var flexible_layouts_html = flexible.getPopupHTML();
// ACFE: Modal Categories
var categories = [];
$(flexible_layouts_html).find('li a span').each(function(){
if(!$(this).data('acfe-flexible-category'))
return true;
var category = $(this).data('acfe-flexible-category');
if(categories.indexOf(category) != -1)
return true;
categories.push(category);
});
categories.sort();
var categories_html = '';
if(categories.length){
categories_html += '
';
categories_html += '';
$(categories).each(function(k, category){
categories_html += '' + category + '';
});
categories_html += '
';
}
// ACFE: Modal Title
var $modal_title = 'Add Row';
if(flexible.$el.attr('data-acfe-flexible-modal-title')){
$modal_title = flexible.$el.attr('data-acfe-flexible-modal-title');
}
// Create modal
var $modal_content = $('' +
'' +
categories_html +
'
' +
flexible.getPopupHTML() +
'
' +
'
'
).appendTo('body');
// Open modal
var $modal = acfe.modal.open($modal_content, {
title: $modal_title,
size: 'full',
destroy: true
});
// Columns
if(flexible.$el.attr('data-acfe-flexible-modal-col')){
$modal.find('.acfe-modal-content .acfe-flex-container').addClass('acfe-col-' + flexible.$el.attr('data-acfe-flexible-modal-col'));
}
// ACF autofocus fix
$modal.find('li:first-of-type a').blur();
// Click: Categories
$modal.find('.acfe-flexible-categories a').click(function(e){
e.preventDefault();
var $link = $(this);
$link.closest('.acfe-flexible-categories').find('a').removeClass('nav-tab-active');
$link.addClass('nav-tab-active');
var selected_category = $link.data('acfe-flexible-category');
$modal.find('a[data-layout] span').each(function(){
var $span = $(this);
var current_category = $span.data('acfe-flexible-category');
$span.closest('li').show();
if(selected_category != 'acfe-all' && current_category != selected_category){
$span.closest('li').hide();
}
});
});
// Click: Layout
$modal.find('a[data-layout]').click(function(e){
e.preventDefault();
// Add layout
flexible.add({
layout: $(this).data('layout'),
before: $layout
});
// Close modal
acfe.modal.close(true);
});
}
// Remove native ACF Tooltip action
flexible.removeEvents({'click [data-name="add-layout"]': 'onClickAdd'});
// Add ACF Extended Modal action
flexible.addEvents({'click [data-name="add-layout"]': 'acfe_flexible_modal'});
}
});
})(jQuery);