|
| 1 | +(function($) { |
| 2 | + $(document).ready(function() { |
| 3 | + return window.nestedFormEvents.insertFields = function(content, assoc, link) { |
| 4 | + var tab_content; |
| 5 | + tab_content = $(link).closest(".controls").siblings(".tab-content"); |
| 6 | + tab_content.append(content); |
| 7 | + return tab_content.children().last(); |
| 8 | + }; |
| 9 | + }); |
| 10 | + |
| 11 | + $(document).on('nested:fieldAdded', 'form', function(content) { |
| 12 | + var controls, field, nav, new_tab, one_to_one, parent_group, toggler; |
| 13 | + field = content.field.addClass('tab-pane').attr('id', 'unique-id-' + (new Date().getTime())); |
| 14 | + new_tab = $('<li><a data-toggle="tab" href="#' + field.attr('id') + '">' + field.children('.object-infos').data('object-label') + '</a></li>'); |
| 15 | + parent_group = field.closest('.control-group'); |
| 16 | + controls = parent_group.children('.controls'); |
| 17 | + one_to_one = controls.data('nestedone') !== void 0; |
| 18 | + nav = controls.children('.nav'); |
| 19 | + content = parent_group.children('.tab-content'); |
| 20 | + toggler = controls.find('.toggler'); |
| 21 | + nav.append(new_tab); |
| 22 | + $(window.document).trigger('rails_admin.dom_ready', [field, parent_group]); |
| 23 | + new_tab.children('a').tab('show'); |
| 24 | + if (!one_to_one) { |
| 25 | + nav.select(':hidden').show('slow'); |
| 26 | + } |
| 27 | + content.select(':hidden').show('slow'); |
| 28 | + toggler.addClass('active').removeClass('disabled').children('i').addClass('icon-chevron-down').removeClass('icon-chevron-right'); |
| 29 | + if (one_to_one) { |
| 30 | + controls.find('.add_nested_fields').removeClass('add_nested_fields').html(field.children('.object-infos').data('object-label')); |
| 31 | + } |
| 32 | + }); |
| 33 | + |
| 34 | + $(document).on('nested:fieldRemoved', 'form', function(content) { |
| 35 | + var add_button, controls, current_li, field, nav, one_to_one, parent_group, toggler; |
| 36 | + field = content.field; |
| 37 | + nav = field.closest(".control-group").children('.controls').children('.nav'); |
| 38 | + current_li = nav.children('li').has('a[href="#' + field.attr('id') + '"]'); |
| 39 | + parent_group = field.closest(".control-group"); |
| 40 | + controls = parent_group.children('.controls'); |
| 41 | + one_to_one = controls.data('nestedone') !== void 0; |
| 42 | + toggler = controls.find('.toggler'); |
| 43 | + (current_li.next().length ? current_li.next() : current_li.prev()).children('a:first').tab('show'); |
| 44 | + current_li.remove(); |
| 45 | + if (nav.children().length === 0) { |
| 46 | + nav.select(':visible').hide('slow'); |
| 47 | + toggler.removeClass('active').addClass('disabled').children('i').removeClass('icon-chevron-down').addClass('icon-chevron-right'); |
| 48 | + } |
| 49 | + if (one_to_one) { |
| 50 | + add_button = toggler.next(); |
| 51 | + add_button.addClass('add_nested_fields').html(add_button.data('add-label')); |
| 52 | + } |
| 53 | + field.find('[required]').each(function() { |
| 54 | + $(this).removeAttr('required'); |
| 55 | + }); |
| 56 | + }); |
| 57 | +}(jQuery)); |
0 commit comments