(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 += ''; } // 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);