1$(document).on('gform_post_render', function() { 2 var $form_wrappers = $(this).find('.gform_wrapper'); 3 4 var gDate = $form_wrappers.find('.ginput_container_date'); 5 $.each(gDate, function() { 6 if ($(this).find('.datepicker').hasClass('datepicker_with_icon')) { 7 $(this).closest('.gfield').addClass('gfield_is_date_with_icon'); 8 } 9 }); 10 11 var gFile = $form_wrappers.find('.ginput_container_fileupload'); 12 13 gFile.each(function() { 14 $(this).closest('.gfield').addClass('gfield_is_fileupload'); 15 16 // Filename text on upload 17 if ( ! $(this).siblings('.ginput_container_fileupload_filename').length ) { 18 $(this).parent('.gfield').append('<div class="ginput_container_fileupload_filename">No file chosen</div>'); 19 } 20 21 $(this).find('input[type="file"]').on('change', function() { 22 if ($(this).val().length) { 23 $(this).parent('.ginput_container_fileupload').next('.ginput_container_fileupload_filename').text($(this).val().split('\\').pop()); 24 } 25 else { 26 $(this).parent('.ginput_container_fileupload').next('.ginput_container_fileupload_filename').text('No File chosen'); 27 } 28 }); 29 30 // Focus/Blur class for hidden input 31 $(this).find('input[type="file"]').focus(function() { 32 $(this).closest('.ginput_container_fileupload').addClass('focus'); 33 }); 34 $(this).find('input[type="file"]').blur(function() { 35 $(this).closest('.ginput_container_fileupload').removeClass('focus'); 36 }); 37 }); 38 39 //Move labels next to their input 40 var gLabels = $form_wrappers.find('.gfield_label'); 41 $.each(gLabels, function() { 42 var gLabelFor = $(this).attr('for'); 43 if (gLabelFor) { 44 var gLabelForInput = $('#'+gLabelFor); 45 if (!gLabelForInput.is('[type="file"]')) { 46 $(this).detach().insertBefore(gLabelForInput); 47 } 48 } 49 }); 50 51 var gInputsLg = $form_wrappers.find('.large'); 52 $.each(gInputsLg, function() { 53 $(this).closest('.gfield').addClass('form-group-lg'); 54 }); 55 56 var gInputsSm = $form_wrappers.find('.small'); 57 $.each(gInputsSm, function() { 58 $(this).closest('.gfield').addClass('form-group-sm'); 59 }); 60 61 // Elements with collapsed labels 62 var gLabelsCollapsed = [ 63 $form_wrappers.find('.ginput_container_select'), 64 ]; 65 $.each(gLabelsCollapsed, function() { 66 var gSelect = $(this).find('select'); 67 68 if (gSelect.find('option:selected').text().length !== 0) { 69 gSelect.parents('.gfield').addClass('gfield_has_val'); 70 } 71 72 $(this).on('focusin', function(event) { 73 $(event.target).parents('.ginput_container').addClass('gfield_active'); 74 }).on('focusout', function(event) { 75 $(event.target).parents('.ginput_container').removeClass('gfield_active'); 76 if ( $(event.target).val().length) { 77 $(event.target).parents('.ginput_container').addClass('gfield_has_val'); 78 } else { 79 $(event.target).parents('.ginput_container').removeClass('gfield_has_val'); 80 } 81 }); 82 }); 83 84 // Elements with no labels (or labels placed outside of input) 85 var gLabelsLegend = [ 86 $form_wrappers.find('.ginput_container_address'), 87 $form_wrappers.find('.ginput_container_checkbox'), 88 $form_wrappers.find('.ginput_container_list'), 89 $form_wrappers.find('.ginput_container_name'), 90 $form_wrappers.find('.ginput_container_radio'), 91 $form_wrappers.find('.ginput_container_time') 92 ]; 93 $.each(gLabelsLegend, function() { 94 $(this).addClass('gfield_label_legend'); 95 }); 96 97 // Elements with no labels (or labels placed outside of input) 98 var gLabelsNone = [ 99 $form_wrappers.find('.gfield_list_container'), 100 $form_wrappers.find('.ginput_container_multiselect'), 101 $form_wrappers.find('.ginput_container_textarea'), 102 $form_wrappers.find('.ginput_container_time') 103 ]; 104 $.each(gLabelsNone, function() { 105 $(this).parents('.gfield').addClass('gfield_label_none'); 106 }); 107 108 var gTextarea = $form_wrappers.find('.ginput_container_textarea'); 109 $.each(gTextarea, function() { 110 $(this).closest('.gfield').addClass('gfield_is_textarea'); 111 }); 112 113 var gSelectMulti = $form_wrappers.find('.ginput_container_multiselect'); 114 $.each(gSelectMulti, function() { 115 $(this).closest('.gfield').addClass('gfield_is_multiselect'); 116 }); 117 118 var gfield_complex = $form_wrappers.find('.ginput_complex'); 119 $.each(gfield_complex, function() { 120 $(this).closest('.gfield').addClass('gfield_is_complex'); 121 }); 122
123 var gfield_checkbox = $form_wrappers.find('.ginput_container_checkbox'); 124 $.each(gfield_checkbox, function() { 125 $(this).closest('.gfield').addClass('gfield_is_checkbox'); 126 }); 127 128 var gfield_radio = $form_wrappers.find('.ginput_container_radio'); 129 $.each(gfield_radio, function() { 130 $(this).closest('.gfield').addClass('gfield_is_radio'); 131 }); 132 133 $('.ginput_container_textarea, .clear-multi, .ginput_container_multiselect, .ginput_complex').parents('.gfield').addClass('full-width'); 134}); 135 136$(document).on('gform_post_render', function(){ 137 if ( $('.ginput_container_fileupload_filename').length && $('.ginput_preview').length ) { 138 $('.ginput_container_fileupload_filename').html($('.ginput_preview').parent('div')); 139 } 140}); 141 142// reCaptcha accessibility fixes 143var fixReCaptcha = function(){ 144 document.querySelectorAll('.ginput_recaptcha iframe').forEach(function(iframe){ 145 iframe.setAttribute('title', 'ReCaptcha frame'); 146 }); 147 document.querySelectorAll('.g-recaptcha-response').forEach(function(input){ 148 input.setAttribute('aria-label', 'ReCaptcha Response'); 149 }); 150} 151fixReCaptcha(); 152var observer = new MutationObserver(function(mutations){ 153 mutations.forEach(function(mutation){ 154 if (!mutation.addedNodes) return; 155 for (var i = 0; i < mutation.addedNodes.length; i++) { 156 var node = mutation.addedNodes[i]; 157 var parent = node.parentElement; 158 159 if(!node || !node.tagName){ 160 return; 161 } 162 163 if(node.tagName.toLowerCase() === 'iframe' && parent && parent.classList.contains('ginput_recaptcha')){ 164 fixReCaptcha(); 165 observer.disconnect(); 166 } 167 } 168 }); 169}); 170observer.observe(document.body, { 171 childList: true, 172 subtree: true, 173 attributes: false, 174 characterData: false, 175});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.