%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/higroup/1618475457800/wp-content/plugins/user-registration/assets/js/admin/
Upload File :
Create Path :
Current File : /var/www/html/higroup/1618475457800/wp-content/plugins/user-registration/assets/js/admin/admin.js

/**
 * UserRegistration Admin JS
 * global i18n_admin
 */
jQuery(function ($) {
	// Sync Number field's options with hidden corresponding elements.
	$(document.body).on(
		"input",
		".ur_advance_setting.ur-settings-min",
		function () {
			$(
				".ur-selected-item.ur-item-active .ur_advance_setting.ur-settings-min"
			).val($(this).val());
		}
	);
	$(document.body).on(
		"input",
		".ur_advance_setting.ur-settings-max",
		function () {
			$(
				".ur-selected-item.ur-item-active .ur_advance_setting.ur-settings-max"
			).val($(this).val());
		}
	);
	$(document.body).on(
		"input",
		".ur_advance_setting.ur-settings-step",
		function () {
			$(
				".ur-selected-item.ur-item-active .ur_advance_setting.ur-settings-step"
			).val($(this).val());
		}
	);

	// Bind UI Action handlers for searching fields.
	$(document.body).on("input", "#ur-search-fields", function () {
		var search_string = $(this).val().toLowerCase();

		// Show/Hide fields.
		$(".ur-registered-item").each(function () {
			var field_label = $(this).text().toLowerCase();
			if (field_label.search(search_string) > -1) {
				$(this).addClass("ur-searched-item");
				$(this).show();
			} else {
				$(this).removeClass("ur-searched-item");
				$(this).hide();
			}
		});

		// Show/Hide field sections.
		$(".ur-registered-list").each(function () {
			var search_result_fields_count = $(this).find(
				".ur-registered-item.ur-searched-item"
			).length;
			var hr = $(this).prev("hr");
			var heading = $(this).prev("hr").prev(".ur-toggle-heading");

			if (0 === search_result_fields_count) {
				hr.hide();
				heading.hide();
			} else {
				hr.show();
				heading.show();
			}
		});

		// Show/Hide fields not found indicator.
		if ($(".ur-registered-item.ur-searched-item").length) {
			$(".ur-fields-not-found").hide();
		} else {
			$(".ur-fields-not-found").show();
		}
	});

	// Bind UI Actions for upgradable fields
	$(document).on("mousedown", ".ur-upgradable-field", function (e) {
		e.preventDefault();

		var icon = '<i class="dashicons dashicons-lock"></i>';
		var label = $(this).text();
		var title =
			icon +
			'<span class="user-registration-swal2-modal__title">' +
			label +
			" is a premium field.</span>";
		var plan = $(this).data("plan");
		var message =
			label +
			" field is locked. Upgrade to <strong>" +
			plan +
			"</strong> to unlock this field.";

		Swal.fire({
			title: title,
			html: message,
			customClass:
				"user-registration-swal2-modal user-registration-swal2-modal--centered",
			showCloseButton: true,
			confirmButtonText: "View Pricing",
		}).then(function (result) {
			if (result.value) {
				var url =
					"https://wpeverest.com/wordpress-plugins/user-registration/pricing/?utm_source=pro-fields&utm_medium=popup-button&utm_campaign=ur-upgrade-to-pro";
				window.open(url, "_blank");
			}
		});
	});

	// Adjust builder width
	$(window).on("resize orientationchange", function () {
		var resizeTimer;

		clearTimeout(resizeTimer);
		resizeTimer = setTimeout(function () {
			$(document.body).trigger("adjust_builder_width");
		}, 250);
	});

	$(document.body).on("click", "#collapse-button", function () {
		$(document.body).trigger("ur_adjust_builder_width");
	});

	$(document.body)
		.on("ur_adjust_builder_width", function () {
			var adminMenuWidth = $("#adminmenuwrap").width(),
				$builder = $(
					".user-registration_page_add-new-registration .ur-form-subcontainer .menu-edit"
				),
				$loading = $(
					".user-registration_page_add-new-registration .ur-form-subcontainer .ur-loading-container"
				);

			$builder.css({ left: adminMenuWidth + "px" });
			$loading.fadeOut(1000);
		})
		.trigger("ur_adjust_builder_width");

	// Form name edit.
	$(document.body).on(
		"click",
		".user-registration-editable-title__icon",
		function () {
			var $input = $(this).siblings(
				".user-registration-editable-title__input"
			);
			if (!$input.hasClass("is-editing")) {
				$input.trigger("focus");
			}
			$input.toggleClass("is-editing");
			$input.attr(
				"data-editing",
				$input.attr("data-editing") == "true" ? "false" : "true"
			);
		}
	);

	// In case the user goes out of focus from title edit state.
	$(document.body)
		.not($(".user-registration-editable-title"))
		.on("click", function (e) {
			var field = $(".user-registration-editable-title__input");

			// Both of these controls should in no way allow stopping event propagation.
			if (
				"ur-form-name" === e.target.id ||
				"ur-form-name-edit-button" === e.target.id
			) {
				return;
			}

			if (!field.attr("hidden") && field.hasClass("is-editing")) {
				e.stopPropagation();

				// Only allow flipping state if currently editing.
				if (
					"true" !== field.data("data-editing") &&
					field.val() &&
					"" !== field.val().trim()
				) {
					field
						.toggleClass("is-editing")
						.trigger("blur")
						.attr(
							"data-editing",
							field.attr("data-editing") == "true"
								? "false"
								: "true"
						);
				}
			}
		});

	$(document).on(
		"init_perfect_scrollbar update_perfect_scrollbar",
		function () {
			// Init perfect Scrollbar.
			if ("undefined" !== typeof PerfectScrollbar) {
				var tab_content = $(".ur-tab-contents");

				if (
					tab_content.length >= 1 &&
					"undefined" === typeof window.ur_tab_scrollbar
				) {
					window.ur_tab_scrollbar = new PerfectScrollbar(
						document.querySelector(".ur-tab-contents"),
						{
							suppressScrollX: true,
						}
					);
				} else if ("undefined" !== typeof window.ur_tab_scrollbar) {
					window.ur_tab_scrollbar.update();
					tab_content.scrollTop(0);
				}
			}
		}
	);

	/**
	 * Append form settings to fileds section.
	 */
	$(document).ready(function () {
		$(document).trigger("init_perfect_scrollbar");

		var fields_panel = $(".ur-selected-inputs");
		var form_settings_section = $(".ur-registered-inputs nav").find(
			"#ur-tab-field-settings"
		);
		var form_settings = form_settings_section.find("form");

		form_settings.appendTo(fields_panel);

		fields_panel
			.find("form #ur-field-all-settings > div")
			.each(function (index, el) {
				var appending_text = $(el).find("h3").text();
				var appending_id = $(el).attr("id");

				form_settings_section.append(
					'<div id="' +
						appending_id +
						'" class="form-settings-tab">' +
						appending_text +
						"</div>"
				);
				$(el).hide();
			});

		// Add active class to general settings and form-settings-tab for all settings.
		form_settings_section.find("#general-settings").addClass("active");
		fields_panel.find("#ur-field-all-settings div#general-settings").show();

		form_settings_section
			.find(".form-settings-tab")
			.on("click", function () {
				this_id = $(this).attr("id");
				// Remove all active classes initially.
				$(this).siblings().removeClass("active");

				// Add active class on clicked tab.
				$(this).addClass("active");

				// Hide other settings and show respective id's settings.
				fields_panel.find("form #ur-field-all-settings > div").hide();
				fields_panel
					.find("form #ur-field-all-settings > div#" + this_id)
					.show();
				$(document).trigger("update_perfect_scrollbar");
				$(".ur-builder-wrapper").scrollTop(0);
			});
	});

	$(document).on(
		"click",
		'.ur-tab-lists li[role="tab"] a.nav-tab',
		function (e, $type) {
			$(document).trigger("update_perfect_scrollbar");

			if ("triggered_click" != $type) {
				$(".ur-builder-wrapper").scrollTop(0);
				$(".ur-builder-wrapper-content").scrollTop(0);
			}
		}
	);

	// Setting Tab.
	$(document).on(
		"click",
		'.ur-tab-lists li[aria-controls="ur-tab-field-settings"]',
		function () {
			// Empty fields panels.
			$(".ur-builder-wrapper-content").hide();
			$(".ur-builder-wrapper-footer").hide();

			// Show only the form settings in fields panel.
			$(".ur-selected-inputs").find("form#ur-field-settings").show();
		}
	);

	/**
	 * Display fields panels on fields tab click.
	 */
	$(document).on(
		"click",
		'ul.ur-tab-lists li[aria-controls="ur-tab-registered-fields"]',
		function () {
			// Show field panels.
			$(".ur-builder-wrapper-content").show();
			$(".ur-builder-wrapper-footer").show();

			// Hide the form settings in fields panel.
			$(".ur-selected-inputs").find("form#ur-field-settings").hide();
		}
	);

	/**
	 * Hide/Show minimum password strength field on the basis of enable strong password value.
	 */
	var minimum_password_strength_wrapper_field = $("#general-settings").find(
		"#user_registration_form_setting_minimum_password_strength_field"
	);
	var strong_password_field = $("#general-settings").find(
		"#user_registration_form_setting_enable_strong_password_field input#user_registration_form_setting_enable_strong_password"
	);
	var enable_strong_password = strong_password_field.is(":checked");

	if ("yes" === enable_strong_password || true === enable_strong_password) {
		minimum_password_strength_wrapper_field.show();
	} else {
		minimum_password_strength_wrapper_field.hide();
	}

	$(strong_password_field).on("change", function () {
		enable_strong_password = $(this).is(":checked");

		if (
			"yes" === enable_strong_password ||
			true === enable_strong_password
		) {
			minimum_password_strength_wrapper_field.show("slow");
		} else {
			minimum_password_strength_wrapper_field.hide("slow");
		}
	});

	// Tooltips
	$(document.body)
		.on("init_tooltips", function () {
			ur_init_tooltips(".tips, .help_tip, .user-registration-help-tip");
			ur_init_tooltips(
				".ur-copy-shortcode, #ur-setting-form .ur-portal-tooltip",
				{ keepAlive: false }
			);

			// Add tiptip to parent element for widefat tables
			$(".parent-tips").each(function () {
				$(this)
					.closest("a, th")
					.attr("data-tip", $(this).data("tip"))
					.tipTip(tiptip_args)
					.css("cursor", "help");
			});
		})
		.trigger("init_tooltips");
	$("body").on("keypress", "#ur-form-name", function (e) {
		if (13 === e.which) {
			$("#save_form_footer").eq(0).trigger("click");
		}
	});

	$("#ur-full-screen-mode").on("click", function (e) {
		e.preventDefault();
		var $this = $(this);

		if ($this.hasClass("closed")) {
			$this.removeClass("closed");
			$this.addClass("opened");

			$("body").addClass("ur-full-screen-mode");
		} else {
			$this.removeClass("opened");
			$this.addClass("closed");

			$("body").removeClass("ur-full-screen-mode");
		}
	});

	$(document).on("keyup", function (e) {
		if ("Escape" === e.key) {
			$("#ur-full-screen-mode.opened").trigger("click");
		}
	});

	$("input.input-color").wpColorPicker();
});

