PluginProbe
Master Addons for Elementor – Elementor Addons, Widgets, Mega Menu Builder, Popup Builder, Widget Builder & Template Kits / 3.1.9
Master Addons for Elementor – Elementor Addons, Widgets, Mega Menu Builder, Popup Builder, Widget Builder & Template Kits v3.1.9
3.2.2 3.2.3 3.2.1 3.2.0 3.1.9 3.1.8 3.1.7 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.9 trunk 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.3 1.1.4 1.1.5 All 174 releases
master-addons / assets / js / modules / mega-script.js

mega-script.js in Master Addons for Elementor – Elementor Addons, Widgets, Mega Menu Builder, Popup Builder, Widget Builder & Template Kits 3.1.9, at assets/js/modules/mega-script.js

457 lines 25.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function(){
2 //#region dev/js/modules/free/mega-script.js
3 jQuery(document).ready(function(e) {
4 "use strict";
5 if (!jQuery("#jltma-toaster-styles").length) jQuery("head").append("<style id=\"jltma-toaster-styles\">.jltma-toaster-container { position: fixed; bottom: 40px; left: 50%; transform: translateX(-50%); z-index: 999999; pointer-events: none; display: flex; flex-direction: column; align-items: center; gap: 12px;}.jltma-toaster { display: flex; align-items: center; gap: 14px; padding: 18px 28px; background: #fff; border-radius: 12px; box-shadow: 0 8px 32px rgba(0,0,0,0.25), 0 2px 8px rgba(0,0,0,0.15); pointer-events: auto; opacity: 0; transform: translateY(30px) scale(0.9); transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1); min-width: 350px; max-width: 550px; border: 1px solid rgba(0,0,0,0.08);}.jltma-toaster-show { opacity: 1 !important; transform: translateY(0) scale(1) !important;}.jltma-toaster .dashicons { font-size: 28px; width: 28px; height: 28px; flex-shrink: 0; display: flex; align-items: center; justify-content: center;}.jltma-toaster-success { background: linear-gradient(135deg, #5bcc7f 0%, #48bb78 100%); border-left: 5px solid #059669;}.jltma-toaster-success .dashicons { color: #fff;}.jltma-toaster-error { background: linear-gradient(135deg, #f87171 0%, #ef4444 100%); border-left: 5px solid #dc2626;}.jltma-toaster-error .dashicons { color: #fff;}.jltma-toaster-message { font-size: 15px; font-weight: 600; color: #fff; line-height: 1.5; letter-spacing: 0.01em;}</style>");
6 window.showToaster = function(message, type) {
7 type = type || "success";
8 var toasterClass = type === "success" ? "jltma-toaster-success" : "jltma-toaster-error";
9 var iconClass = type === "success" ? "dashicons-yes-alt" : "dashicons-warning";
10 var toaster = jQuery("<div class=\"jltma-toaster " + toasterClass + "\"><span class=\"dashicons " + iconClass + "\"></span><span class=\"jltma-toaster-message\">" + message + "</span></div>");
11 var container = jQuery(".jltma-toaster-container");
12 if (container.length === 0) container = jQuery("<div class=\"jltma-toaster-container\"></div>").appendTo("body");
13 container.append(toaster);
14 setTimeout(function() {
15 toaster.addClass("jltma-toaster-show");
16 }, 10);
17 setTimeout(function() {
18 toaster.removeClass("jltma-toaster-show");
19 setTimeout(function() {
20 toaster.remove();
21 }, 300);
22 }, 3e3);
23 };
24 jQuery("#jltma-menu-metabox-input-is-enabled").is(":checked");
25 var jltma_megamenu_nonce = window.jltma_megamenu_nonce, JLTMA_Mega_Menu = {
26 Enable_Mega_Menu: function() {
27 var $checkbox = jQuery("#jltma-menu-metabox-input-is-enabled");
28 var enable_megamenu = $checkbox.is(":checked") ? 1 : 0;
29 var $spinner = $checkbox.closest(".master-mega-menu-accordion").find(".spinner");
30 if (enable_megamenu) e("body").addClass("is_mega_enabled").removeClass("is_mega_disabled");
31 else e("body").removeClass("is_mega_enabled").addClass("is_mega_disabled");
32 $spinner.addClass("loading").css("visibility", "visible");
33 e.ajax({
34 url: ajaxurl,
35 type: "post",
36 data: {
37 action: "jltma_save_megamenu_options",
38 is_enabled: enable_megamenu,
39 nonce: masteraddons_megamenu.nonce
40 },
41 headers: { "X-WP-Nonce": jltma_megamenu_nonce },
42 dataType: "json"
43 }).done(function(response) {
44 $spinner.removeClass("loading").css("visibility", "hidden");
45 if (typeof response === "string") try {
46 response = JSON.parse(response);
47 } catch (e) {
48 console.error("Failed to parse response:", e);
49 if (typeof window.showToaster === "function") window.showToaster("Mega Menu settings saved successfully!", "success");
50 return;
51 }
52 if (response && response.status == "success") {
53 if (enable_megamenu) e("body").addClass("is_mega_enabled").removeClass("is_mega_disabled");
54 else e("body").removeClass("is_mega_enabled").addClass("is_mega_disabled");
55 localStorage.setItem("megamenu_enable", enable_megamenu);
56 var message = response.message || (enable_megamenu ? "Mega Menu enabled successfully!" : "Mega Menu disabled successfully!");
57 if (typeof window.showToaster === "function") window.showToaster(message, "success");
58 } else {
59 var errorMsg = response && response.message ? response.message : "Failed to save Mega Menu settings";
60 if (typeof window.showToaster === "function") window.showToaster(errorMsg, "error");
61 $checkbox.prop("checked", !enable_megamenu);
62 if (!enable_megamenu) e("body").addClass("is_mega_enabled").removeClass("is_mega_disabled");
63 else e("body").removeClass("is_mega_enabled").addClass("is_mega_disabled");
64 }
65 }).fail(function(xhr, status, error) {
66 $spinner.removeClass("loading").css("visibility", "hidden");
67 console.error("AJAX Error:", status, error);
68 if (typeof window.showToaster === "function") window.showToaster("Failed to save Mega Menu settings. Please try again.", "error");
69 $checkbox.prop("checked", !enable_megamenu);
70 if (!enable_megamenu) e("body").addClass("is_mega_enabled").removeClass("is_mega_disabled");
71 else e("body").removeClass("is_mega_enabled").addClass("is_mega_disabled");
72 });
73 return false;
74 },
75 Menu_Item_Settings_Save: function() {
76 var t = e("#jltma-menu-metabox-input-is-enabled:checked").length, n = e("#jltma-menu-metabox-input-menu-id").val(), i = e(this).parent().find(".spinner"), m = {
77 is_enabled: t,
78 menu_id: n
79 };
80 i.addClass("loading"), e.get(masteraddons_megamenu.resturl + "megamenu/save_megamenu_settings", m).done(function(e) {
81 i.removeClass("loading");
82 });
83 },
84 Menu_Item_Save: function() {
85 var t = e(this).parent().find(".spinner"), n = { settings: {
86 menu_id: e("#jltma-menu-modal-menu-id").val(),
87 menu_has_child: e("#jltma-menu-modal-menu-has-child").val(),
88 menu_enable: e("#jltma-menu-item-enable:checked").val(),
89 menu_label_enable: e("#mega-menu-hide-item-label:checked").val(),
90 menu_transition: e("#mega-menu-transition-effect").val(),
91 menu_disable_description: e("#jltma-menu-disable-description:checked").val(),
92 menu_icon: e("#jltma-menu-icon-field").val(),
93 menu_trigger_effect: e("#mega-menu-trigger-effect").val(),
94 menu_icon_color: e("#jltma-menu-icon-color-field").val(),
95 menu_badge_text: e("#jltma-menu-badge-text-field").val(),
96 menu_width_type: e("#jltma-megamenu-width-type").val(),
97 menu_width_size: e("#jltma-megamenu-width").val(),
98 menu_mobile_submenu_content_type: e("#jltma-mobile-submenu-type").val(),
99 menu_badge_color: e("#jltma-menu-badge-color-field").val(),
100 menu_badge_background: e("#jltma-menu-badge-background-field").val()
101 } };
102 t.addClass("loading"), e.ajax({
103 url: masteraddons_megamenu.resturl + "megamenu/jltma_save_menuitem_settings",
104 type: "get",
105 data: n,
106 headers: { "X-WP-Nonce": jltma_megamenu_nonce },
107 dataType: "json",
108 success: function(n) {
109 t.removeClass("loading"), e("#jltma-menu-item-settings-modal").modal("hide");
110 }
111 });
112 },
113 Menu_Trigger: function() {
114 var t = e("#jltma-menu-modal-menu-id").val(), baseUrl = masteraddons_megamenu.resturl + "mastermega-content/jltma_content_editor/megamenu/menuitem/" + t, n = baseUrl + (baseUrl.indexOf("?") !== -1 ? "&" : "?") + "_wpnonce=" + jltma_megamenu_nonce;
115 e("#jltma-menu-builder-iframe").attr("src", n);
116 }
117 };
118 e(".jltma-menu-settings-save").on("click", () => JLTMA_Mega_Menu.Menu_Item_Settings_Save(e));
119 e(".jltma-menu-item-save").on("click", function() {
120 var t = e(this).parent().find(".spinner"), n = { settings: {
121 menu_id: e("#jltma-menu-modal-menu-id").val(),
122 menu_has_child: e("#jltma-menu-modal-menu-has-child").val(),
123 menu_disable_description: e("#jltma-menu-disable-description:checked").val(),
124 menu_enable: e("#jltma-menu-item-enable:checked").val(),
125 menu_icon: e("#jltma-menu-icon-field").val(),
126 menu_trigger_effect: e("#mega-menu-trigger-effect").val(),
127 menu_icon_color: e("#jltma-menu-icon-color-field").val(),
128 menu_label_enable: e("#mega-menu-hide-item-label:checked").val(),
129 menu_transition: e("#mega-menu-transition-effect").val(),
130 menu_badge_text: e("#jltma-menu-badge-text-field").val(),
131 menu_width_type: e("#jltma-megamenu-width-type").val(),
132 menu_width_size: e("#jltma-megamenu-width").val(),
133 menu_mobile_submenu_content_type: e("#jltma-mobile-submenu-type").val(),
134 menu_badge_color: e("#jltma-menu-badge-color-field").val(),
135 menu_badge_background: e("#jltma-menu-badge-background-field").val()
136 } };
137 t.addClass("loading"), e.ajax({
138 url: masteraddons_megamenu.resturl + "megamenu/jltma_save_menuitem_settings",
139 type: "get",
140 data: n,
141 headers: { "X-WP-Nonce": jltma_megamenu_nonce },
142 dataType: "json",
143 success: function(n) {
144 t.removeClass("loading");
145 showToaster("Settings saved successfully!", "success");
146 },
147 error: function(xhr, status, error) {
148 t.removeClass("loading");
149 showToaster("Failed to save settings. Please try again.", "error");
150 }
151 });
152 }), e("#jltma-menu-builder-trigger").on("click", () => JLTMA_Mega_Menu.Menu_Trigger(e));
153 e("body").on("DOMSubtreeModified", "#menu-to-edit", function() {
154 setTimeout(function() {
155 e("#menu-to-edit li.menu-item").each(function() {
156 var t = e(this);
157 t.find(".jltma_menu_trigger").length < 1 && e(".item-title", t).append("<a data-toggle='modal' data-target='#jltma_megamenu_modal' href='#' class='jltma_menu_trigger'>Master Mega</a> ");
158 });
159 }, 200);
160 }), e("#menu-to-edit").trigger("DOMSubtreeModified"), e("#menu-to-edit").on("click", ".jltma_menu_trigger", function(n) {
161 n.preventDefault();
162 var i = e("#jltma_megamenu_modal"), m = e(this).parents("li.menu-item"), l = parseInt(m.attr("id").match(/[0-9]+/)[0], 10);
163 m.find(".menu-item-title").text(), m.attr("class").match(/\menu-item-depth-(\d+)\b/)[1];
164 if (e(".jltma_menu_control_nav > li").removeClass("active"), e(".jltma-tab-pane").removeClass("active"), 1 == e(this).parent().find(".is-submenu").is(":hidden")) {
165 var a = 0;
166 i.removeClass("jltma-menu-has-child"), e("#content_nav").addClass("active"), e("#content_tab").addClass("active");
167 } else {
168 a = 1;
169 i.addClass("jltma-menu-has-child"), e("#general_nav").addClass("active"), e("#general_tab").addClass("active show");
170 }
171 e("#jltma-menu-modal-menu-id").val(l), e("#jltma-menu-modal-menu-has-child").val(a);
172 var o = { menu_id: l };
173 e.ajax({
174 url: masteraddons_megamenu.resturl + "megamenu/get_menuitem_settings",
175 type: "get",
176 data: o,
177 headers: { "X-WP-Nonce": jltma_megamenu_nonce },
178 dataType: "json"
179 }).done(function(n) {
180 e("#jltma-menu-item-enable").prop("checked", !1), e("#mega-menu-trigger-effect").val(n.menu_trigger_effect), e("#jltma-menu-icon-color-field").val(n.menu_icon_color || "").trigger("change"), (function() {
181 var iconValue = n.menu_icon || "fas fa-chevron-down";
182 var $preview = e("#jltma-menu-icon-preview");
183 e("#jltma-menu-icon-field").val(iconValue);
184 $preview.attr("class", iconValue);
185 $preview.attr("style", "font-size: 20px; color: #fff; display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px;");
186 if (n.menu_icon) e(".jltma-icon-delete-btn").css({
187 "display": "flex",
188 "align-items": "center",
189 "justify-content": "center"
190 });
191 else e(".jltma-icon-delete-btn").css("display", "none");
192 })(), e("#mega-menu-transition-effect").val(n.menu_transition), e("#mega-menu-hide-item-label").prop("checked", !1), void 0 !== typeof n.menu_label_enable && 1 == n.menu_label_enable ? e("#mega-menu-hide-item-label").prop("checked", !0) : e("#mega-menu-hide-item-label").prop("checked", !1), e("#jltma-menu-badge-text-field").val(n.menu_badge_text), e("#jltma-megamenu-width-type").val(n.menu_width_type || "default"), e("#jltma-megamenu-width").val(n.menu_width_size || "1000px"), e("#jltma-mobile-submenu-type").val(n.menu_mobile_submenu_content_type || "builder_content"), e("#jltma-menu-disable-description").prop("checked", !1), void 0 !== typeof n.menu_disable_description && 1 == n.menu_disable_description ? e("#jltma-menu-disable-description").prop("checked", !0) : e("#jltma-menu-disable-description").prop("checked", !1), e("#jltma-menu-badge-color-field").val(n.menu_badge_color || "#6814cd").trigger("change"), e("#jltma-menu-badge-background-field").val(n.menu_badge_background || "#6814cd").trigger("change"), void 0 !== typeof n.menu_enable && 1 == n.menu_enable ? e("#jltma-menu-item-enable").prop("checked", !0) : e("#jltma-menu-item-enable").prop("checked", !1), e("#jltma-menu-item-enable").trigger("change"), n.menu_width_type == "custom_width" ? e("#jltma-megamenu-width").removeClass("hidden") : e("#jltma-megamenu-width").addClass("hidden"), setTimeout(function() {
193 i.removeClass("jltma-menu-modal-loading");
194 i.addClass("show");
195 }, 500);
196 });
197 });
198 e("#jltma-menu-item-enable").on("change", function() {
199 e(this).is(":checked") ? (e("#jltma-menu-builder-trigger").prop("disabled", !1), e("#jltma-menu-builder-wrapper").addClass("is_enabled")) : (e("#jltma-menu-item-enable").prop("checked", !1), e("#jltma-menu-builder-wrapper").removeClass("is_enabled"), e("#jltma-menu-builder-trigger").prop("disabled", !0));
200 });
201 e("#jltma-mega-menu-settings").on("change", "#jltma-menu-metabox-input-is-enabled", () => JLTMA_Mega_Menu.Enable_Mega_Menu(e));
202 e("#jltma-megamenu-width-type").on("change", function() {
203 if (this.value == "custom_width") e(this).siblings("#jltma-megamenu-width").removeClass("hidden");
204 else e(this).siblings("#jltma-megamenu-width").addClass("hidden");
205 });
206 e.ajax({
207 url: ajaxurl,
208 type: "get",
209 data: { action: "jltma_get_megamenu_options" },
210 headers: { "X-WP-Nonce": jltma_megamenu_nonce }
211 }).done(function(response) {
212 response = jQuery.parseJSON(response);
213 if (response && response.is_enabled == "1") {
214 e("body").addClass("is_mega_enabled").removeClass("is_mega_disabled");
215 localStorage.setItem("megamenu_enable", "1");
216 e("#jltma-menu-metabox-input-is-enabled").prop("checked", true);
217 } else {
218 e("body").removeClass("is_mega_enabled").addClass("is_mega_disabled");
219 localStorage.setItem("megamenu_enable", "0");
220 e("#jltma-menu-metabox-input-is-enabled").prop("checked", false);
221 }
222 });
223 jQuery(document).on("click", function(e) {
224 if (jQuery("#jltma_megamenu_modal").hasClass("show") && !jQuery(e.target).closest(".jltma-modal-dialog, .jltma_menu_trigger").length) jQuery("#jltma_megamenu_modal").removeClass("show");
225 });
226 jQuery("body").on("click", ".jltma-modal-dialog", function(e) {
227 e.stopPropagation();
228 });
229 jQuery("body").on("click", "#jltma_megamenu_modal .jltma-pop-close, #jltma_megamenu_modal .close-btn", function(e) {
230 e.preventDefault();
231 jQuery("#jltma_megamenu_modal").removeClass("show");
232 });
233 jQuery("body").on("click", "#jltma-menu-builder-trigger", function(e) {
234 jQuery("#jltma-mega-menu-builder-modal").toggleClass("show");
235 });
236 jQuery("body").on("click", "#jltma-mega-menu-builder-modal .jltma-pop-close", function(e) {
237 e.preventDefault();
238 jQuery("#jltma-mega-menu-builder-modal").removeClass("show");
239 });
240 jQuery(document).on("keydown", function(e) {
241 if (e.key === "Escape" || e.keyCode === 27) {
242 if (jQuery("#jltma_megamenu_modal").hasClass("show")) jQuery("#jltma_megamenu_modal").removeClass("show");
243 if (jQuery("#jltma-mega-menu-builder-modal").hasClass("show")) jQuery("#jltma-mega-menu-builder-modal").removeClass("show");
244 }
245 });
246 jQuery(".jltma-tab-content > div").hide();
247 jQuery(".jltma-tab-content > div:first-of-type").show();
248 jQuery(".jltma-tabs a").click(function(e) {
249 e.preventDefault();
250 var jQuerythis = jQuery(this), tabgroup = "#" + jQuerythis.parents(".jltma-tabs").data("jltma-tab-content"), others = jQuerythis.closest("li").siblings().children("a"), target = jQuerythis.attr("href");
251 others.removeClass("active");
252 jQuerythis.addClass("active");
253 jQuery(tabgroup).children("div").hide();
254 jQuery(target).show();
255 jQuery(target).siblings().hide();
256 });
257 function initModernIconPicker() {
258 var _masteraddons_megamen;
259 var iconLibraryConfig = ((_masteraddons_megamen = masteraddons_megamenu) === null || _masteraddons_megamen === void 0 ? void 0 : _masteraddons_megamen.iconLibrary) || {};
260 var allIcons = [];
261 var sidebarList = [];
262 sidebarList.push({
263 title: "All Icons",
264 "list-icon": "dashicons dashicons-marker",
265 "library-id": "all"
266 });
267 Object.entries(iconLibraryConfig).forEach(function([libraryName, libraryData]) {
268 Object.entries(libraryData).forEach(function([categoryName, categoryData]) {
269 var iconTitle = categoryName !== "" ? libraryName + " - " + categoryName : libraryName;
270 sidebarList.push({
271 title: iconTitle,
272 "list-icon": categoryData["list-icon"] || "",
273 "library-id": categoryData["icon-style"] || "all"
274 });
275 if (categoryData.icons && Array.isArray(categoryData.icons)) categoryData.icons.forEach(function(iconName) {
276 var fullClass = categoryData.prefix + iconName;
277 allIcons.push({
278 class: fullClass,
279 name: iconName,
280 library: categoryData["icon-style"],
281 prefix: categoryData.prefix
282 });
283 });
284 });
285 });
286 jQuery(document).on("click", ".jltma-icon-delete-btn", function(e) {
287 e.preventDefault();
288 e.stopPropagation();
289 console.log("=== DELETE ICON CLICKED ===");
290 var $deleteBtn = jQuery(this);
291 var $wrapper = $deleteBtn.closest(".jltma-modern-icon-picker-wrapper");
292 var $input = $wrapper.find(".icon-picker-input");
293 var $preview = jQuery("#jltma-menu-icon-preview");
294 var $button = $wrapper.find(".icon-picker");
295 console.log("Found elements:", {
296 preview: $preview.length,
297 input: $input.length,
298 button: $button.length
299 });
300 console.log("BEFORE - Preview state:", {
301 class: $preview.attr("class"),
302 style: $preview.attr("style"),
303 display: $preview.css("display"),
304 element: $preview[0]
305 });
306 $input.val("");
307 console.log("Input cleared, value:", $input.val());
308 $preview.attr("class", "");
309 $preview.attr("style", "font-size: 24px; color: #fff; display: none !important;");
310 $preview.hide();
311 jQuery("#jltma-icon-preview-box").css("border-color", "#2d3748");
312 console.log("AFTER - Preview state:", {
313 class: $preview.attr("class"),
314 style: $preview.attr("style"),
315 display: $preview.css("display"),
316 element: $preview[0]
317 });
318 $deleteBtn.hide();
319 $button.removeClass("has-icon");
320 console.log("=== DELETE COMPLETE ===");
321 });
322 jQuery(document).on("click", ".icon-picker", function(e) {
323 var _masteraddons_megamen2;
324 e.preventDefault();
325 e.stopPropagation();
326 console.log("Icon picker clicked");
327 var $button = jQuery(this);
328 var $wrapper = $button.closest(".jltma-modern-icon-picker-wrapper");
329 var $input = $wrapper.find(".icon-picker-input");
330 $wrapper.find("#jltma-menu-icon-preview");
331 var $deleteBtn = $wrapper.find(".jltma-icon-delete-btn");
332 var currentIcon = $input.val();
333 console.log("Icon picker data:", {
334 allIconsCount: allIcons.length,
335 currentIcon,
336 hasIconLibrary: !!((_masteraddons_megamen2 = masteraddons_megamenu) === null || _masteraddons_megamen2 === void 0 ? void 0 : _masteraddons_megamen2.iconLibrary)
337 });
338 if (allIcons.length === 0) {
339 alert("Icon library not loaded. Please refresh the page.");
340 return;
341 }
342 showModernIconPickerModal(currentIcon, function(selectedIcon) {
343 $input.val(selectedIcon);
344 var $iconPreview = jQuery("#jltma-menu-icon-preview");
345 $iconPreview.attr("class", selectedIcon);
346 $iconPreview.attr("style", "font-size: 24px; color: #fff; display: block;");
347 if ($deleteBtn.length > 0) $deleteBtn.css({
348 "display": "flex",
349 "align-items": "center",
350 "justify-content": "center"
351 });
352 $button.addClass("has-icon");
353 console.log("Icon selected:", selectedIcon);
354 });
355 });
356 function showModernIconPickerModal(currentIcon, onSelect) {
357 var activeLibrary = "all";
358 var searchTerm = "";
359 var selectedIcon = currentIcon || "";
360 if (currentIcon) {
361 var currentIconData = allIcons.find(function(icon) {
362 return icon.class === currentIcon;
363 });
364 if (currentIconData) activeLibrary = currentIconData.library;
365 }
366 var modalHtml = "<div class=\"aim-modal aim-open jltma-megamenu-icon-modal\"><div class=\"aim-modal--content\"><div class=\"aim-modal--header\"><div class=\"aim-modal--header-logo-area\"><span class=\"aim-modal--header-logo-title\"><img src=\"" + masteraddons_megamenu.pluginUrl + "/assets/images/logo.svg\" alt=\"Master Addons\" style=\"width: 24px; height: 24px; margin-right: 8px;\" />Master Addons Icon Picker</span></div><div class=\"aim-modal--header-close-btn\"><span class=\"dashicons dashicons-no-alt\" title=\"Close\"></span></div></div><div class=\"aim-modal--body\"><div class=\"aim-modal--sidebar\"><div class=\"aim-modal--sidebar-tabs\">" + sidebarList.map(function(item, index) {
367 var isActive = activeLibrary === item["library-id"] ? "aesthetic-active" : "";
368 var icon = item["list-icon"] ? "<i class=\"" + item["list-icon"] + "\"></i>" : "";
369 return "<div class=\"aim-modal--sidebar-tab-item " + isActive + "\" data-library-id=\"" + item["library-id"] + "\">" + icon + item.title + "</div>";
370 }).join("") + "</div></div><div class=\"aim-modal--icon-preview-wrap\"><div class=\"aim-modal--icon-search\"><input type=\"text\" placeholder=\"Filter by name...\" class=\"jltma-icon-search-input\" /><i class=\"dashicons dashicons-search\"></i></div><div class=\"aim-modal--icon-preview-inner\"><div id=\"aim-modal--icon-preview\"></div></div></div></div><div class=\"aim-modal--footer\"><button class=\"aim-insert-icon-button\" type=\"button\">Insert</button></div></div></div>";
371 var $modal = jQuery(modalHtml);
372 jQuery("body").append($modal);
373 function renderIcons() {
374 var iconsHtml = allIcons.filter(function(icon) {
375 var matchesSearch = searchTerm === "" || icon.name.toLowerCase().includes(searchTerm.toLowerCase());
376 var matchesLibrary = activeLibrary === "all" || icon.library === activeLibrary;
377 return matchesSearch && matchesLibrary;
378 }).map(function(icon) {
379 var isSelected = selectedIcon === icon.class ? "aesthetic-selected" : "";
380 var displayName = icon.name.replace(/-/g, " ");
381 return "<div class=\"aim-icon-item " + isSelected + "\" data-icon-class=\"" + icon.class + "\"><div class=\"aim-icon-item-inner\"><i class=\"" + icon.class + "\"></i><div class=\"aim-icon-item-name\" title=\"" + icon.name + "\">" + displayName + "</div></div></div>";
382 }).join("");
383 $modal.find("#aim-modal--icon-preview").html(iconsHtml);
384 }
385 renderIcons();
386 $modal.find(".aim-modal--header-close-btn, .aim-modal").on("click", function(e) {
387 if (e.target === this) $modal.remove();
388 });
389 $modal.find(".aim-modal--content").on("click", function(e) {
390 e.stopPropagation();
391 });
392 $modal.find(".aim-modal--sidebar-tab-item").on("click", function() {
393 activeLibrary = jQuery(this).data("library-id");
394 $modal.find(".aim-modal--sidebar-tab-item").removeClass("aesthetic-active");
395 jQuery(this).addClass("aesthetic-active");
396 renderIcons();
397 });
398 $modal.find(".jltma-icon-search-input").on("input", function() {
399 searchTerm = jQuery(this).val();
400 renderIcons();
401 });
402 $modal.on("click", ".aim-icon-item", function() {
403 selectedIcon = jQuery(this).data("icon-class");
404 $modal.find(".aim-icon-item").removeClass("aesthetic-selected");
405 jQuery(this).addClass("aesthetic-selected");
406 });
407 $modal.find(".aim-insert-icon-button").on("click", function() {
408 if (selectedIcon) onSelect(selectedIcon);
409 $modal.remove();
410 });
411 }
412 }
413 initModernIconPicker();
414 jQuery(document).on("click", ".jltma-color-preview", function() {
415 jQuery(this).siblings(".jltma-color-native").click();
416 });
417 jQuery(document).on("input change", ".jltma-color-native", function() {
418 var color = jQuery(this).val();
419 var $picker = jQuery(this).closest(".jltma-modern-color-picker");
420 var inputId = $picker.attr("data-input-id");
421 $picker.find(".jltma-color-preview").css("background-color", color);
422 $picker.find(".jltma-color-input").val(color);
423 jQuery("#" + inputId).val(color).trigger("change");
424 });
425 jQuery(document).on("input change", ".jltma-color-input", function() {
426 var color = jQuery(this).val();
427 var $picker = jQuery(this).closest(".jltma-modern-color-picker");
428 var inputId = $picker.attr("data-input-id");
429 if (/^#[0-9A-F]{6}$/i.test(color) || /^#[0-9A-F]{3}$/i.test(color)) {
430 $picker.find(".jltma-color-preview").css("background-color", color);
431 $picker.find(".jltma-color-native").val(color);
432 jQuery("#" + inputId).val(color).trigger("change");
433 }
434 });
435 jQuery(document).on("click", ".jltma-color-clear", function() {
436 var $picker = jQuery(this).closest(".jltma-modern-color-picker");
437 var inputId = $picker.attr("data-input-id");
438 $picker.find(".jltma-color-preview").css("background-color", "");
439 $picker.find(".jltma-color-input").val("");
440 $picker.find(".jltma-color-native").val("#000000");
441 jQuery("#" + inputId).val("").trigger("change");
442 });
443 jQuery(document).on("change", ".jltma-menu-wpcolor-picker", function() {
444 var $hiddenInput = jQuery(this);
445 var color = $hiddenInput.val();
446 var inputId = $hiddenInput.attr("id");
447 var $picker = jQuery(".jltma-modern-color-picker[data-input-id=\"" + inputId + "\"]");
448 if ($picker.length > 0 && color) {
449 $picker.find(".jltma-color-preview").css("background-color", color);
450 $picker.find(".jltma-color-input").val(color);
451 $picker.find(".jltma-color-native").val(color);
452 }
453 });
454 });
455 //#endregion
456 })();
457