| 1 |
(function($) { |
| 2 |
"use strict"; |
| 3 |
jQuery(document).ready(function($){ |
| 4 |
get_repeater_data_name(); |
| 5 |
var names_upload = []; |
| 6 |
jQuery(document).on("gform_page_loaded", function (e, form_id) { |
| 7 |
//jQuery(".gform-datepicker").datepicker('destroy'); |
| 8 |
get_repeater_data_name(); |
| 9 |
}); |
| 10 |
jQuery(document).on('gform_post_render', function(event, form_id, current_page){ |
| 11 |
//jQuery(".gform-datepicker").datepicker('destroy'); |
| 12 |
get_repeater_data_name(); |
| 13 |
}); |
| 14 |
var repeater_fields_htmls ={}; |
| 15 |
gform.addFilter( 'gform_file_upload_status_markup', function( statusMarkup, file, size, setrings, removeFileJs, up ) { |
| 16 |
var id = up.settings.container.id; |
| 17 |
var input = $('input[name="'+id+'"]'); |
| 18 |
var old_name = input.val(); |
| 19 |
var new_upload = file.name; |
| 20 |
if(old_name == ""){ |
| 21 |
input.val(new_upload); |
| 22 |
}else{ |
| 23 |
input.val(old_name+","+new_upload); |
| 24 |
} |
| 25 |
return statusMarkup; |
| 26 |
} ); |
| 27 |
gform.addFilter( 'gform_file_upload_markup', function( html, file, up, strings, imagesUrl, response ) { |
| 28 |
|
| 29 |
return html.replace("onclick", "data-onclick");; |
| 30 |
} ); |
| 31 |
$("body").on("click",".gform_delete_file",function(e){ |
| 32 |
e.preventDefault(); |
| 33 |
var str =$(this).data("onclick"); |
| 34 |
const regex = /\((.*?)\)/gm; |
| 35 |
var m=""; |
| 36 |
var a=""; |
| 37 |
while ((m = regex.exec(str)) !== null) { |
| 38 |
// This is necessary to avoid infinite loops with zero-width matches |
| 39 |
if (m.index === regex.lastIndex) { |
| 40 |
regex.lastIndex++; |
| 41 |
} |
| 42 |
a =m[1].split(',');; |
| 43 |
} |
| 44 |
gformDeleteUploadedFileRepeater(a[0],a[1],$(this)); |
| 45 |
return; |
| 46 |
}) |
| 47 |
function gformDeleteUploadedFileRepeater(formId, fieldId, deleteButton){ |
| 48 |
|
| 49 |
if(deleteButton.closest(".repeater-field-warp-item-data").length > 0) { |
| 50 |
var rand_id = deleteButton.closest(".container-repeater-field").data("id"); |
| 51 |
var fileIndex = jQuery(deleteButton).parent().index(); |
| 52 |
var parent = jQuery("#field_" + formId + "_" + fieldId); |
| 53 |
|
| 54 |
parent.find('input[type="file"],.validation_message,#extensions_message_' + formId + '_' + fieldId).removeClass("gform_hidden"); |
| 55 |
parent.find(".ginput_post_image_file").show(); |
| 56 |
//parent.find("input[type=\"text\"]").val(''); |
| 57 |
var filesJson = jQuery('#gform_uploaded_files_' + formId).val(); |
| 58 |
if(filesJson){ |
| 59 |
var files = jQuery.secureEvalJSON(filesJson); |
| 60 |
if(files) { |
| 61 |
var inputName = "input_" + fieldId; |
| 62 |
var full_name = deleteButton.closest(".repeater-field-warp-item-data").find('input[name="gform_multifile_upload_'+formId+'_'+fieldId+'__'+rand_id+'"]').val(); |
| 63 |
if(full_name == ""){ |
| 64 |
full_name = []; |
| 65 |
}else{ |
| 66 |
full_name = full_name.split(","); |
| 67 |
} |
| 68 |
var $multfile = parent.find("#gform_multifile_upload_" + formId + "_" + fieldId +"__"+rand_id ); |
| 69 |
var remove_name = deleteButton.closest(".ginput_preview").find(".gfield_fileupload_filename").html(); |
| 70 |
var index1 = full_name.indexOf(remove_name); |
| 71 |
if (index1 !== -1) { |
| 72 |
full_name.splice(index1, 1); |
| 73 |
} |
| 74 |
deleteButton.closest(".repeater-field-warp-item-data").find('input[name="gform_multifile_upload_'+formId+'_'+fieldId+'__'+rand_id+'"]').val(full_name.join(",")); |
| 75 |
deleteButton.closest(".ginput_preview").remove(); |
| 76 |
if( $multfile.length > 0 ) { |
| 77 |
files[inputName].splice(fileIndex, 1); |
| 78 |
var settings = $multfile.data('settings'); |
| 79 |
var max = settings.gf_vars.max_files; |
| 80 |
jQuery("#" + settings.gf_vars.message_id +"__"+rand_id).html(''); |
| 81 |
if(files[inputName].length < max) |
| 82 |
gfMultiFileUploader.toggleDisabled(settings, false); |
| 83 |
|
| 84 |
} else { |
| 85 |
files[inputName] = null; |
| 86 |
} |
| 87 |
jQuery('#gform_uploaded_files_' + formId).val(jQuery.toJSON(files)); |
| 88 |
} |
| 89 |
} |
| 90 |
}else{ |
| 91 |
var parent = jQuery("#field_" + formId + "_" + fieldId); |
| 92 |
var fileIndex = jQuery(deleteButton).parent().index(); |
| 93 |
deleteButton.closest(".ginput_preview").remove(); |
| 94 |
//displaying single file upload field |
| 95 |
parent.find('input[type="file"],.validation_message,#extensions_message_' + formId + '_' + fieldId).removeClass("gform_hidden"); |
| 96 |
|
| 97 |
//displaying post image label |
| 98 |
parent.find(".ginput_post_image_file").show(); |
| 99 |
|
| 100 |
//clearing post image meta fields |
| 101 |
parent.find("input[type=\"text\"]").val(''); |
| 102 |
|
| 103 |
//removing file from uploaded meta |
| 104 |
var filesJson = jQuery('#gform_uploaded_files_' + formId).val(); |
| 105 |
|
| 106 |
|
| 107 |
if(filesJson){ |
| 108 |
var files = jQuery.secureEvalJSON(filesJson); |
| 109 |
if(files) { |
| 110 |
var inputName = "input_" + fieldId; |
| 111 |
var $multfile = parent.find("#gform_multifile_upload_" + formId + "_" + fieldId ); |
| 112 |
|
| 113 |
if( $multfile.length > 0 ) { |
| 114 |
files[inputName].splice(fileIndex, 1); |
| 115 |
var settings = $multfile.data('settings'); |
| 116 |
var max = settings.gf_vars.max_files; |
| 117 |
jQuery("#" + settings.gf_vars.message_id).html(''); |
| 118 |
if(files[inputName].length < max) |
| 119 |
|
| 120 |
gfMultiFileUploader.toggleDisabled(settings, false); |
| 121 |
|
| 122 |
} else { |
| 123 |
files[inputName] = null; |
| 124 |
} |
| 125 |
|
| 126 |
jQuery('#gform_uploaded_files_' + formId).val(jQuery.toJSON(files)); |
| 127 |
} |
| 128 |
} |
| 129 |
} |
| 130 |
|
| 131 |
|
| 132 |
} |
| 133 |
function change_name_and_ids(item , field_end = null, key = null){ |
| 134 |
if( key == null ){ |
| 135 |
var id_rand = Math.floor(Math.random() * 10000); |
| 136 |
}else{ |
| 137 |
var id_rand = key; |
| 138 |
} |
| 139 |
var datas = JSON.parse(field_end.find(".gf-field-repeater-data").val()); |
| 140 |
var datas_ids = datas.id; |
| 141 |
datas_ids.push(id_rand); |
| 142 |
datas.id = datas_ids; |
| 143 |
field_end.find(".gf-field-repeater-data").val(JSON.stringify(datas)); |
| 144 |
item = $(item); |
| 145 |
item.attr("data-id",id_rand); |
| 146 |
|
| 147 |
$(".gform_fileupload_multifile",item).each(function(){ |
| 148 |
var id = $(this).attr("id"); |
| 149 |
var container_item = $(this).closest(".gfield gfield--type-fileupload"); |
| 150 |
var settings = $(this).attr("data-settings"); |
| 151 |
settings = jQuery.parseJSON(settings); |
| 152 |
$.each(settings, function( index, value ) { |
| 153 |
switch(index) { |
| 154 |
case "browse_button": |
| 155 |
case "container": |
| 156 |
case "drop_element": |
| 157 |
case "filelist": |
| 158 |
settings[index] = value + "__"+id_rand; |
| 159 |
$("#"+value,item).attr("id",value + "__"+id_rand ); |
| 160 |
|
| 161 |
break; |
| 162 |
case "multipart_params": |
| 163 |
//settings["multipart_params"]["field_id"] = value.field_id + "__"+id_rand; |
| 164 |
break; |
| 165 |
} |
| 166 |
}); |
| 167 |
item.append('<input type="hidden" name="'+id+'" class="agform_multifile_upload" />'); |
| 168 |
$(this).attr("id",id+"__"+id_rand); |
| 169 |
$(this).attr("data-settings",JSON.stringify(settings)); |
| 170 |
names_upload.push(id+"__"+id_rand); |
| 171 |
|
| 172 |
}) |
| 173 |
$("input",item).each(function(){ |
| 174 |
var name = $(this).attr("name"); |
| 175 |
if(name == "MAX_FILE_SIZE"){ |
| 176 |
return; |
| 177 |
} |
| 178 |
var type = $(this).attr("type"); |
| 179 |
var id = $(this).attr("id"); |
| 180 |
$(this).attr("name",name+"__"+id_rand); |
| 181 |
$(this).attr("id",id+"-"+id_rand); |
| 182 |
var value_check = localStorage.getItem(id+"-"+id_rand); |
| 183 |
if( type == "checkbox" ){ |
| 184 |
if( value_check != null ){ |
| 185 |
$(this).attr("checked","checked"); |
| 186 |
} |
| 187 |
} else if( type == "file" ){ |
| 188 |
|
| 189 |
$(this).attr("id",id+"-"+id_rand); |
| 190 |
} |
| 191 |
else{ |
| 192 |
if( value_check != null ){ |
| 193 |
$(this).val(value_check); |
| 194 |
} |
| 195 |
} |
| 196 |
}) |
| 197 |
$("textarea",item).each(function(){ |
| 198 |
var name = $(this).attr("name"); |
| 199 |
var id = $(this).attr("id"); |
| 200 |
$(this).attr("name",name+"__"+id_rand); |
| 201 |
$(this).attr("id",id+"-"+id_rand); |
| 202 |
var value_check = localStorage.getItem(id+"-"+id_rand); |
| 203 |
if( value_check != null ){ |
| 204 |
$(this).val(value_check); |
| 205 |
} |
| 206 |
}) |
| 207 |
$("select",item).each(function(){ |
| 208 |
var name = $(this).attr("name"); |
| 209 |
var id = $(this).attr("id"); |
| 210 |
$(this).attr("name",name+"__"+id_rand); |
| 211 |
$(this).attr("id",id+"-"+id_rand); |
| 212 |
var value_check = localStorage.getItem(id+"-"+id_rand); |
| 213 |
if( value_check != null ){ |
| 214 |
$(this).val(value_check); |
| 215 |
} |
| 216 |
}) |
| 217 |
return item; |
| 218 |
} |
| 219 |
function add_repeater_data(button, key=null){ |
| 220 |
var start_field; |
| 221 |
var item = $('<div class="repeater-field-item"><div class="repeater-field-header"></div><div class="repeater-field-content"></div></div>'); |
| 222 |
button.prevAll().each(function(index){ |
| 223 |
var item = $(this).clone(); |
| 224 |
if( item.hasClass("gfield--type-repeater_start") ) { |
| 225 |
start_field = $(this); |
| 226 |
return false; |
| 227 |
} |
| 228 |
}) |
| 229 |
var html_field = get_repeater_data(button,key); |
| 230 |
var header = get_repeater_data_header(start_field); |
| 231 |
item.find(".repeater-field-header").append(header); |
| 232 |
item.find(".repeater-field-content").append(html_field); |
| 233 |
button.find(".repeater-field-warp-item").append(item); |
| 234 |
update_repeater_count_header(); |
| 235 |
$( "input" ).trigger( "done_load_repeater" ); |
| 236 |
var j = 0; |
| 237 |
$.each( names_upload, function( key, value ) { |
| 238 |
gfMultiFileUploader.setup("#"+value); |
| 239 |
names_upload.splice(j, 1); |
| 240 |
j++; |
| 241 |
}); |
| 242 |
|
| 243 |
|
| 244 |
$( '.gform-datepicker' ).each( function() { |
| 245 |
var $element = $( this ); |
| 246 |
initSingleDatepicker( $element ); |
| 247 |
$element.addClass( 'initialized' ); |
| 248 |
} ); |
| 249 |
} |
| 250 |
|
| 251 |
function get_repeater_data(step_field,key=null){ |
| 252 |
var html_step = change_name_and_ids(step_field.find(".gf-field-repeater-data-html").val(),step_field,key); |
| 253 |
return html_step; |
| 254 |
} |
| 255 |
function get_repeater_data_name(){ |
| 256 |
var i = 1; |
| 257 |
$(".gfield--type-repeater_start").each(function(){ |
| 258 |
if($(this).data("installed") == "installed"){ |
| 259 |
return; |
| 260 |
} |
| 261 |
$(this).data("installed","installed"); |
| 262 |
$(this).addClass("installed"); |
| 263 |
var html_step = $("<div class='container-repeater-field'></div>"); |
| 264 |
var names = []; |
| 265 |
var step_field = ""; |
| 266 |
var elements = $(this).nextAll(); |
| 267 |
var value = ""; |
| 268 |
elements.each(function(index){ |
| 269 |
var item = $(this).clone(); |
| 270 |
if( item.hasClass("gfield--type-repeater_end") ) { |
| 271 |
$(this).attr("data-id",i); |
| 272 |
value = $(this).find("input").val(); |
| 273 |
step_field = $(this); |
| 274 |
$(this).find(".gf-field-repeater-data").val(JSON.stringify({"count":1,"fields":names,"id":[]})); |
| 275 |
return false; |
| 276 |
} |
| 277 |
$(this).remove(); |
| 278 |
html_step.append(item); |
| 279 |
var check_name = null; |
| 280 |
if(item.find(".ginput_container_fileupload").length > 0 ){ |
| 281 |
var name = item.find("input[type=file]").attr("name"); |
| 282 |
if( name === undefined ){ |
| 283 |
name = item[0].id; |
| 284 |
name = name.split("field"); |
| 285 |
|
| 286 |
names.push("gform_multifile_upload"+name[1]); |
| 287 |
}else{ |
| 288 |
names.push(item.find("input[type=file]").attr("name")); |
| 289 |
} |
| 290 |
}else{ |
| 291 |
if( item.find("input").attr("name") ) { |
| 292 |
names.push(item.find("input").attr("name")); |
| 293 |
}else if( item.find("textarea").attr("name") ){ |
| 294 |
names.push(item.find("textarea").attr("name")); |
| 295 |
}else if( item.find("select").attr("name") ){ |
| 296 |
names.push(item.find("select").attr("name")); |
| 297 |
}else{ |
| 298 |
var type = item.find("input").attr("type"); |
| 299 |
names.push(item.find("input").attr("name")); |
| 300 |
} |
| 301 |
} |
| 302 |
|
| 303 |
}) |
| 304 |
var text_html = "<div class='container-repeater-field'>"+html_step.html()+"</div>"; |
| 305 |
step_field.find(".gf-field-repeater-data-html").val(text_html); |
| 306 |
var initial_rows = 0; |
| 307 |
initial_rows = step_field.find(".repeater-field-warp-item-data").data("initial_rows"); |
| 308 |
|
| 309 |
var initial_rows_map_field = step_field.find(".repeater-field-warp-item-data").data("initial_rows_map"); |
| 310 |
var initial_rows_map_number = $("#"+initial_rows_map_field).val(); |
| 311 |
|
| 312 |
if(initial_rows_map_number > 0){ |
| 313 |
$("#"+initial_rows_map_field).attr("data-repeater",step_field.find(".repeater-field-warp-item-data").data("map_id")); |
| 314 |
$("#"+initial_rows_map_field).attr("repeater_initial_rows","ok"); |
| 315 |
initial_rows = initial_rows_map_number; |
| 316 |
step_field.find(".gf-repeater-field-button-add").addClass("hidden"); |
| 317 |
step_field.addClass("repeater-remove-toolbar"); |
| 318 |
} |
| 319 |
|
| 320 |
if( value != "" ){ |
| 321 |
value = JSON.parse(value); |
| 322 |
initial_rows = value.count; |
| 323 |
var data_arr_ids = value.id; |
| 324 |
setTimeout(function() { |
| 325 |
for (var j = 0; j < initial_rows; j++) { |
| 326 |
add_repeater_data(step_field.closest(".gfield--type-repeater_end"),data_arr_ids[j]); |
| 327 |
} |
| 328 |
}, 100); |
| 329 |
}else{ |
| 330 |
setTimeout(function() { |
| 331 |
for (var j = 0; j < initial_rows; j++) { |
| 332 |
add_repeater_data(step_field.closest(".gfield--type-repeater_end")); |
| 333 |
} |
| 334 |
}, 100); |
| 335 |
} |
| 336 |
i++; |
| 337 |
}) |
| 338 |
} |
| 339 |
$("body").on("change","[repeater_initial_rows='ok']",function (e){ |
| 340 |
var repeater_id = $(this).data("repeater"); |
| 341 |
$("#"+repeater_id).find(".repeater-field-item").remove(); |
| 342 |
var number = $(this).val(); |
| 343 |
for (let i = 0; i < number; i++) { |
| 344 |
$("#"+repeater_id).find(".gf-repeater-field-button-add").click(); |
| 345 |
} |
| 346 |
}) |
| 347 |
function get_repeater_data_header(start_field){ |
| 348 |
var html_step = start_field.find(".repeater-field-header-data").val(); |
| 349 |
return html_step; |
| 350 |
} |
| 351 |
function update_repeater_count_header(){ |
| 352 |
$(".gfield--type-repeater_end").each(function(){ |
| 353 |
var i = 1; |
| 354 |
$(".repeater-field-item",$(this)).each(function(){ |
| 355 |
$(this).find(".repeater-field-header-count").html(i); |
| 356 |
i++; |
| 357 |
}) |
| 358 |
var datas = JSON.parse($(this).find(".gf-field-repeater-data").val()); |
| 359 |
datas.count = i-1; |
| 360 |
$(this).find(".gf-field-repeater-data").val(JSON.stringify(datas)); |
| 361 |
}); |
| 362 |
} |
| 363 |
function check_max_row(step_field){ |
| 364 |
var max = step_field.find(".repeater-field-warp-item-data").data("limit"); |
| 365 |
var number_item = $('.repeater-field-item',step_field).length; |
| 366 |
if( number_item >= max ){ |
| 367 |
return false; |
| 368 |
}else{ |
| 369 |
return true; |
| 370 |
} |
| 371 |
} |
| 372 |
function check_min_row(step_field){ |
| 373 |
var min = step_field.find(".repeater-field-warp-item-data").data("initial_rows"); |
| 374 |
var number_item = $('.repeater-field-item',step_field).length; |
| 375 |
if( number_item <= min ){ |
| 376 |
return false; |
| 377 |
}else{ |
| 378 |
return true; |
| 379 |
} |
| 380 |
} |
| 381 |
function removeAR(arr) { |
| 382 |
var what, a = arguments, L = a.length, ax; |
| 383 |
while (L > 1 && arr.length) { |
| 384 |
what = a[--L]; |
| 385 |
while ((ax= arr.indexOf(what)) !== -1) { |
| 386 |
arr.splice(ax, 1); |
| 387 |
} |
| 388 |
} |
| 389 |
return arr; |
| 390 |
} |
| 391 |
$("body").on("click",".gf-repeater-field-button-add",function(e){ |
| 392 |
e.preventDefault(); |
| 393 |
if( check_max_row($(this).closest(".gfield--type-repeater_end")) ){ |
| 394 |
add_repeater_data($(this).closest(".gfield--type-repeater_end")); |
| 395 |
}else{ |
| 396 |
$(this).addClass('hidden'); |
| 397 |
} |
| 398 |
}) |
| 399 |
$("body").on("click",".repeater-field-header-acctions-toogle",function(e){ |
| 400 |
e.preventDefault(); |
| 401 |
if( $(this).hasClass("icon-down-open")){ |
| 402 |
$(this).removeClass("icon-down-open"); |
| 403 |
$(this).addClass("icon-up-open"); |
| 404 |
}else{ |
| 405 |
$(this).addClass("icon-down-open"); |
| 406 |
$(this).removeClass("icon-up-open"); |
| 407 |
} |
| 408 |
$(this).closest(".repeater-field-item").find(".repeater-field-content").slideToggle("slow"); |
| 409 |
$(this).closest(".repeater-field-item").find(".repeater-field-header").toggleClass('repeater-content-show'); |
| 410 |
}) |
| 411 |
$("body").on("click",".repeater-field-header-acctions-remove",function(e){ |
| 412 |
e.preventDefault(); |
| 413 |
$(this).closest(".gfield--type-repeater_end").find(".gf-repeater-field-button-add").removeClass('hidden'); |
| 414 |
if( check_min_row($(this).closest(".gfield--type-repeater_end")) ){ |
| 415 |
var id = $(this).closest(".repeater-field-item").find(".container-repeater-field").data("id"); |
| 416 |
var datas = JSON.parse($(this).closest(".gfield--type-repeater_end").find(".gf-field-repeater-data").val()); |
| 417 |
var datas_ids = datas.id; |
| 418 |
datas_ids = removeAR(datas_ids,id); |
| 419 |
datas.id = datas_ids; |
| 420 |
$(this).closest(".gfield--type-repeater_end").find(".gf-field-repeater-data").val(JSON.stringify(datas)); |
| 421 |
$(this).closest(".repeater-field-item").remove(); |
| 422 |
}else{ |
| 423 |
} |
| 424 |
update_repeater_count_header(); |
| 425 |
}) |
| 426 |
//date pick |
| 427 |
function getDatepickerI18n() { |
| 428 |
var i18n = gform_i18n.datepicker; |
| 429 |
return { |
| 430 |
dayNamesMin: [ |
| 431 |
i18n.days.sunday, |
| 432 |
i18n.days.monday, |
| 433 |
i18n.days.tuesday, |
| 434 |
i18n.days.wednesday, |
| 435 |
i18n.days.thursday, |
| 436 |
i18n.days.friday, |
| 437 |
i18n.days.saturday, |
| 438 |
], |
| 439 |
monthNamesShort: [ |
| 440 |
i18n.months.january, |
| 441 |
i18n.months.february, |
| 442 |
i18n.months.march, |
| 443 |
i18n.months.april, |
| 444 |
i18n.months.may, |
| 445 |
i18n.months.june, |
| 446 |
i18n.months.july, |
| 447 |
i18n.months.august, |
| 448 |
i18n.months.september, |
| 449 |
i18n.months.october, |
| 450 |
i18n.months.november, |
| 451 |
i18n.months.december, |
| 452 |
], |
| 453 |
firstDay: i18n.firstDay, |
| 454 |
iconText: i18n.iconText, |
| 455 |
}; |
| 456 |
} |
| 457 |
/** |
| 458 |
* @function getDatepickerBaseOptions |
| 459 |
* @description Return base options object that configures the datepicker. |
| 460 |
* @param $element The datepicker trigger. |
| 461 |
* @since 2.5 |
| 462 |
* |
| 463 |
* @returns {{ |
| 464 |
* suppressDatePicker: boolean, |
| 465 |
* changeMonth: boolean, |
| 466 |
* changeYear: boolean, |
| 467 |
* onClose: onClose, |
| 468 |
* yearRange: string, |
| 469 |
* dateFormat: string, |
| 470 |
* showOn: string, |
| 471 |
* dayNamesMin: *[], |
| 472 |
* monthNamesShort: *[], |
| 473 |
* beforeShow: (function(*, *): boolean), |
| 474 |
* showOtherMonths: boolean |
| 475 |
* }} |
| 476 |
*/ |
| 477 |
function getDatepickerBaseOptions( $element ) { |
| 478 |
var i18n = getDatepickerI18n(); |
| 479 |
var isThemeDatepicker = $element.closest( '.gform_wrapper' ).length > 0; |
| 480 |
var isPreview = $( '#preview_form_container' ).length > 0; |
| 481 |
var isRTL = window.getComputedStyle($element[0], null).getPropertyValue('direction') === 'rtl'; |
| 482 |
var formTheme = isThemeDatepicker ? $element.closest( '.gform_wrapper' ).data( 'form-theme' ) : 'gravity-theme'; |
| 483 |
var formId = isThemeDatepicker ? $element.closest( '.gform_wrapper' ).attr( 'id' ).replace( 'gform_wrapper_', '' ) : ''; |
| 484 |
var formPageInstance = isThemeDatepicker ? $element.closest( '.gform_wrapper' ).attr( 'data-form-index' ) : ''; |
| 485 |
return { |
| 486 |
yearRange: '-100:+20', |
| 487 |
showOn: 'focus', |
| 488 |
dateFormat: 'mm/dd/yy', |
| 489 |
dayNamesMin: i18n.dayNamesMin, |
| 490 |
monthNamesShort: i18n.monthNamesShort, |
| 491 |
firstDay: i18n.firstDay, |
| 492 |
changeMonth: true, |
| 493 |
changeYear: true, |
| 494 |
isRTL: isRTL, |
| 495 |
showOtherMonths: isThemeDatepicker, |
| 496 |
suppressDatePicker: false, |
| 497 |
onClose: function() { |
| 498 |
var self = this; |
| 499 |
$element.focus(); |
| 500 |
this.suppressDatePicker = true; |
| 501 |
setTimeout( function() { |
| 502 |
self.suppressDatePicker = false; |
| 503 |
}, 200 ); |
| 504 |
}, |
| 505 |
beforeShow: function( input, inst ) { |
| 506 |
// Remove any classes that were added before as it could have been added to a different datepicker. |
| 507 |
inst.dpDiv[0].classList.remove( 'gform-theme-datepicker' ); |
| 508 |
inst.dpDiv[0].classList.remove( 'gravity-theme' ); |
| 509 |
inst.dpDiv[0].classList.remove( 'gform-theme' ); |
| 510 |
inst.dpDiv[0].classList.remove( 'gform-legacy-datepicker' ); |
| 511 |
inst.dpDiv[0].classList.remove( 'gform-theme--framework' ); |
| 512 |
inst.dpDiv[0].classList.remove( 'gform-theme--foundation' ); |
| 513 |
inst.dpDiv[0].classList.remove( 'gform-theme--orbital' ); |
| 514 |
if ( isThemeDatepicker ) { |
| 515 |
inst.dpDiv[ 0 ].classList.add( 'gform-theme-datepicker' ); |
| 516 |
$( inst.dpDiv[ 0 ] ).attr( 'data-parent-form', formId + '_' + formPageInstance ); |
| 517 |
} |
| 518 |
if ( formTheme === undefined || formTheme === 'gravity-theme' ) { |
| 519 |
$( inst.dpDiv[0] ).addClass( 'gravity-theme' ); |
| 520 |
} else if ( formTheme === 'legacy' ) { |
| 521 |
$( inst.dpDiv[0] ).addClass( 'gform-legacy-datepicker' ); |
| 522 |
} |
| 523 |
else { |
| 524 |
$( inst.dpDiv[0] ).addClass( 'gform-theme--' + formTheme ); |
| 525 |
if ( formTheme === 'orbital' ) { |
| 526 |
$( inst.dpDiv[0] ).addClass( 'gform-theme--framework' ); |
| 527 |
$( inst.dpDiv[0] ).addClass( 'gform-theme--foundation' ); |
| 528 |
} |
| 529 |
} |
| 530 |
if ( isRTL && isPreview ) { |
| 531 |
var $inputContainer = $( input ).closest( '.gfield' ); |
| 532 |
var rightOffset = $( document ).outerWidth() - ( $inputContainer.offset().left + $inputContainer.outerWidth() ); |
| 533 |
inst.dpDiv[ 0 ].style.right = rightOffset + 'px'; |
| 534 |
} |
| 535 |
return ! this.suppressDatePicker; |
| 536 |
}, |
| 537 |
}; |
| 538 |
} |
| 539 |
/** |
| 540 |
* @function initSingleDatepicker |
| 541 |
* @description Initialize a datepicker assigning various additional options based on the trigger element. |
| 542 |
* @param $element The datepicker trigger. |
| 543 |
* @since 2.4 |
| 544 |
*/ |
| 545 |
function initSingleDatepicker( $element ) { |
| 546 |
var i18n = getDatepickerI18n(); |
| 547 |
var inputId = $element.attr( 'id' ) ? $element.attr( 'id' ) : ''; |
| 548 |
var optionsObj = getDatepickerBaseOptions( $element ); |
| 549 |
if ( $element.hasClass( 'dmy' ) ) { |
| 550 |
optionsObj.dateFormat = 'dd/mm/yy'; |
| 551 |
} else if ( $element.hasClass( 'dmy_dash' ) ) { |
| 552 |
optionsObj.dateFormat = 'dd-mm-yy'; |
| 553 |
} else if ( $element.hasClass( 'dmy_dot' ) ) { |
| 554 |
optionsObj.dateFormat = 'dd.mm.yy'; |
| 555 |
} else if ( $element.hasClass( 'ymd_slash' ) ) { |
| 556 |
optionsObj.dateFormat = 'yy/mm/dd'; |
| 557 |
} else if ( $element.hasClass( 'ymd_dash' ) ) { |
| 558 |
optionsObj.dateFormat = 'yy-mm-dd'; |
| 559 |
} else if ( $element.hasClass( 'ymd_dot' ) ) { |
| 560 |
optionsObj.dateFormat = 'yy.mm.dd'; |
| 561 |
} |
| 562 |
if ( $element.hasClass( 'gdatepicker_with_icon' ) ) { |
| 563 |
optionsObj.showOn = 'both'; |
| 564 |
optionsObj.buttonImage = $element.parent().siblings( "[id^='gforms_calendar_icon_input']" ).val(); |
| 565 |
optionsObj.buttonImageOnly = true; |
| 566 |
optionsObj.buttonText = i18n.iconText; |
| 567 |
} else { |
| 568 |
optionsObj.showOn = 'focus'; |
| 569 |
} |
| 570 |
inputId = inputId.split( '_' ); |
| 571 |
// allow the user to override the datepicker options object |
| 572 |
optionsObj = gform.applyFilters( 'gform_datepicker_options_pre_init', optionsObj, inputId[ 1 ], inputId[ 2 ], $element ); |
| 573 |
$element.datepicker( optionsObj ); |
| 574 |
// We give the input focus after selecting a date which differs from default Datepicker behavior; this prevents |
| 575 |
// users from clicking on the input again to open the datepicker. Let's add a manual click event to handle this. |
| 576 |
if ( $element.is( ':input' ) ) { |
| 577 |
$element.click( function() { |
| 578 |
$element.datepicker( 'show' ); |
| 579 |
} ); |
| 580 |
} |
| 581 |
} |
| 582 |
}) |
| 583 |
$(document).on("change",".gfield--type-repeater_end input,.gfield--type-repeater_end textarea,.gfield--type-repeater_end select",function(event) { |
| 584 |
var id = $(this).attr("id"); |
| 585 |
if (typeof(Storage) !== "undefined") { |
| 586 |
if ($(this).attr("name") != "" && typeof $(this).attr("name") != 'undefined') { |
| 587 |
var type = $(this).attr("type"); |
| 588 |
var name = $(this).attr("id"); |
| 589 |
if( type == "checkbox" ) { |
| 590 |
if( $("#"+name+":checked").length > 0 ) { |
| 591 |
var value = $("#"+name+":checked").val(); |
| 592 |
localStorage.setItem(id, value); |
| 593 |
}else{ |
| 594 |
localStorage.removeItem(id); |
| 595 |
} |
| 596 |
}else{ |
| 597 |
var value = $(this).val(); |
| 598 |
localStorage.setItem(id, value); |
| 599 |
} |
| 600 |
} |
| 601 |
} |
| 602 |
}); |
| 603 |
})(jQuery); |