(function ($, user_registration_admin_data) {
	var i18n_admin = user_registration_admin_data.i18n_admin;
	$(function () {
		var user_profile_modal = {
			init: function () {
				$(document.body)
					.on("click", ".column-data_link a", this.add_item)
					.on("ur_backbone_modal_loaded", this.backbone.init)
					.on("ur_backbone_modal_response", this.backbone.response);
			},
			add_item: function (e) {
				e.preventDefault();
				$(this).URBackboneModal({ template: "test-demo" });
				return false;
			},
			backbone: {
				init: function (e, target) {
					if ("test-demo" === target) {
					}
				},
				response: function (e, target) {
					if ("test-demo" === target) {
					}
				},
			},
		};
		user_profile_modal.init();
		$.fn.ur_form_builder = function () {
			var loaded_params = {
				active_grid: user_registration_admin_data.active_grid,
				number_of_grid_list:
					user_registration_admin_data.number_of_grid,
				min_grid_height: 70,
			};
			// traverse all nodes
			return this.each(function () {
				// express a single node as a jQuery object
				var $this = $(this);
				var builder = {
					init: function () {
						this.single_row();
						manage_required_fields();
					},
					get_grid_button: function () {
						var grid_button = $(
							'<div class="ur-grid-containner"/>'
						);
						var grid_content =
							'<button type="button" class="ur-edit-grid"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M28,6V26H4V6H28m2-2H2V28H30V4Z"/></svg></button>';
						grid_content +=
							'<button type="button" class="dashicons dashicons-no-alt ur-remove-row"></button>';
						grid_content +=
							'<div class="ur-toggle-grid-content" style="display:none">';
						grid_content +=
							"<small>Select the grid column.</small>";
						grid_content +=
							'<div class="ur-grid-selector" data-grid = "1">';
						grid_content +=
							'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M28,6V26H4V6H28m2-2H2V28H30V4Z"/></svg>';
						grid_content += "</div>";
						grid_content +=
							'<div class="ur-grid-selector" data-grid = "2">';
						grid_content +=
							'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M17,4H2V28H30V4ZM4,26V6H15V26Zm24,0H17V6H28Z"/></svg>';
						grid_content += "</div>";
						grid_content +=
							'<div class="ur-grid-selector" data-grid = "3">';
						grid_content +=
							'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M22,4H2V28H30V4ZM4,26V6h6V26Zm8,0V6h8V26Zm16,0H22V6h6Z"/></svg>';
						grid_content += "</div>";
						grid_content += "</div>";
						grid_button.html(grid_content);
						return grid_button.html();
					},
					single_row: function () {
						if (user_registration_admin_data.is_edit_form !== "1") {
							var single_row = $(
								"<div class='ur-single-row'/ data-row-id=\"0\">"
							);
							single_row.append($("<div class='ur-grids'/>"));
							var grid_button = this.get_grid_button();
							single_row.find(".ur-grids").append(grid_button);
							single_row
								.find(".ur-grids")
								.find(
									'span[data-id="' +
										loaded_params.active_grid +
										'"]'
								)
								.addClass("ur-active-grid");
							var grid_list = this.get_grid_lists(
								loaded_params.active_grid
							);
							single_row.append('<div style="clear:both"></div>');
							single_row.append(grid_list);
							single_row.append('<div style="clear:both"></div>');

							$this.append(single_row);
							$(".ur-single-row")
								.eq(0)
								.find(".ur-grid-lists")
								.eq(0)
								.find(".ur-grid-list-item")
								.eq(0)
								.find(".user-registration-dragged-me")
								.remove();
							$(".ur-single-row")
								.eq(0)
								.find(".ur-grid-lists")
								.eq(0)
								.find(".ur-grid-list-item")
								.eq(0)
								.append(
									user_registration_admin_data.required_form_html
								);
						}

						if ($this.find(".ur-add-new-row").length == 0) {
							$this.append(
								'<button type="button" class="button button-primary dashicons dashicons-plus-alt ur-add-new-row ui-sortable-handle" data-total-rows="0">' +
									user_registration_admin_data.add_new +
									"</button>"
							);
							var total_rows = $this
								.find(".ur-add-new-row")
								.siblings(".ur-single-row")
								.last()
								.prev()
								.attr("data-row-id");
							$this
								.find(".ur-add-new-row")
								.attr("data-total-rows", total_rows);
						}
						events.render_draggable_sortable();
						builder.manage_empty_grid();
						manage_draggable_users_fields();
					},
					get_grid_lists: function (number_of_grid) {
						var grid_lists = $('<div class="ur-grid-lists"/>');
						for (var i = 1; i <= number_of_grid; i++) {
							var grid_list_item = $(
								"<div ur-grid-id='" +
									i +
									"' class='ur-grid-list-item'></div>"
							);
							var width =
								Math.floor(100 / number_of_grid) -
								number_of_grid;
							grid_list_item.css({
								width: width + "%",
								"min-height":
									loaded_params.min_grid_height + "px",
							});
							grid_lists.append(grid_list_item);
						}
						grid_lists.append('<div style="clear:both"></div>');
						grid_lists.find(".ur-grid-list-item").eq("0").css({});
						return grid_lists;
					},
					populate_dropped_node: function (container, form_field_id) {
						var data = {
							action: "user_registration_user_input_dropped",
							security:
								user_registration_admin_data.user_input_dropped,
							form_field_id: form_field_id,
						};
						var template_text =
							'<div class="ur-selected-item ajax_added"><div class="ur-action-buttons">' +
							'<span title="Clone" class="dashicons dashicons-admin-page ur-clone"></span>' +
							'<span title="Trash" class="dashicons dashicons-trash ur-trash"></span>' +
							"</div>(content)</div>";
						container
							.closest(".ur-single-row")
							.find(".user-registration-dragged-me")
							.fadeOut();
						$.ajax({
							url: user_registration_admin_data.ajax_url,
							data: data,
							type: "POST",
							beforeSend: function () {
								container
									.removeAttr("class")
									.removeAttr("id")
									.removeAttr("data-field-id")
									.addClass("ur-selected-item")
									.css({ width: "auto" });
								container.html(
									'<small class="spinner is-active"></small>'
								);
								container.addClass("ur-item-dragged");
							},
							complete: function (response) {
								builder.manage_empty_grid();
								if (response.responseJSON.success === true) {
									var template = $(
										template_text.replace(
											"(content)",
											response.responseJSON.data.template
										)
									);
									template.removeClass("ajax_added");
									template.removeClass("ur-item-dragged");
									container
										.find(".ajax_added")
										.find(".spinner")
										.remove();
									container.find(".ajax_added").remove();
									$(template).insertBefore(container);
									container.remove();
								}
								manage_draggable_users_fields();

								var populated_item = template
									.closest(".ur-selected-item ")
									.find("[data-field='field_name']")
									.val();
								manage_conditional_field_options(
									populated_item
								);

								$(
									'.ur-input-type-select2 .ur-field[data-field-key="select2"] select, .ur-input-type-multi-select2 .ur-field[data-field-key="multi_select2"] select'
								).selectWoo();

								$(document.body).trigger(
									"ur_new_field_created"
								);
							},
						});
					},
					manage_empty_grid: function () {
						var main_containner = $(".ur-input-grids");
						var drag_me = $(
							'<div class="user-registration-dragged-me"/>'
						);
						main_containner
							.find(".user-registration-dragged-me")
							.remove();
						$.each(
							main_containner.find(".ur-grid-list-item"),
							function () {
								var $this = $(this);
								if (
									$(this).find(".ur-selected-item").length ===
									0
								) {
									$this.append(drag_me.clone());
								}
							}
						);
					},
				};
				var events = {
					register: function () {
						this.register_add_new_row();
						this.register_remove_row();
						this.change_ur_grids();
						this.remove_selected_item();
						this.clone_selected_item();
					},
					register_add_new_row: function () {
						var $this_obj = this;
						$("body").on("click", ".ur-add-new-row", function () {
							var total_rows = $(this).attr("data-total-rows");
							$(this).attr(
								"data-total-rows",
								parseInt(total_rows) + 1
							);

							var single_row_clone = $(this)
								.closest(".ur-input-grids")
								.find(".ur-single-row")
								.eq(0)
								.clone();
							single_row_clone.attr(
								"data-row-id",
								parseInt(total_rows) + 1
							);
							single_row_clone.find(".ur-grid-lists").html("");
							single_row_clone
								.find(".ur-grids")
								.find("span")
								.removeClass("ur-active-grid");
							single_row_clone
								.find(".ur-grids")
								.find(
									'span[data-id="' +
										loaded_params.active_grid +
										'"]'
								)
								.addClass("ur-active-grid");
							var grid_list = builder.get_grid_lists(
								loaded_params.active_grid
							);
							single_row_clone
								.find(".ur-grid-lists")
								.append(grid_list.html());
							single_row_clone.insertBefore(".ur-add-new-row");
							single_row_clone.show();
							$this_obj.render_draggable_sortable();
							builder.manage_empty_grid();
							$(document).trigger("user_registration_row_added", [
								single_row_clone,
							]);
						});
					},
					register_remove_row: function () {
						var $this = this;
						$("body").on("click", ".ur-remove-row", function () {
							if (
								$(".ur-input-grids").find(
									".ur-single-row:visible"
								).length > 1
							) {
								var $this_row = $(this);
								ur_confirmation(
									user_registration_admin_data.i18n_admin
										.i18n_are_you_sure_want_to_delete_row,
									{
										title:
											user_registration_admin_data
												.i18n_admin.i18n_msg_delete,
										confirm: function () {
											var btn = $this_row.prev();
											var new_btn;
											if (
												btn.hasClass("ur-add-new-row")
											) {
												new_btn = btn.clone();
											} else {
												new_btn = $this_row
													.clone()
													.attr(
														"class",
														"dashicons-minus ur-remove-row"
													);
											}
											if (
												new_btn.hasClass(
													"ur-add-new-row"
												)
											) {
												$this_row
													.closest(".ur-single-row")
													.prev()
													.find(".ur-remove-row")
													.before(new_btn);
											}
											var single_row = $this_row.closest(
												".ur-single-row"
											);
											$(
												document
											).trigger(
												"user_registration_row_deleted",
												[single_row]
											);

											// Remove Row Fields from Conditional Select Dropdown.
											var row_fields = single_row.find(
												".ur-grid-lists .ur-selected-item .ur-general-setting"
											);
											$(row_fields).each(function () {
												var field_label = $(this)
													.closest(
														".ur-selected-item"
													)
													.find(
														" .ur-admin-template .ur-label label"
													)
													.text();
												var field_key = $(this)
													.closest(
														".ur-selected-item"
													)
													.find(
														" .ur-admin-template .ur-field"
													)
													.data("field-key");

												//strip certain fields
												if (
													"section_title" ==
														field_key ||
													"html" == field_key ||
													"wysiwyg" == field_key ||
													"billing_address_title" ==
														field_key ||
													"shipping_address_title" ==
														field_key
												) {
													return;
												}

												var field_name = $(this)
													.find(
														"[data-field='field_name']"
													)
													.val();

												if (
													typeof field_name !==
													"undefined"
												) {
													// Remove item from conditional logic options
													$(
														'[class*="urcl-settings-rules_field_"] option[value="' +
															field_name +
															'"]'
													).remove();

													// Remove Field from Form Setting Conditionally Assign User Role.
													$(
														'[class*="urcl-field-conditional-field-select"] option[value="' +
															field_name +
															'"]'
													).remove();
												}
											});
											single_row.remove();
											$this.check_grid();
											manage_draggable_users_fields();

											Swal.fire({
												type: "success",
												title: "Successfully deleted!",
												customClass:
													"user-registration-swal2-modal user-registration-swal2-modal--center",
												showConfirmButton: false,
												timer: 1000,
											});
										},
										reject: function () {
											// Do Nothing.
										},
									}
								);
							} else {
								ur_alert(
									user_registration_admin_data.i18n_admin
										.i18n_at_least_one_row_is_required_to_create_a_registration_form,
									{
										title:
											user_registration_admin_data
												.i18n_admin
												.i18n_cannot_delete_row,
									}
								);
							}
						});
					},
					change_ur_grids: function () {
						var $this_obj = this;

						$(document).on(
							"click",
							".ur-grids .ur-edit-grid",
							function (e) {
								e.stopPropagation();
								$(this)
									.siblings(".ur-toggle-grid-content")
									.stop(true)
									.slideToggle(200);
							}
						);
						$(document).on("click", function () {
							$(".ur-toggle-grid-content")
								.stop(true)
								.slideUp(200);
						});

						$(document).on(
							"click",
							".ur-grids .ur-toggle-grid-content .ur-grid-selector",
							function () {
								var $this_single_row = $(this).closest(
										".ur-single-row"
									),
									grid_num = $(this).attr("data-grid"),
									grid_comp = $this_single_row.find(
										".ur-grid-lists .ur-grid-list-item"
									).length,
									$grids = builder.get_grid_lists(grid_num),
									iterator = 0;

								// Prevent from selecting same grid.
								if (
									$this_single_row.find(
										".ur-grid-lists .ur-grid-list-item"
									).length === parseInt(grid_num)
								) {
									return;
								}

								$this_single_row
									.find("button.ur-edit-grid")
									.html($(this).html());

								$.each(
									$this_single_row.find(
										".ur-grid-lists .ur-grid-list-item"
									),
									function () {
										$(this)
											.children("*")
											.each(function () {
												$grids
													.find(".ur-grid-list-item")
													.eq(iterator)
													.append($(this).clone()); // "this" is the current element in the loop.

												// In case the fields have to be redistributed into 2 columns - prioritizes left column first, if 3rd column is going away.
												if (
													3 ===
														parseInt(
															$(this)
																.parent()
																.attr(
																	"ur-grid-id"
																)
														) &&
													3 === parseInt(grid_comp) &&
													2 === parseInt(grid_num)
												) {
													iterator = Math.abs(
														--iterator
													); // Alternates between 0 and 1.
												}
											});

										// Decides to check if it's trying to push into lower amount of columns.
										// If so, it simply resets the index to 0 to disallow elements from removed rows.
										if (
											parseInt(grid_num) > grid_comp ||
											($(this).children("*").length &&
												2 <= parseInt(grid_num))
										) {
											iterator =
												parseInt(grid_num) <= ++iterator
													? 0
													: iterator;
										}
									}
								);

								$this_single_row
									.find(".ur-grid-lists")
									.eq(0)
									.hide();
								$grids
									.clone()
									.insertAfter(
										$this_single_row.find(".ur-grid-lists")
									);
								$this_single_row
									.find(".ur-grid-lists")
									.eq(0)
									.remove();
								$this_obj.render_draggable_sortable();
								builder.manage_empty_grid();
							}
						);
					},
					render_draggable_sortable: function () {
						$(".ur-grid-list-item")
							.sortable({
								containment: ".ur-input-grids",
								over: function () {
									$(this).addClass("ur-sortable-active");
									builder.manage_empty_grid();
								},
								out: function () {
									$(this).removeClass("ur-sortable-active");
									builder.manage_empty_grid();
								},
								revert: true,
								connectWith: ".ur-grid-list-item",
							})
							.disableSelection();
						$(".ur-input-grids").sortable({
							containment: ".ur-builder-wrapper",
							tolerance: "pointer",
							revert: "invalid",
							placeholder: "ur-single-row",
							forceHelperSize: true,
							over: function () {
								$(this).addClass("ur-sortable-active");
							},
							out: function () {
								$(this).removeClass("ur-sortable-active");
							},
						});
						$("#ur-draggabled .draggable")
							.draggable({
								connectToSortable: ".ur-grid-list-item",
								containment: ".ur-registered-from",
								helper: function () {
									return $(this)
										.clone()
										.insertAfter(
											$(this)
												.closest(".ur-tab-contents")
												.siblings(".ur-tab-lists")
										);
								},
								revert: "invalid",
								// start: function (event, ui) {
								// },
								stop: function (event, ui) {
									if (
										$(ui.helper).closest(
											".ur-grid-list-item"
										).length === 0
									) {
										return;
									}
									var data_field_id = $(ui.helper)
										.attr("data-field-id")
										.replace("user_registration_", "")
										.trim();
									var length_of_required = $(
										".ur-input-grids"
									).find(
										'.ur-field[data-field-key="' +
											data_field_id +
											'"]'
									).length;
									var only_one_field_index = $.makeArray(
										user_registration_admin_data.form_one_time_draggable_fields
									);
									if (
										length_of_required > 0 &&
										$.inArray(
											data_field_id,
											only_one_field_index
										) >= 0
									) {
										show_message(
											user_registration_admin_data
												.i18n_admin
												.i18n_user_required_field_already_there
										);
										$(ui.helper).remove();
										return;
									}
									var clone = $(ui.helper);
									var form_field_id = $(clone).attr(
										"data-field-id"
									);
									if (typeof form_field_id !== "undefined") {
										var this_clone = $(ui.helper)
											.closest(".ur-grid-list-item")
											.find(
												'li[data-field-id="' +
													$(this).attr(
														"data-field-id"
													) +
													'"]'
											);
										builder.populate_dropped_node(
											this_clone,
											form_field_id
										);
									}
								},
							})
							.disableSelection();
					},
					remove_selected_item: function () {
						var $this = this;
						$("body").on(
							"click",
							".ur-selected-item .ur-action-buttons .ur-trash",
							function (e) {
								var removed_item = $(this)
										.closest(".ur-selected-item ")
										.find("[data-field='field_name']")
										.val(),
									ele = $this,
									$ele = $(this);

								ur_confirmation(
									user_registration_admin_data.i18n_admin
										.i18n_are_you_sure_want_to_delete_field,
									{
										title:
											user_registration_admin_data
												.i18n_admin.i18n_msg_delete,
										showCancelButton: true,
										confirmButtonText:
											user_registration_admin_data
												.i18n_admin.i18n_choice_ok,
										cancelButtonText:
											user_registration_admin_data
												.i18n_admin.i18n_choice_cancel,
										ele: ele,
										$ele: $ele,
										removed_item: removed_item,
										confirm: function () {
											$ele.closest(
												".ur-selected-item "
											).remove();
											ele.check_grid();
											builder.manage_empty_grid();
											manage_draggable_users_fields();

											// Remove item from conditional logic options
											$(
												'[class*="urcl-settings-rules_field_"] option[value="' +
													removed_item +
													'"]'
											).remove();

											// Remove Field from Form Setting Conditionally Assign User Role.
											$(
												'[class*="urcl-field-conditional-field-select"] option[value="' +
													removed_item +
													'"]'
											).remove();

											// To prevent click on whole item.
											return false;
										},
										reject: function () {
											return false;
										},
									}
								);
							}
						);
					},

					clone_selected_item: function () {
						$("body").on(
							"click",
							".ur-selected-item .ur-action-buttons  .ur-clone",
							function () {
								var data_field_key = $(this)
									.closest(".ur-selected-item ")
									.find(".ur-field")
									.attr("data-field-key");
								var selected_node = $(".ur-input-grids").find(
									'.ur-field[data-field-key="' +
										data_field_key +
										'"]'
								);
								var length_of_required = selected_node.length;
								if (
									length_of_required > 0 &&
									$.inArray(
										data_field_key,
										user_registration_admin_data.form_one_time_draggable_fields
									) > -1
								) {
									show_message(
										user_registration_admin_data.i18n_admin
											.i18n_user_required_field_already_there_could_not_clone
									);
									return;
								}
								var clone = $(this)
									.closest(".ur-selected-item ")
									.clone();
								var label_node = clone.find(
									'input[data-field="field_name"]'
								);
								var regex = /\d+/g;
								var matches = label_node.val().match(regex);
								var find_string =
									matches.length > 0
										? matches[matches.length - 1]
										: "";
								var label_string = label_node
									.val()
									.replace(find_string, "");
								clone
									.find('input[data-field="field_name"]')
									.attr(
										"value",
										label_string + new Date().getTime()
									);
								$(this)
									.closest(".ur-grid-list-item")
									.append(clone);

								var populated_item = clone
									.find("[data-field='field_name']")
									.val();
								manage_conditional_field_options(
									populated_item
								);
							}
						);
					},
					check_grid: function () {
						$(".ur-tabs").tabs({ disabled: [1] });
						$(".ur-tabs")
							.find("a")
							.eq(0)
							.trigger("click", ["triggered_click"]);
						$(".ur-tabs")
							.find('[aria-controls="ur-tab-field-options"]')
							.addClass("ur-no-pointer");
						$(".ur-selected-item").removeClass("ur-item-active");
					},
				};
				builder.init();
				events.register();
			});
		};
		$(".ur-input-grids").ur_form_builder();
		$(".ur-tabs .ur-tab-lists").on("click", "a.nav-tab", function () {
			$(".ur-tabs .ur-tab-lists").find("a.nav-tab").removeClass("active");
			$(this).addClass("active");
		});
		$(".ur-tabs").tabs();
		$(".ur-tabs").find("a").eq(0).trigger("click", ["triggered_click"]);
		$(".ur-tabs").tabs({ disabled: [1] });

		/**
		 * This block of code is for the "Selected Countries" option of "Country" field
		 *
		 * Doc: https://select2.org/
		 * Ref: https://jsfiddle.net/Lkkm2L48/7/
		 */
		var SelectionAdapter, DropdownAdapter;
		$.fn.select2.amd.require(
			[
				"select2/selection/single",
				"select2/selection/placeholder",
				"select2/dropdown",
				"select2/dropdown/search",
				"select2/dropdown/attachBody",
				"select2/utils",
				"select2/selection/eventRelay",
			],
			function (
				SingleSelection,
				Placeholder,
				Dropdown,
				DropdownSearch,
				AttachBody,
				Utils,
				EventRelay
			) {
				// Add placeholder which shows current number of selections
				SelectionAdapter = Utils.Decorate(SingleSelection, Placeholder);

				// Allow to flow/fire events
				SelectionAdapter = Utils.Decorate(SelectionAdapter, EventRelay);

				// Add search box in dropdown
				DropdownAdapter = Utils.Decorate(Dropdown, DropdownSearch);

				// Add attach-body in dropdown
				DropdownAdapter = Utils.Decorate(DropdownAdapter, AttachBody);

				/**
				 * Create UnSelectAll Adapter for unselect-all button
				 *
				 * Ref: http://jsbin.com/seqonozasu/1/edit?html,js,output
				 */
				function UnselectAll() {}
				UnselectAll.prototype.render = function (decorated) {
					var self = this;
					var $rendered = decorated.call(this);
					var $unSelectAllButton = $(
						'<button class="button button-secondary button-medium ur-unselect-all-countries-button" type="button">Unselect All</button>'
					);

					$unSelectAllButton.on("click", function () {
						self.$element.val([]);
						self.$element.trigger("change");
						self.trigger("close");
					});
					$rendered
						.find(".select2-dropdown")
						.prepend($unSelectAllButton);

					return $rendered;
				};

				// Add unselect all button in dropdown
				DropdownAdapter = Utils.Decorate(DropdownAdapter, UnselectAll);

				/**
				 * Create SelectAll Adapter for select-all button
				 *
				 * Ref: http://jsbin.com/seqonozasu/1/edit?html,js,output
				 */
				function SelectAll() {}
				SelectAll.prototype.render = function (decorated) {
					var self = this;
					var $rendered = decorated.call(this);
					var $selectAllButton = $(
						'<button class="button button-secondary button-medium ur-select-all-countries-button" type="button">Select All</button>'
					);

					$selectAllButton.on("click", function () {
						var $options = self.$element.find("option");
						var values = [];

						$options.each(function () {
							values.push($(this).val());
						});
						self.$element.val(values);
						self.$element.trigger("change");
						self.trigger("close");
					});
					$rendered
						.find(".select2-dropdown")
						.prepend($selectAllButton);

					return $rendered;
				};

				// Add select all button in dropdown
				DropdownAdapter = Utils.Decorate(DropdownAdapter, SelectAll);
			}
		);

		$(document).on("click", ".ur-selected-item", function () {
			$(".ur-registered-inputs")
				.find("ul li.ur-no-pointer")
				.removeClass("ur-no-pointer");
			$(".ur-selected-item").removeClass("ur-item-active");
			$(this).addClass("ur-item-active");
			render_advance_setting($(this));
			init_events();
			$(document).trigger("update_perfect_scrollbar");

			var field_key = $(this).find(".ur-field").data("field-key");

			if (
				"country" === field_key ||
				"billing_country" === field_key ||
				"shipping_country" === field_key
			) {
				/**
				 * Bind UI actions for `Selective Countries` feature
				 */
				var $selected_countries_option_field = $(
					"#ur-setting-form select.ur-settings-selected-countries"
				);
				$selected_countries_option_field
					.on("change", function (e) {
						var selected_countries_iso_s = $(this).val();
						var html = "";
						var self = this;

						// Get html of selected countries
						if (Array.isArray(selected_countries_iso_s)) {
							selected_countries_iso_s.forEach(function (iso) {
								var country_name = $(self)
									.find('option[value="' + iso + '"]')
									.html();
								html +=
									'<option value="' +
									iso +
									'">' +
									country_name +
									"</option>";
							});
						}

						// Update default_value options in `Field Options` tab
						$(
							"#ur-setting-form select.ur-settings-default-value"
						).html(html);

						// Update default_value options (hidden)
						$(
							".ur-selected-item.ur-item-active select.ur-settings-default-value"
						).html(html);
					})
					.select2({
						placeholder: "Select countries...",
						selectionAdapter: SelectionAdapter,
						dropdownAdapter: DropdownAdapter,
						templateResult: function (data) {
							if (!data.id) {
								return data.text;
							}

							return $("<div></div>")
								.text(data.text)
								.addClass("wrap");
						},
						templateSelection: function (data) {
							if (!data.id) {
								return data.text;
							}
							var length = 0;

							if ($selected_countries_option_field.val()) {
								length = $selected_countries_option_field.val()
									.length;
							}

							return "Selected " + length + " country(s)";
						},
					})
					.on("change", function (e) {
						$(".urcl-rules, .urcl-conditional-group").each(
							function () {
								var $urcl_field = $(this).find(".urcl-field")
									.length
									? $(this).find(".urcl-field")
									: $(this).find(".urcl-form-group");
								var type = $urcl_field
									.find("select option:selected")
									.data("type");

								if (
									"country" === type ||
									"billing_country" === type ||
									"shipping_country" === type
								) {
									var field_name = $urcl_field
										.find("select option:selected")
										.val();
									var selected_value = $(this)
										.find(".urcl-value select")
										.val();
									var countries = $(
										'.ur-general-setting-field-name input[value="' +
											field_name +
											'"'
									)
										.closest(".ur-selected-item")
										.find(
											".ur-advance-selected_countries select option:selected"
										);
									var options_html = [];

									$(this)
										.find(".urcl-value select")
										.html(
											'<option value="">--select--</option>'
										);
									countries.each(function () {
										var country_iso = $(this).val();
										var country_name = $(this).text();

										options_html.push(
											'<option value="' +
												country_iso +
												'">' +
												country_name +
												"</option>"
										);
									});
									$(this)
										.find(".urcl-value select")
										.append(options_html.join(""));
									$(this)
										.find(".urcl-value select")
										.val(selected_value);
									$(this)
										.find(
											'.urcl-value select option[value="' +
												selected_value +
												'"]'
										)
										.attr("selected", "selected");
								}
							}
						);
					})
					/**
					 * The following block of code is required to fix the following issue:
					 * - When the dropdown is open, if the contents of this option's container changes, for example when a different field is
					 * activated, the behaviour of input tags changes. Specifically, when pressed space key inside ANY input tag, the dropdown
					 * APPEARS.
					 *
					 * P.S. The option we're talking about is `Selective Countries` for country field.
					 */
					.on("select2:close", function (e) {
						setTimeout(function () {
							$(":focus").trigger("blur");
						}, 1);
					});
			}

			$(document.body).trigger("ur_rendered_field_options");
			$(document.body).trigger("init_tooltips");
		});
		function render_advance_setting(selected_obj) {
			var advance_setting = selected_obj
				.find(".ur-advance-setting-block")
				.clone();
			var general_setting = selected_obj
				.find(".ur-general-setting-block")
				.clone();
			var form = $("<form id='ur-setting-form'/>");
			$("#ur-tab-field-options").html("");
			form.append(general_setting);
			form.append(advance_setting);
			$("#ur-tab-field-options").append(form);
			//$('#ur-tab-field-options').append(advance_setting);
			$("#ur-tab-field-options").find(".ur-advance-setting-block").show();
			$("#ur-tab-field-options").find(".ur-general-setting-block").show();
			if ($(".ur-item-active").length === 1) {
				$(".ur-tabs").tabs("enable", 1);
				$(".ur-tabs")
					.find("a")
					.eq(1)
					.trigger("click", ["triggered_click"]);
			}
			$(".ur-options-list").sortable({
				containment: ".ur-general-setting-options",
			});
		}

		$(".ur_import_form_action_button").on("click", function () {
			var file_data = $("#jsonfile").prop("files")[0];
			var form_data = new FormData();
			form_data.append("jsonfile", file_data);
			form_data.append("action", "user_registration_import_form_action");
			form_data.append(
				"security",
				user_registration_admin_data.ur_import_form_save
			);

			$.ajax({
				url: user_registration_admin_data.ajax_url,
				dataType: "json", // what to expect back from the PHP script, if anything
				cache: false,
				contentType: false,
				processData: false,
				data: form_data,
				type: "post",
				beforeSend: function () {
					var spinner =
						'<span class="spinner is-active" style="float: left;margin-top: 6px;"></span>';
					$(".ur_import_form_action_button")
						.closest(".publishing-action")
						.append(spinner);
					$(".ur-import_notice").remove();
				},
				complete: function (response) {
					var message_string = "";

					$(".ur_import_form_action_button")
						.closest(".publishing-action")
						.find(".spinner")
						.remove();
					$(".ur-import_notice").remove();

					if (response.responseJSON.success === true) {
						message_string =
							'<div id="message" class="updated inline ur-import_notice"><p><strong>' +
							response.responseJSON.data.message +
							"</strong></p></div>";
					} else {
						message_string =
							'<div id="message" class="error inline ur-import_notice"><p><strong>' +
							response.responseJSON.data.message +
							"</strong></p></div>";
					}

					$(".ur-export-users-page").prepend(message_string);
					$("#jsonfile").val("");
					$(".user-registration-custom-selected-file").html(
						user_registration_admin_data.no_file_selected
					);
				},
			});
		});

		$(".ur_save_form_action_button").on("click", function () {
			ur_save_form();
		});

		/**
		 * For toggling quick links content.
		 */
		$(document.body).on("click", ".ur-quick-links-content", function (e) {
			e.stopPropagation();
		});
		$(document.body).on("click", ".ur-button-quick-links", function (e) {
			e.stopPropagation();
			$(".ur-quick-links-content").slideToggle();
		});
		$(document.body).on("click", function (e) {
			if (!$(".ur-quick-links-content").is(":hidden")) {
				$(".ur-quick-links-content").slideToggle();
			}
		});

		$(window).on("keydown", function (event) {
			if (event.ctrlKey || event.metaKey) {
				if ("s" === String.fromCharCode(event.which).toLowerCase()) {
					event.preventDefault();
					ur_save_form();
					return false;
				}
			}
		});
	});

	function ur_save_form() {
		var validation_response = get_validation_status();
		if (validation_response.validation_status === false) {
			show_message(validation_response.message);
			return;
		}

		var form_data = get_form_data();
		var form_row_ids = get_form_row_ids();
		var ur_form_id = $("#ur_form_id").val();
		var ur_form_id_localization = user_registration_admin_data.post_id;
		if (
			ur_parse_int(ur_form_id_localization, 0) !==
			ur_parse_int(ur_form_id, 0)
		) {
			ur_form_id = 0;
		}

		var exclude_serialize_setting_classes =
			".urcl-user-role-field, .uret-override-content-field, .ur_mailerlite_settings";

		var form_setting_data = $(
			"#ur-field-settings :not(" + exclude_serialize_setting_classes + ")"
		).serializeArray();

		var conditional_roles_settings_data = get_form_conditional_role_data();
		var email_content_override_settings_data = get_form_email_content_override_data();

		/** TODO:: Handle from multistep forms add-on if possible. */
		var multipart_page_setting = $(
			"#ur-multi-part-page-settings"
		).serializeArray();
		/** End Multistep form code. */

		var data = {
			action: "user_registration_form_save_action",
			security: user_registration_admin_data.ur_form_save,
			data: {
				form_data: JSON.stringify(form_data),
				form_row_ids: JSON.stringify(form_row_ids),
				form_name: $("#ur-form-name").val(),
				form_id: ur_form_id,
				form_setting_data: form_setting_data,
				conditional_roles_settings_data: conditional_roles_settings_data,
				email_content_override_settings_data: email_content_override_settings_data,
				multipart_page_setting: multipart_page_setting,
			},
		};

		$(document).trigger("user_registration_admin_before_form_submit", [
			data,
		]);

		$.ajax({
			url: user_registration_admin_data.ajax_url,
			data: data,
			type: "POST",
			beforeSend: function () {
				var spinner = '<span class="ur-spinner is-active"></span>';
				$(".ur_save_form_action_button").append(spinner);
				$(".ur-notices").remove();
			},
			complete: function (response) {
				$(".ur_save_form_action_button").find(".ur-spinner").remove();
				if (response.responseJSON.success === true) {
					var success_message =
						user_registration_admin_data.i18n_admin
							.i18n_form_successfully_saved;

					if (user_registration_admin_data.is_edit_form !== "1") {
						var title = "Form successfully created.";
						message_body =
							"<p>Want to create a login form as well? Check this <a target='_blank' href='https://docs.wpeverest.com/docs/user-registration/registration-form-and-login-form/how-to-show-login-form/'>link</a>. To know more about other cool features check our <a target='_blank' href='https://docs.wpeverest.com/docs/user-registration/'>docs</a>.</p>";
						Swal.fire({
							type: "success",
							title: title,
							html: message_body,
						}).then(function (value) {
							if (0 === parseInt(ur_form_id)) {
								window.location =
									user_registration_admin_data.admin_url +
									response.responseJSON.data.post_id;
							}
						});
					} else {
						show_message(success_message, "success");

						if (0 === parseInt(ur_form_id)) {
							window.location =
								user_registration_admin_data.admin_url +
								response.responseJSON.data.post_id;
						}
					}
				} else {
					var error = response.responseJSON.data.message;
					show_message(error);
				}
			},
		});
	}

	$(document).on("click", ".ur-message .ur-message-close", function () {
		$message = $(this).closest(".ur-message");
		removeMessage($message);
	});

	function show_message(message, type) {
		var $message_container = $(".ur-form-container").find(
				".ur-builder-message-container"
			),
			$admin_bar = $("#wpadminbar"),
			message_string = "";

		if (0 === $message_container.length) {
			$(".ur-form-container").append(
				'<div class="ur-builder-message-container"></div>'
			);
			$message_container = $(".ur-form-container").find(
				".ur-builder-message-container"
			);
			$message_container.css({ top: $admin_bar.height() + "px" });
		}

		if ("success" === type) {
			message_string =
				'<div class="ur-message"><div class="ur-success"><p><strong>' +
				user_registration_admin_data.i18n_admin.i18n_success +
				"! </strong>" +
				message +
				'</p><span class="dashicons dashicons-no-alt ur-message-close"></span></div></div>';
		} else {
			message_string =
				'<div class="ur-message"><div class="ur-error"><p><strong>' +
				user_registration_admin_data.i18n_admin.i18n_error +
				"! </strong>" +
				message +
				'</p><span class="dashicons dashicons-no-alt ur-message-close"></span></div></div>';
		}

		var $message = $(message_string).prependTo($message_container);
		setTimeout(function () {
			$message.addClass("entered");
		}, 50);

		setTimeout(function () {
			removeMessage($message);
		}, 2000);
	}

	function removeMessage($message) {
		$message.removeClass("entered").addClass("exiting");
		setTimeout(function () {
			$message.remove();
		}, 120);
	}

	function get_validation_status() {
		var only_one_field_index = $.makeArray(
			user_registration_admin_data.form_one_time_draggable_fields
		);
		var required_fields = $.makeArray(
			user_registration_admin_data.form_required_fields
		);
		var response = {
			validation_status: true,
			message: "",
		};
		if ($(".ur-selected-item").length === 0) {
			response.validation_status = false;
			response.message =
				user_registration_admin_data.i18n_admin.i18n_at_least_one_field_need_to_select;
			return response;
		}
		if ($("#ur-form-name").val() === "") {
			response.validation_status = false;
			response.message =
				user_registration_admin_data.i18n_admin.i18n_empty_form_name;
			return response;
		}
		if ($(".ur_save_form_action_button").find(".ur-spinner").length > 0) {
			response.validation_status = false;
			response.message =
				user_registration_admin_data.i18n_admin.i18n_previous_save_action_ongoing;
			return response;
		}
		$.each(
			$(".ur-selected-item select.ur-settings-selected-countries"),
			function () {
				var selected_countries = $(this).val();
				if (
					!selected_countries ||
					(Array.isArray(selected_countries) &&
						selected_countries.length === 0)
				) {
					response.validation_status = false;
					response.message =
						user_registration_admin_data.i18n_admin.i18n_select_countries;
					return response;
				}
			}
		);
		$.each(
			$(
				'.ur-input-grids .ur-general-setting-block input[data-field="field_name"]'
			),
			function () {
				var $field = $(this);
				var need_to_break = false;
				var field_attribute;
				try {
					var field_value = $field.val();
					var length = $(
						".ur-input-grids .ur-general-setting-block"
					).find(
						'input[data-field="field_name"][value="' +
							field_value +
							'"]'
					).length;
					if (length > 1) {
						throw user_registration_admin_data.i18n_admin
							.i18n_duplicate_field_name;
					}
					if (
						$field
							.closest(".ur-general-setting-block")
							.find('input[data-field="label"]')
							.val() === ""
					) {
						$field = $field
							.closest(".ur-general-setting-block")
							.find('input[data-field="label"]');
						throw user_registration_admin_data.i18n_admin
							.i18n_empty_field_label;
					}
					var field_regex = /[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/gm;
					var regex_result = field_value.match(field_regex);
					if (
						regex_result !== null &&
						regex_result.length === 1 &&
						regex_result[0] === field_value
					) {
					} else {
						throw user_registration_admin_data.i18n_admin
							.i18n_invald_field_name;
					}
				} catch (err) {
					response.validation_status = false;
					response.message =
						err.message === undefined ? err : err.message;
					$field.closest(".ur-selected-item").trigger("click");
					field_attribute = $field.attr("data-field");
					$("#ur-setting-form")
						.find('input[data-field="' + field_attribute + '"]')
						.css({ border: "1px solid red" });
					setTimeout(function () {
						$("#ur-setting-form")
							.find('input[data-field="' + field_attribute + '"]')
							.removeAttr("style");
					}, 2000);
					need_to_break = true;
				}
				if (need_to_break) {
					return false;
				}
			}
		);
		for (
			var single_field = 0;
			single_field < only_one_field_index.length;
			single_field++
		) {
			if (
				$(".ur-input-grids").find(
					'.ur-field[data-field-key="' +
						only_one_field_index[single_field] +
						'"]'
				).length > 1
			) {
				response.validation_status = false;
				response.message =
					user_registration_admin_data.i18n_admin
						.i18n_multiple_field_key +
					only_one_field_index[single_field];
				break;
			}
		}
		for (
			var required_index = 0;
			required_index < required_fields.length;
			required_index++
		) {
			if (
				$(".ur-input-grids").find(
					'.ur-field[data-field-key="' +
						required_fields[required_index] +
						'"]'
				).length === 0
			) {
				response.validation_status = false;

				if (required_index === 0) {
					var field =
						user_registration_admin_data.i18n_admin.i18n_user_email;
				} else if (required_index === 1) {
					var field =
						user_registration_admin_data.i18n_admin
							.i18n_user_password;
				}

				response.message =
					field +
					" " +
					user_registration_admin_data.i18n_admin
						.i18n_field_is_required;
				break;
			}
		}
		return response;
	}

	function get_form_conditional_role_data() {
		var form_data = [];
		var single_row = $(".urcl-role-logic-wrap");

		$.each(single_row, function () {
			var grid_list_item = $(this).find(".urcl-user-role-field");
			var all_field_data = [];
			var or_field_data = [];
			var assign_role = "";
			$.each(grid_list_item, function () {
				$field_key = $(this).attr("name").split("[");

				if (
					"user_registration_form_conditional_user_role" ===
					$field_key[0]
				) {
					assign_role = $(this).val();
					grid_list_item.splice($(this), 1);
				}
			});

			var conditional_group = $(this).find(".urcl-conditional-group");
			$.each(conditional_group, function () {
				var inner_conditions = [];
				var grid_list_item = $(this).find(".urcl-user-role-field");
				$.each(grid_list_item, function () {
					var conditions = {
						field_key: $(this).attr("name"),
						field_value: $(this).val(),
					};
					inner_conditions.push(conditions);
				});
				all_field_data.push(inner_conditions);
			});

			var or_groups = $(this).find(".urcl-or-groups");
			$.each(or_groups, function () {
				var conditional_or_group = $(this).find(
					".urcl-conditional-or-group"
				);
				var or_data = [];
				$.each(conditional_or_group, function () {
					var inner_or_conditions = [];
					var or_list_item = $(this).find(".urcl-user-role-field");
					$.each(or_list_item, function () {
						var or_conditions = {
							field_key: $(this).attr("name"),
							field_value: $(this).val(),
						};
						inner_or_conditions.push(or_conditions);
					});
					or_data.push(inner_or_conditions);
				});
				or_field_data.push(or_data);
			});
			var all_fields = {
				assign_role: assign_role,
				conditions: all_field_data,
				or_conditions: or_field_data,
			};
			form_data.push(all_fields);
		});
		return form_data;
	}

	function get_form_data() {
		var form_data = [];
		var single_row = $(".ur-input-grids .ur-single-row");
		$.each(single_row, function () {
			var grid_list_item = $(this).find(".ur-grid-list-item");
			var single_row_data = [];
			$.each(grid_list_item, function () {
				var grid_item = $(this);
				var grid_wise_data = get_grid_wise_data(grid_item);
				single_row_data.push(grid_wise_data);
			});

			form_data.push(single_row_data);
		});
		return form_data;
	}

	function get_form_row_ids() {
		var row_ids = [];
		var single_row = $(".ur-input-grids .ur-single-row");
		$.each(single_row, function () {
			row_ids.push($(this).attr("data-row-id"));
		});
		return row_ids;
	}

	function get_grid_wise_data($grid_item) {
		var all_field_item = $grid_item.find(".ur-selected-item");
		var all_field_data = [];
		$.each(all_field_item, function () {
			var $this_item = $(this);
			var field_key = $this_item.find(".ur-field").attr("data-field-key");
			var single_field_data = {
				field_key: field_key,
				general_setting: get_field_general_setting($this_item),
				advance_setting: get_field_advance_setting($this_item),
			};

			all_field_data.push(single_field_data);
		});
		return all_field_data;
	}

	function get_field_general_setting($single_item) {
		var general_setting_field = $single_item
			.find(".ur-general-setting-block")
			.find(".ur-general-setting-field");
		var general_setting_data = {};

		var option_values = [];
		var default_values = [];
		$.each(general_setting_field, function () {
			var is_checkbox = $(this)
				.closest(".ur-general-setting")
				.hasClass("ur-setting-checkbox");

			if ("options" === $(this).attr("data-field")) {
				var choice_value = get_ur_data($(this)).trim();
				if (
					option_values.every(function (each_value) {
						return each_value !== choice_value;
					})
				) {
					general_setting_data["options"] = option_values.push(
						choice_value
					);
					general_setting_data["options"] = option_values;
				}
			} else {
				if ("default_value" === $(this).attr("data-field")) {
					if (is_checkbox === true) {
						if ($(this).is(":checked")) {
							general_setting_data[
								"default_value"
							] = default_values.push(get_ur_data($(this)));
							general_setting_data[
								"default_value"
							] = default_values;
						}
					} else if ($(this).is(":checked")) {
						general_setting_data["default_value"] = get_ur_data(
							$(this)
						);
					}
				} else if ("html" === $(this).attr("data-field")) {
					general_setting_data[
						$(this).attr("data-field")
					] = get_ur_data($(this)).replace(/"/g, "'");
				} else {
					general_setting_data[
						$(this).attr("data-field")
					] = get_ur_data($(this));
				}
			}
		});
		return general_setting_data;
	}

	function get_field_advance_setting($single_item) {
		var advance_setting_field = $single_item
			.find(".ur-advance-setting-block")
			.find(".ur_advance_setting");
		var advance_setting_data = {};
		$.each(advance_setting_field, function () {
			advance_setting_data[
				$(this).attr("data-advance-field")
			] = get_ur_data($(this));
		});
		return advance_setting_data;
	}

	function get_ur_data($this_node) {
		var node_type = $this_node.get(0).tagName.toLowerCase();
		var value = "";

		switch (node_type) {
			case "input":
				// Check input type.
				switch ($this_node.attr("type")) {
					case "checkbox":
						if ($this_node.is(":checked")) {
							value = $this_node.val();
						}
						break;

					default:
						value = $this_node.val();
						break;
				}
				break;
			case "select":
				value = $this_node.val();
				break;
			case "textarea":
				value = $this_node.val();
				break;
			default:
		}
		return value;
	}

	function init_events() {
		var general_setting = $(".ur-general-setting-field");
		$.each(general_setting, function () {
			var $this_obj = $(this);
			switch ($this_obj.attr("data-field")) {
				case "label":
					$this_obj.on("keyup", function () {
						trigger_general_setting_label($(this));
					});
					break;
				case "field_name":
				case "max_files":
				case "input_mask":
					$this_obj.on("change", function () {
						trigger_general_setting_field_name($(this));
					});
				case "default_value":
					$this_obj.on("change", function () {
						if ("default_value" === $this_obj.attr("data-field")) {
							if (
								$this_obj
									.closest(".ur-general-setting-block")
									.hasClass("ur-general-setting-select")
							) {
								render_select_box($(this));
							} else if (
								$this_obj
									.closest(".ur-general-setting-block")
									.hasClass("ur-general-setting-radio")
							) {
								render_radio($(this));
							} else if (
								$this_obj
									.closest(".ur-general-setting-block")
									.hasClass("ur-general-setting-checkbox")
							) {
								render_check_box($(this));
							}
						}
					});
					break;
				case "options":
					$this_obj.on("keyup", function () {
						if (
							$this_obj
								.closest(".ur-general-setting-block")
								.hasClass("ur-general-setting-select") &&
							$this_obj
								.siblings('input[data-field="default_value"]')
								.is(":checked")
						) {
							render_select_box($(this));
						} else if (
							$this_obj
								.closest(".ur-general-setting-block")
								.hasClass("ur-general-setting-radio")
						) {
							render_radio($(this));
						} else if (
							$this_obj
								.closest(".ur-general-setting-block")
								.hasClass("ur-general-setting-checkbox")
						) {
							render_check_box($(this));
						}

						trigger_general_setting_options($(this));
					});
					break;
				case "placeholder":
					$this_obj.on("keyup", function () {
						trigger_general_setting_placeholder($(this));
					});
					break;
				case "required":
					$this_obj.on("change", function () {
						trigger_general_setting_required($(this));
					});
					break;
				case "hide_label":
					$this_obj.on("change", function () {
						trigger_general_setting_hide_label($(this));
					});
					break;
				case "description":
				case "html":
					$this_obj.on("keyup", function () {
						trigger_general_setting_description($(this));
					});
					break;
			}
		});
		var advance_settings = $("#ur-setting-form .ur_advance_setting");

		$(".ur-settings-enable-min-max").on("change", function () {
			if ("true" === $(this).val()) {
				$(
					".ur-item-active .ur-advance-min_date, #ur-setting-form .ur-advance-min_date"
				).show();
				$(
					".ur-item-active .ur-advance-max_date, #ur-setting-form .ur-advance-max_date"
				).show();

				$("#ur-setting-form .ur-settings-min-date")
					.addClass("flatpickr-field")
					.flatpickr({
						disableMobile: true,
						static: true,
						onChange: function (selectedDates, dateStr, instance) {
							$(".ur-item-active .ur-settings-min-date").val(
								dateStr
							);
						},
						onOpen: function (selectedDates, dateStr, instance) {
							instance.set(
								"maxDate",
								new Date(
									$(
										".ur-item-active .ur-settings-max-date"
									).val()
								)
							);
						},
					});

				$("#ur-setting-form .ur-settings-max-date")
					.addClass("flatpickr-field")
					.flatpickr({
						disableMobile: true,
						static: true,
						onChange: function (selectedDates, dateStr, instance) {
							$(".ur-item-active .ur-settings-max-date").val(
								dateStr
							);
						},
						onOpen: function (selectedDates, dateStr, instance) {
							instance.set(
								"minDate",
								new Date(
									$(
										".ur-item-active .ur-settings-min-date"
									).val()
								)
							);
						},
					});
			} else {
				$(
					".ur-item-active .ur-advance-min_date, #ur-setting-form .ur-advance-min_date"
				).hide();
				$(
					".ur-item-active .ur-advance-max_date, #ur-setting-form .ur-advance-max_date"
				).hide();
			}
		});

		$.each(advance_settings, function () {
			var $this_node = $(this);
			switch ($this_node.attr("data-advance-field")) {
				case "date_format":
					$this_node.on("change", function () {
						trigger_general_setting_date_format($(this));
					});
					break;
				case "min_date":
					if (
						"true" ===
						$(".ur-item-active")
							.find(".ur-settings-enable-min-max")
							.val()
					) {
						$(this)
							.addClass("flatpickr-field")
							.flatpickr({
								disableMobile: true,
								static: true,
								defaultDate: new Date(
									$(".ur-item-active")
										.find(".ur-settings-min-date")
										.val()
								),
								onChange: function (
									selectedDates,
									dateStr,
									instance
								) {
									$(".ur-item-active")
										.find(".ur-settings-min-date")
										.val(dateStr);
								},
								onOpen: function (
									selectedDates,
									dateStr,
									instance
								) {
									instance.set(
										"maxDate",
										new Date(
											$(".ur-item-active")
												.find(".ur-settings-max-date")
												.val()
										)
									);
								},
							});
					} else {
						$(
							".ur-item-active .ur-advance-min_date, #ur-setting-form .ur-advance-min_date"
						).hide();
					}
					break;
				case "max_date":
					if (
						"true" ===
						$(".ur-item-active")
							.find(".ur-settings-enable-min-max")
							.val()
					) {
						$(this)
							.addClass("flatpickr-field")
							.flatpickr({
								disableMobile: true,
								static: true,
								defaultDate: new Date(
									$(".ur-item-active")
										.find(".ur-settings-max-date")
										.val()
								),
								onChange: function (
									selectedDates,
									dateStr,
									instance
								) {
									$(".ur-item-active")
										.find(".ur-settings-max-date")
										.val(dateStr);
								},
								onOpen: function (
									selectedDates,
									dateStr,
									instance
								) {
									instance.set(
										"minDate",
										new Date(
											$(
												".ur-item-active .ur-settings-min-date"
											).val()
										)
									);
								},
							});
					} else {
						$(
							".ur-item-active .ur-advance-max_date, #ur-setting-form .ur-advance-max_date"
						).hide();
					}
					break;
			}
			var node_type = $this_node.get(0).tagName.toLowerCase();

			if (
				"country_advance_setting_default_value" ===
				$this_node.attr("data-id")
			) {
				$(".ur-builder-wrapper #ur-input-type-country")
					.find('option[value="' + $this_node.val() + '"]')
					.attr("selected", "selected");
			}
			var event = "change";
			switch (node_type) {
				case "input":
					event = "keyup";
					break;
				case "select":
					event = "change";
					break;
				case "textarea":
					event = "keyup";
					break;
				default:
					event = "change";
			}

			if (
				"valid_file_type" === $this_node.attr("data-advance-field") ||
				"payment_methods" === $this_node.attr("data-advance-field")
			) {
				$this_node.select2();
			}

			$(this).on(event, function () {
				trigger_advance_setting($this_node, node_type);
			});
			$(this).on("paste", function () {
				trigger_advance_setting($this_node, node_type);
			});
		});
	}

	function trigger_advance_setting($this_node, node_type) {
		var wrapper = $(".ur-selected-item.ur-item-active");
		var this_node_id = $this_node.attr("data-id");
		var hidden_node = wrapper
			.find(".ur-advance-setting-block")
			.find('[data-id="' + this_node_id + '"]');
		switch (node_type) {
			case "input":
				hidden_node.val($this_node.val());
				break;
			case "select":
				hidden_node.find("option").prop("selected", false);

				if ($this_node.prop("multiple")) {
					var selected_options = $this_node.val();
					hidden_node.val(selected_options);
				} else {
					hidden_node
						.find('option[value="' + $this_node.val() + '"]')
						.attr("selected", "selected");
				}
				break;
			case "textarea":
				hidden_node.val($this_node.val());
				render_text_area($this_node.val());
				break;
		}
	}

	function render_text_area(value) {
		var wrapper = $(".ur-selected-item.ur-item-active");
		var field_type = wrapper.find(".ur-field");
		switch (field_type.attr("data-field-key")) {
			case "select":
				render_select_box(value);
				break;
			case "checkbox":
				render_check_box(value);
				break;
			case "radio":
				render_radio(value);
				break;
		}
	}
	function render_check_box(this_node) {
		var array_value = [];
		var li_elements = this_node.closest("ul").find("li");
		var checked_index = this_node.closest("li").index();
		li_elements.each(function (index, element) {
			var value = $(element).find("input.ur-type-checkbox-label").val();
			value = value.trim();
			checkbox = $(element)
				.find("input.ur-type-checkbox-value")
				.is(":checked");

			if (
				array_value.every(function (each_value) {
					return each_value.value !== value;
				})
			) {
				array_value.push({ value: value, checkbox: checkbox });
			}
		});

		var wrapper = $(".ur-selected-item.ur-item-active");
		var checkbox = wrapper.find(".ur-field");
		checkbox.html("");

		for (var i = 0; i < array_value.length; i++) {
			if (array_value[i] !== "") {
				checkbox.append(
					'<label><input value="' +
						array_value[i].value.trim() +
						'" type="checkbox" ' +
						(array_value[i].checkbox ? "checked" : "") +
						" disabled>" +
						array_value[i].value.trim() +
						"</label>"
				);
			}
		}

		if ("checkbox" === this_node.attr("type")) {
			if (this_node.is(":checked")) {
				wrapper
					.find(
						".ur-general-setting-options li:nth(" +
							checked_index +
							') input[data-field="default_value"]'
					)
					.prop("checked", true);
			} else {
				wrapper
					.find(
						".ur-general-setting-options li:nth(" +
							checked_index +
							') input[data-field="default_value"]'
					)
					.prop("checked", false);
			}
		}
	}

	function render_radio(this_node) {
		var li_elements = this_node.closest("ul").find("li");
		var checked_index = undefined;
		var array_value = [];

		li_elements.each(function (index, element) {
			var value = $(element).find("input.ur-type-radio-label").val();
			value = value.trim();
			radio = $(element).find("input.ur-type-radio-value").is(":checked");
			// Set checked elements index value
			if (radio === true) {
				checked_index = index;
			}

			if (
				array_value.every(function (each_value) {
					return each_value.value !== value;
				})
			) {
				array_value.push({ value: value, radio: radio });
			}
		});

		var wrapper = $(".ur-selected-item.ur-item-active");
		var radio = wrapper.find(".ur-field");
		radio.html("");

		for (var i = 0; i < array_value.length; i++) {
			if (array_value[i] !== "") {
				radio.append(
					'<label><input value="' +
						array_value[i].value.trim() +
						'" type="radio" ' +
						(array_value[i].radio ? "checked" : "") +
						" disabled>" +
						array_value[i].value.trim() +
						"</label>"
				);
			}
		}

		// Loop through options in active fields general setting hidden div.
		wrapper
			.find(".ur-general-setting-options > ul.ur-options-list > li")
			.each(function (index, element) {
				var radio_input = $(element).find(
					'[data-field="default_value"]'
				);
				if (index === checked_index) {
					radio_input.prop("checked", true);
				} else {
					radio_input.prop("checked", false);
				}
			});
	}

	function render_select_box(this_node) {
		var value = this_node.val().trim();
		var wrapper = $(".ur-selected-item.ur-item-active");
		var checked_index = this_node.closest("li").index();
		var select = wrapper.find(".ur-field").find("select");

		select.html("");
		select.append("<option value='" + value + "'>" + value + "</option>");

		// Loop through options in active fields general setting hidden div.
		wrapper
			.find(".ur-general-setting-options > ul.ur-options-list > li")
			.each(function (index, element) {
				var radio_input = $(element).find(
					'[data-field="default_value"]'
				);
				if (index === checked_index) {
					radio_input.prop("checked", true);
				} else {
					radio_input.prop("checked", false);
				}
			});
	}

	function trigger_general_setting_field_name($label) {
		var wrapper = $(".ur-selected-item.ur-item-active");
		var old_field_name = wrapper
			.find(".ur-general-setting-block")
			.find('input[data-field="' + $label.attr("data-field") + '"]')
			.attr("value");
		wrapper
			.find(".ur-general-setting-block")
			.find('input[data-field="' + $label.attr("data-field") + '"]')
			.attr("value", $label.val());

		// Change Field Name of field in conditional logic options
		$(
			'[class*="urcl-settings-rules_field_"] option[value="' +
				old_field_name +
				'"]'
		).attr("value", $label.val());

		// Change Field Name of field in Form Setting Conditionally Assign User Role.
		$(
			'[class*="urcl-field-conditional-field-select"] option[value="' +
				old_field_name +
				'"]'
		).attr("value", $label.val());
	}

	function trigger_general_setting_options($label) {
		var wrapper = $(".ur-selected-item.ur-item-active");
		var index = $label.closest("li").index();
		wrapper
			.find(
				".ur-general-setting-block li:nth(" +
					index +
					') input[data-field="' +
					$label.attr("data-field") +
					'"]'
			)
			.val($label.val());
		wrapper
			.find(
				".ur-general-setting-block li:nth(" +
					index +
					') input[data-field="default_value"]'
			)
			.val($label.val());
		$label
			.closest("li")
			.find('[data-field="default_value"]')
			.val($label.val());
	}

	function trigger_general_setting_label($label) {
		var wrapper = $(".ur-selected-item.ur-item-active");
		wrapper.find(".ur-label").find("label").text($label.val());

		wrapper
			.find(".ur-general-setting-block")
			.find('input[data-field="' + $label.attr("data-field") + '"]')
			.attr("value", $label.val());

		var field_name = $(
			".ur-selected-item.ur-item-active .ur-general-setting"
		)
			.find("[data-field='field_name']")
			.val();
		// Change label of field in conditional logic options
		$(
			'[class*="urcl-settings-rules_field_"] option[value="' +
				field_name +
				'"]'
		).text($label.val());

		// Change label of field in Form Setting Conditionally Assign User Role.
		$(
			'[class*="urcl-field-conditional-field-select"] option[value="' +
				field_name +
				'"]'
		).text($label.val());
	}

	function trigger_general_setting_description($label) {
		var wrapper = $(".ur-selected-item.ur-item-active");
		wrapper
			.find(".ur-field")
			.find("textarea")
			.attr("description", $label.val());
		wrapper
			.find(".ur-general-setting-block")
			.find('textarea[data-field="' + $label.attr("data-field") + '"]')
			.val($label.val());
	}

	function trigger_general_setting_placeholder($label) {
		var wrapper = $(".ur-selected-item.ur-item-active");
		wrapper
			.find(".ur-field")
			.find("input")
			.attr("placeholder", $label.val());
		wrapper
			.find(".ur-general-setting-block")
			.find('input[data-field="' + $label.attr("data-field") + '"]')
			.val($label.val());
	}

	function trigger_general_setting_required($label) {
		var wrapper = $(".ur-selected-item.ur-item-active");
		wrapper.find(".ur-label").find("label").find("span").remove();
		if ($label.val() === "yes") {
			wrapper
				.find(".ur-label")
				.find("label")
				.append('<span style="color:red">*</span>');
		}
		wrapper
			.find(".ur-general-setting-block")
			.find('select[data-field="' + $label.attr("data-field") + '"]')
			.find('option[value="' + $label.val() + '"]')
			.attr("selected", "selected");
	}

	function trigger_general_setting_date_format($label) {
		var wrapper = $(".ur-selected-item.ur-item-active");
		wrapper
			.find(".ur-field")
			.find("input")
			.attr("placeholder", $label.val());
	}

	function trigger_general_setting_hide_label($label) {
		var wrapper = $(".ur-selected-item.ur-item-active");
		wrapper
			.find(".ur-general-setting-block")
			.find('select[data-field="' + $label.attr("data-field") + '"]')
			.find('option[value="' + $label.val() + '"]')
			.attr("selected", "selected");
	}

	function manage_required_fields() {
		var required_fields = user_registration_admin_data.form_required_fields;

		var selected_inputs = $(".ur-input-grids");

		if (Array.isArray(required_fields)) {
			for (var i = 0; i < required_fields.length; i++) {
				var field_node = selected_inputs.find(
					'.ur-field[data-field-key="' + required_fields[i] + '"]'
				);

				field_node
					.closest(".ur-selected-item")
					.find('select[data-field="required"]')
					.val("yes")
					.trigger("change");
				field_node
					.closest(".ur-selected-item")
					.find('select[data-field="required"]')
					.find('option[value="yes"]')
					.attr("selected", "selected");
				field_node
					.closest(".ur-selected-item")
					.find('select[data-field="required"]')
					.attr("disabled", "disabled");
			}
		}

		var label_node = selected_inputs
			.find('select[data-field="required"]')
			.find('option[selected="selected"][value="yes"]')
			.closest(".ur-selected-item")
			.find(".ur-label")
			.find("label");
		label_node.find("span").remove();
		label_node.append('<span style="color:red">*</span>');
	}

	function manage_draggable_users_fields() {
		var single_draggable_fields =
			user_registration_admin_data.form_one_time_draggable_fields;

		var ul_node = $("#ur-tab-registered-fields").find(
			"ul.ur-registered-list"
		);

		$.each(ul_node.find("li"), function () {
			var $this = $(this);

			var data_field_id = $(this)
				.attr("data-field-id")
				.replace("user_registration_", "");

			if ($.inArray(data_field_id, single_draggable_fields) >= 0) {
				if (
					$(".ur-input-grids").find(
						'.ur-field[data-field-key="' + data_field_id + '"]'
					).length > 0
				) {
					$this.draggable("disable");
				} else {
					$this.draggable("enable");
				}
			}
		});
	}

	function manage_conditional_field_options(populated_item) {
		$(".ur-grid-lists .ur-selected-item .ur-general-setting").each(
			function () {
				var field_label = $(this)
					.closest(".ur-selected-item")
					.find(" .ur-admin-template .ur-label label")
					.text();
				var field_key = $(this)
					.closest(".ur-selected-item")
					.find(" .ur-admin-template .ur-field")
					.data("field-key");

				//strip certain fields
				if (
					"section_title" == field_key ||
					"html" == field_key ||
					"wysiwyg" == field_key ||
					"billing_address_title" == field_key ||
					"shipping_address_title" == field_key
				) {
					return;
				}

				var field_name = $(this)
					.find("[data-field='field_name']")
					.val();
				if (typeof field_name !== "undefined") {
					var select_value_for_user_role =
						$(
							".urcl-field-conditional-field-select option[value='" +
								field_name +
								"']"
						).length > 0;
					if (select_value_for_user_role === false) {
						// Append Field in Form Setting Conditionally Assign User Role.
						$(
							'[class*="urcl-field-conditional-field-select"]'
						).append(
							'<option value ="' +
								field_name +
								'" data-type="' +
								field_key +
								'">' +
								field_label +
								" </option>"
						);
					}
					//check if option exist in the given select
					var select_value =
						$(
							".urcl-rules select.ur_advance_setting.urcl-settings-rules_field_1 option[value='" +
								field_name +
								"']"
						).length > 0;
					if (select_value === false) {
						// Append Field in Field Options
						$('[class*="urcl-settings-rules_field_"]').append(
							'<option value ="' +
								field_name +
								'" data-type="' +
								field_key +
								'">' +
								field_label +
								" </option>"
						);

						if (field_name == populated_item) {
							$(
								'.urcl-rules select.ur_advance_setting.urcl-settings-rules_field_1.empty-fields option[value="' +
									populated_item +
									'"]'
							).remove();
						}
					} else {
						$(
							".urcl-rules select.ur_advance_setting.urcl-settings-rules_field_1.empty-fields"
						).append(
							'<option value ="' +
								field_name +
								'" data-type="' +
								field_key +
								'">' +
								field_label +
								" </option>"
						);
					}
				}
			}
		);
		$(
			".urcl-rules select.ur_advance_setting.urcl-settings-rules_field_1.empty-fields"
		).removeClass("empty-fields");
	}

	function ur_math_ceil(value) {
		return Math.ceil(value, 0);
	}

	function ur_parse_int(value) {
		return parseInt(value, 0);
	}

	$(document).ready(function () {
		var date_flatpickrs = {};

		$(document.body).on("click", "#load_flatpickr", function () {
			var field_id = $(this).data("id");
			var date_flatpickr = date_flatpickrs[field_id];

			// Load a flatpicker for the field, if hasn't been loaded.
			if (!date_flatpickr) {
				var formated_date = $(this).siblings("#formated_date").val()
					? $(this).siblings("#formated_date").val()
					: $(this)
							.closest(".ur-field-item")
							.find("#formatted_date")
							.val();
				var date_selector = $(
					".ur-frontend-form #" +
						field_id +
						", #fieldset-user_registration #" +
						field_id
				)
					.attr("type", "text")
					.val(formated_date);

				$(this).attr(
					"data-date-format",
					date_selector.data("date-format")
				);
				$(this).attr("data-mode", date_selector.data("mode"));
				$(this).attr("data-min-date", date_selector.data("min-date"));
				$(this).attr("data-max-date", date_selector.data("max-date"));
				$(this).attr("data-default-date", formated_date);
				date_flatpickr = $(this).flatpickr({
					disableMobile: true,
					onChange: function (selectedDates, dateString, instance) {
						$("#" + field_id).val(dateString);
					},
					onOpen: function (selectedDates, dateStr, instance) {
						instance.set("minDate", date_selector.data("min-date"));
						instance.set("maxDate", date_selector.data("max-date"));
					},
				});
				date_flatpickrs[field_id] = date_flatpickr;
			}

			if (date_flatpickr) {
				date_flatpickr.open();
			}
		});
	});

	$(document).on("click", ".ur-toggle-heading", function () {
		if ($(this).hasClass("closed")) {
			$(this).removeClass("closed");
		} else {
			$(this).addClass("closed");
		}
		var field_list = $(this).find(" ~ .ur-registered-list")[0];
		$(field_list).slideToggle();

		// For `Field Options` section
		$(this).siblings(".ur-toggle-content").slideToggle();
	});

	$(document).on("click", ".ur-options-list .add", function (e) {
		e.preventDefault();
		var $this = $(this),
			$wrapper = $(".ur-selected-item.ur-item-active"),
			this_index = $this.parent("li").index(),
			cloning_element = $this.parent("li").clone(true, true);

		cloning_element.find('input[data-field="options"]').val("");
		cloning_element
			.find('input[data-field="default_value"]')
			.prop("checked", false);

		$this.parent("li").after(cloning_element);
		$wrapper
			.find(
				".ur-general-setting-options .ur-options-list > li:nth( " +
					this_index +
					" )"
			)
			.after(cloning_element.clone(true, true));

		if (
			$this
				.closest(".ur-general-setting-block")
				.hasClass("ur-general-setting-radio")
		) {
			render_radio($this);
		} else if (
			$this
				.closest(".ur-general-setting-block")
				.hasClass("ur-general-setting-checkbox")
		) {
			render_check_box($this);
		}
	});

	$(document).on("click", ".ur-options-list .remove", function (e) {
		e.preventDefault();
		var $this = $(this),
			$parent_ul = $(this).closest("ul");
		$any_siblings = $parent_ul.find("li");
		($wrapper = $(".ur-selected-item.ur-item-active")),
			(this_index = $this.parent("li").index());

		if ($parent_ul.find("li").length > 1) {
			$this.parent("li").remove();
			$wrapper
				.find(
					".ur-general-setting-options .ur-options-list > li:nth( " +
						this_index +
						" )"
				)
				.remove();

			if (
				$any_siblings
					.closest(".ur-general-setting-block")
					.hasClass("ur-general-setting-radio")
			) {
				render_radio($any_siblings);
			} else if (
				$any_siblings
					.closest(".ur-general-setting-block")
					.hasClass("ur-general-setting-checkbox")
			) {
				render_check_box($any_siblings);
			}
		}
	});

	$(document).on("sortstop", ".ur-options-list", function (event, ui) {
		var $this = $(this);
		ur_clone_options($this);
		if (
			$this
				.closest(".ur-general-setting-block")
				.hasClass("ur-general-setting-radio")
		) {
			render_radio($this);
		} else if (
			$this
				.closest(".ur-general-setting-block")
				.hasClass("ur-general-setting-checkbox")
		) {
			render_check_box($this);
		}
	});

	function ur_clone_options($this_obj) {
		var cloning_options = $this_obj.clone(true, true);
		var wrapper = $(".ur-selected-item.ur-item-active");
		var cloning_element = wrapper.find(
			".ur-general-setting-options .ur-options-list"
		);
		cloning_element.html("");
		cloning_element.replaceWith(cloning_options);
	}

	function get_form_email_content_override_data() {
		var specific_email_contents = {};
		var single_row = $(".user-registration-email-template-content-wrap");

		$.each(single_row, function () {
			var email_title_item = $(this).find(
				".user-registration-card__header"
			);
			var email_body_item = $(this).find(".user-registration-card__body");

			specific_email_contents[$(this).prop("id")] = {
				title: email_title_item
					.find(".user-registration-card__title ")
					.text(),
				description: email_title_item
					.find(".user-registration-help-tip")
					.data("description"),
				override: email_title_item
					.find("#uret_override_" + $(this).prop("id"))
					.hasClass("enabled")
					? 1
					: 0,
				subject: email_body_item.find(".uret_subject_input").val(),
				content: email_body_item
					.find(
						"#user_registration_" + $(this).prop("id") + "_content"
					)
					.val(),
			};
		});

		return specific_email_contents;
	}
})(jQuery, window.user_registration_admin_data);

/**
 * Set tooltips for specified elements.
 *
 * @param {String|jQuery} $elements Elements to set tooltips for.
 * @param {JSON} options Overriding options for tooltips.
 */
function ur_init_tooltips($elements, options) {
	if (undefined !== $elements && null !== $elements && "" !== $elements) {
		var args = {
			attribute: "data-tip",
			fadeIn: 50,
			fadeOut: 50,
			delay: 200,
			keepAlive: true,
		};

		if (options && "object" === typeof options) {
			Object.keys(options).forEach(function (key) {
				args[key] = options[key];
			});
		}

		if ("string" === typeof $elements) {
			jQuery($elements).tipTip(args);
		} else {
			$elements.tipTip(args);
		}
	}
}

function ur_alert(message, options) {
	if ("undefined" === typeof options) {
		options = {};
	}
	Swal.fire({
		type: "error",
		title: options.title,
		text: message,
		customClass:
			"user-registration-swal2-modal user-registration-swal2-modal--center",
	});
}

function ur_confirmation(message, options) {
	if ("undefined" === typeof options) {
		options = {};
	}
	var icon = '<i class="dashicons dashicons-trash"></i>';
	var title =
		icon +
		'<span class="user-registration-swal2-modal__title">' +
		options.title;
	Swal.fire({
		customClass:
			"user-registration-swal2-modal user-registration-swal2-modal--centered",
		title: title,
		text: message,
		showCancelButton:
			"undefined" !== typeof options.showCancelButton
				? options.showCancelButton
				: true,
		confirmButtonText:
			"undefined" !== typeof options.confirmButtonText
				? options.confirmButtonText
				: user_registration_admin_data.i18n_admin.i18n_choice_delete,
		confirmButtonColor: "#ff4149",
		cancelButtonText:
			"undefined" !== typeof options.cancelButtonText
				? options.cancelButtonText
				: user_registration_admin_data.i18n_admin.i18n_choice_cancel,
	}).then(function (result) {
		if (result.value) {
			options.confirm();
		} else {
			options.reject();
		}
	});
}


Zerion Mini Shell 1.0