PluginProbe
Easy Elements for Elementor – Addons & Website Templates / 1.3.2
Easy Elements for Elementor – Addons & Website Templates v1.3.2
1.5.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.6 1.4.7 1.4.8 1.4.5 1.4.4 1.4.3 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 All 47 releases
easy-elements / assets / js / admin.js

admin.js in Easy Elements for Elementor – Addons & Website Templates 1.3.2, at assets/js/admin.js

877 lines 33.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function($) {
2 'use strict';
3
4 var EasyElementsAdmin = {
5
6 init: function() {
7 this.initWidgetToggles();
8 this.initSearchFunctionality();
9 this.initBulkActions();
10 this.initAllExtensions();
11 this.easyEltab();
12 this.easyElFilter();
13 this.easyelVideoPopuo();
14 this.easyelFaq();
15 this.initSettings();
16 this.EasyelWidgetGroupEnable();
17 },
18
19 initWidgetToggles: function() {
20
21 $('.easy-widget-item.easyel-pro-enable .widget-toggle-checkbox').each(function() {
22 $(this).prop('checked', false).prop('disabled', true);
23 });
24
25
26 $('.widget-toggle-checkbox').on('change', function () {
27
28 var checkbox = $(this);
29 var widgetItem = checkbox.closest('.easy-widget-item');
30 var mainWrap = $('.easyel-plugin-main-settings-page');
31 var indicator = mainWrap.find('.easyel-saving-indicator');
32
33 if (widgetItem.hasClass('easyel-pro-enable')) {
34 checkbox.prop('checked', false).prop('disabled', true);
35 return false;
36 }
37
38 var widgetKey = checkbox.data('widget-key');
39 var status = checkbox.is(':checked') ? '1' : '0';
40
41 if (!widgetKey) return;
42
43 indicator.text('Saving...');
44 mainWrap.addClass('is-saving');
45
46 $.ajax({
47 url: ajaxurl,
48 type: 'POST',
49 data: {
50 action: 'easy_elements_save_widget_setting',
51 widget_key: widgetKey,
52 status: status,
53 nonce: easyElementsData.widget_settings_nonce
54 },
55
56 success: function (response) {
57
58 if (response.success) {
59
60 indicator.text('Saved');
61
62 setTimeout(function () {
63 mainWrap.removeClass('is-saving');
64 indicator.text('Saving...');
65 }, 500 );
66
67 } else {
68 mainWrap.removeClass('is-saving');
69 checkbox.prop('checked', !checkbox.is(':checked'));
70 }
71 },
72
73 error: function () {
74 mainWrap.removeClass('is-saving');
75 checkbox.prop('checked', !checkbox.is(':checked'));
76 }
77 });
78 });
79
80
81
82
83 },
84
85 initSearchFunctionality: function() {
86
87 function hideEmptyGroups() {
88 $('.easyel-widgets-grid').each(function () {
89 var wrapper = $(this);
90 var items = wrapper.find('.easy-widget-item');
91
92 var visibleItems = items.filter(function () {
93 return $(this).css('display') !== 'none';
94 }).length;
95
96 var headingGroup = wrapper.prev('.easyel-widget-heading-group');
97
98 if (visibleItems === 0) {
99 headingGroup.hide();
100 wrapper.hide();
101 } else {
102 headingGroup.show();
103 wrapper.show();
104 }
105 });
106 }
107
108 $('#element-search').on('input', function() {
109 var searchTerm = $(this).val().toLowerCase();
110
111 $('.easy-widget-item').each(function() {
112 var widgetTitle = $(this).find('.widget-header strong').text().toLowerCase();
113 var widgetDesc = $(this).find('.widget-description').text().toLowerCase();
114
115 if (widgetTitle.includes(searchTerm) || widgetDesc.includes(searchTerm)) {
116 $(this).show();
117 } else {
118 $(this).hide();
119 }
120 });
121
122 hideEmptyGroups();
123 });
124
125 hideEmptyGroups();
126 },
127
128
129 initBulkActions: function() {
130 $('#activate-all-btn').on('click', function() {
131 var currentTab = $('.easyel-nav-tab-active').data('tab');
132 EasyElementsAdmin.performBulkAction('activate_all', currentTab);
133 });
134
135 $('#deactivate-all-btn').on('click', function() {
136 EasyElementsAdmin.performBulkAction('deactivate_all');
137 });
138 },
139
140 performBulkAction: function(action) {
141
142 var currentTab = $('.easyel-nav-tab-active').data('tab');
143 var currentFilter = $('.easyel-action-btn.active').data('filter');
144 var btn = action === 'activate_all' ? $('#activate-all-btn') : $('#deactivate-all-btn');
145 var originalText = btn.text();
146
147 let mainWrap = $('.easyel-plugin-main-settings-page');
148 let indicator = mainWrap.find('.easyel-saving-indicator');
149
150 btn.prop('disabled', true).text(easyElementsData.strings.processing);
151
152 indicator.text('Saving...');
153 mainWrap.addClass('is-saving');
154
155 $.post(ajaxurl, {
156 action: 'easy_elements_bulk_action',
157 bulk_action: action,
158 tab: currentTab,
159 filter: currentFilter,
160 nonce: easyElementsData.bulk_action_nonce
161 })
162 .done(function(response) {
163
164 if (response.success) {
165
166 $('.widget-toggle-checkbox').each(function() {
167 var $checkbox = $(this);
168 let item = $checkbox.closest('.easy-widget-item');
169
170 if ($checkbox.data('tab') !== currentTab) {
171 return;
172 }
173
174 let isProWidget = item.hasClass('easyel-pro-widget');
175
176 if (currentFilter === 'easyel_free' && isProWidget) {
177 return;
178 }
179
180 if (currentFilter === 'easyel_pro' && !isProWidget) {
181 return;
182 }
183
184 if (isProWidget && !response.data.is_pro_active) {
185 $checkbox.prop('checked', false).prop('disabled', true);
186 } else {
187 $checkbox.prop('checked', action === 'activate_all');
188 $checkbox.prop('disabled', false);
189 }
190
191 });
192
193 $('.easyel-group-toggle-widget').each(function() {
194 let groupCheckbox = $(this);
195 let groupSlug = groupCheckbox.data('group');
196 let groupWrapper = $('.easyel-widgets-grid[data-group="' + groupSlug + '"]');
197
198 let allChecked = true;
199 groupWrapper.find('.widget-toggle-checkbox').each(function() {
200 if (!$(this).prop('checked') && !$(this).closest('.easyel-widget-item').hasClass('easyel-pro-enable')) {
201 allChecked = false;
202 return false;
203 }
204 });
205
206 groupCheckbox.prop('checked', allChecked);
207 groupCheckbox.closest('.easyel-toggle-switch-widget').find('.easyel-enable-all-widget').text(allChecked ? 'Disable All' : 'Enable All');
208 });
209
210 indicator.text('Saved');
211
212 setTimeout(function() {
213 mainWrap.removeClass('is-saving');
214 indicator.text('Saving...');
215 }, 700);
216 }
217 })
218 .fail(function() {
219 // Error fallback
220 mainWrap.removeClass('is-saving');
221 })
222 .always(function() {
223 btn.prop('disabled', false).text(originalText);
224 });
225 },
226
227 EasyelWidgetGroupEnable: function() {
228
229 function EasyupdateEnableAllText2(groupCheckbox, groupWrapper) {
230 let allChecked = true;
231 groupWrapper.find('.widget-toggle-checkbox').each(function() {
232 if (!$(this).prop('checked') && !$(this).closest('.easyel-widget-item').hasClass('easyel-pro-enable')) {
233 allChecked = false;
234 return false;
235 }
236 });
237
238 let textSpan = groupCheckbox.closest('.easyel-toggle-switch-widget').find('.easyel-enable-all-widget');
239
240 textSpan.text(allChecked ? 'Disable All' : 'Enable All');
241 groupCheckbox.prop('checked', allChecked);
242 }
243
244 let groupTabEnable = $(".easyel-tab-panel.widget");
245
246 groupTabEnable.find('.easyel-group-toggle-widget').each(function() {
247 let groupCheckbox = $(this);
248 let groupSlug = groupCheckbox.data('group');
249 let groupWrapper = $('.easyel-widgets-grid[data-group="' + groupSlug + '"]');
250
251 EasyupdateEnableAllText2(groupCheckbox, groupWrapper);
252 });
253
254 groupTabEnable.on('change', '.easyel-group-toggle-widget', function () {
255
256 let groupCheckbox = $(this);
257 let groupSlug = groupCheckbox.data('group');
258 let groupWrapper = $('.easyel-widgets-grid[data-group="' + groupSlug + '"]');
259 let hiddenField = $('input.easyel-group-hidden[name="easy_element_group_' + groupSlug + '"]');
260
261 let status = groupCheckbox.is(':checked') ? 1 : 0;
262
263 groupWrapper.find('.widget-toggle-checkbox').each(function () {
264 let checkbox = $(this);
265 if (checkbox.closest('.easyel-widget-item').hasClass('easyel-pro-enable')) return;
266 checkbox.prop('checked', status === 1);
267 });
268
269 hiddenField.val(status);
270
271 EasyupdateEnableAllText2( groupCheckbox, groupWrapper );
272
273 let keys = [];
274 groupWrapper.find('.widget-toggle-checkbox').each(function() { keys.push($(this).data('key')); });
275 if (keys.length) {
276 $.post(ajaxurl, {
277 action: 'easy_elements_bulk_group_action',
278 group: groupSlug,
279 status: status,
280 nonce: easyElementsData.bulk_action_nonce
281 });
282 }
283 });
284
285 },
286
287 initAllExtensions: function() {
288 let $extensionsTab = $('.easyel-tab-panel.extensions');
289
290 $('.easyel-extension-toggle').on('change', function () {
291 let checkbox = $(this);
292 let key = checkbox.data('key');
293 let tab = checkbox.data('tab');
294 let status = checkbox.is(':checked') ? 1 : 0;
295
296 let mainWrap = $('.easyel-plugin-main-settings-page');
297 let indicator = mainWrap.find('.easyel-saving-indicator');
298
299 indicator.text('Saving...');
300 mainWrap.addClass('is-saving');
301
302 const featureWidgetMap = {
303 enable_megamenu_builder: 'mega_menu_widget'
304 };
305
306
307 $.post(ajaxurl, {
308 action: 'easy_elements_save_global_extensions',
309 tab: tab,
310 key: key,
311 status: status,
312 nonce: easyElementsData.widget_settings_nonce
313 })
314 .done(function(response) {
315 if (response.success) {
316 indicator.text('Saved');
317
318 if (featureWidgetMap[key]) {
319 const widgetKey = featureWidgetMap[key];
320 const widgetEl = $('.easy-widget-item[data-widget-key="' + widgetKey + '"]');
321
322 if (status === 0) {
323
324 widgetEl.slideUp(200, function () {
325 $(this).remove();
326 });
327 } else {
328 indicator.text('Reloading…');
329
330 setTimeout(function () {
331 location.reload();
332 }, 300);
333 }
334 }
335
336
337 } else {
338 indicator.text('Failed');
339 checkbox.prop('checked', !checkbox.is(':checked'));
340 }
341
342 setTimeout(function() {
343 mainWrap.removeClass('is-saving');
344 indicator.text('Saving...');
345 }, 500);
346 })
347 .fail(function () {
348 mainWrap.removeClass('is-saving');
349 checkbox.prop('checked', !checkbox.is(':checked'));
350 });
351 });
352
353 function EasyupdateEnableAllText(groupCheckbox) {
354 let status = groupCheckbox.is(':checked') ? 1 : 0;
355 let label = groupCheckbox.closest('.easyel-toggle-switch-extension');
356 let textSpan = label.find('.easyel-enable-all');
357
358 if (status === 1) {
359 textSpan.text('Disable All');
360 } else {
361 textSpan.text('Enable All');
362 }
363 }
364
365 $extensionsTab.find('.easyel-group-toggle').each(function() {
366 EasyupdateEnableAllText($(this));
367 });
368
369 $extensionsTab.on('change', '.easyel-group-toggle', function () {
370 let groupCheckbox = $(this);
371 let groupSlug = groupCheckbox.data('group');
372 let groupWrapper = $('.easyel-extension-wrapper[data-group="' + groupSlug + '"]');
373 let hiddenField = $('input.easyel-group-hidden[name="easy_element_group_' + groupSlug + '"]');
374
375 let status = groupCheckbox.is(':checked') ? 1 : 0;
376
377 EasyupdateEnableAllText(groupCheckbox);
378
379
380 groupWrapper.find('.easyel-extension-toggle').each(function () {
381 let checkbox = $(this);
382 if (checkbox.closest('.easyel-extension-item').hasClass('easyel-pro-enable')) return;
383 checkbox.prop('checked', status === 1);
384 });
385
386 hiddenField.val(status);
387
388 let mainWrap = $('.easyel-plugin-main-settings-page');
389 let indicator = mainWrap.find('.easyel-saving-indicator');
390
391 indicator.text('Saving...');
392 mainWrap.addClass('is-saving');
393
394 let keys = [];
395 groupWrapper.find('.easyel-extension-toggle').each(function() { keys.push($(this).data('key')); });
396 if (keys.length) {
397 $.post(ajaxurl, {
398 action: 'easy_elements_save_global_extensions_bulk',
399 tab: 'extensions',
400 keys: keys,
401 status: status,
402 group: groupSlug,
403 nonce: easyElementsData.widget_settings_nonce
404 }).done(function(response) {
405 if (response.success) {
406 indicator.text('Saved');
407 } else {
408 indicator.text('Failed');
409 }
410
411 setTimeout(function() {
412 mainWrap.removeClass('is-saving');
413 indicator.text('Saving...');
414 }, 500 );
415 })
416 .fail(function() {
417 indicator.text('Failed');
418 setTimeout(function() {
419 mainWrap.removeClass('is-saving');
420 indicator.text('Saving...');
421 }, 700);
422 });
423 }
424 else {
425 setTimeout(function() {
426 mainWrap.removeClass('is-saving');
427 indicator.text('Saving...');
428 }, 500);
429 }
430 });
431 },
432
433 easyEltab: function() {
434 $('#toplevel_page_easy-elements-dashboard ul.wp-submenu a').on('click', function (e) {
435 const href = $(this).attr('href');
436 const isDashboardPage = window.location.href.includes('page=easy-elements-dashboard');
437
438 if (isDashboardPage && href.includes('#')) {
439 e.preventDefault();
440
441 let tab = 'overview';
442 if (href.includes('#widget')) tab = 'widget';
443 if (href.includes('#extensions')) tab = 'extensions';
444 if (href.includes('#activate_license')) tab = 'activate_license';
445
446 activateTab(tab);
447 history.replaceState(null, null, '#' + tab);
448 }
449 });
450
451 let hash = window.location.hash.substring(1);
452 if (hash) activateTab(hash);
453 else activateTab('overview');
454
455 $('.easyel-nav-tab').click(function (e) {
456 const tab = $(this).data('tab');
457
458 e.preventDefault();
459 activateTab(tab);
460 history.replaceState(null, null, '#' + tab);
461 });
462
463 function activateTab(tab) {
464 $('.easyel-nav-tab').removeClass('easyel-nav-tab-active');
465 $('.easyel-nav-tab[data-tab="' + tab + '"]').addClass('easyel-nav-tab-active');
466 $('.easyel-tab-panel').hide();
467 $('#tab-' + tab).show();
468 $('#toplevel_page_easy-elements-dashboard ul.wp-submenu li').removeClass('current');
469 $('#toplevel_page_easy-elements-dashboard ul.wp-submenu a[href*="#' + tab + '"]').parent().addClass('current');
470 }
471 },
472
473 easyElFilter: function() {
474 $(".easyel-action-btn").on("click", function() {
475 var filter = $(this).data("filter");
476 $(".easyel-action-btn").removeClass("active");
477 $(this).addClass("active");
478
479 $(".easy-widget-item,.easyel-extension-item").each(function() {
480 var $widget = $(this);
481
482 if (filter === "easyel_all") $widget.show();
483 else if (filter === "easyel_free") {
484 if ($widget.hasClass("easyel-pro-widget")) $widget.hide();
485 else $widget.show();
486 } else if (filter === "easyel_pro") {
487 if ($widget.hasClass("easyel-pro-widget")) $widget.show();
488 else $widget.hide();
489 }
490 });
491 });
492 },
493
494 easyelVideoPopuo: function() {
495 if ($(".easyel-video-popup").length ) {
496 var $popup = $('#easyel-popup-video-area'),
497 $videoContainer = $popup.find('.easyel-popup-video');
498
499 $('.easyel-video-popup').on('click', function(e){
500 e.preventDefault();
501 var videoId = $(this).attr('href').split('v=')[1].split('&')[0];
502 $videoContainer.html('<iframe src="https://www.youtube.com/embed/' + videoId + '?autoplay=1" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>');
503 $popup.fadeIn();
504 });
505
506 $popup.on('click', '.easyel-popup-close, #easyel-popup-video-area', function(e){
507 if($(e.target).is('.easyel-popup-close') || $(e.target).is('#easyel-popup-video-area')){
508 $popup.fadeOut();
509 $videoContainer.html('');
510 }
511 });
512 };
513 },
514
515 easyelFaq: function() {
516 if ($(".easyel-faq-item").length ) {
517 $(".easyel-faq-item.active").find(".easyel-faq-item-content").show();
518 $(".easyel-faq-item-heading").click(function(){
519 var faqItem = $(this).closest(".easyel-faq-item");
520 var content = faqItem.children(".easyel-faq-item-content");
521
522 if(faqItem.hasClass("active")){
523 faqItem.removeClass("active");
524 content.slideUp(300);
525 } else {
526 $(".easyel-faq-item.active").removeClass("active").children(".easyel-faq-item-content").slideUp(300);
527 faqItem.addClass("active");
528 content.slideDown(300);
529 }
530 });
531 };
532 },
533
534 easyel_notify: function(message, type = 'success', duration = 3000) {
535 const toast = document.createElement('div');
536 toast.className = `easyel-toast ${type}`;
537 toast.innerText = message;
538
539 document.body.appendChild(toast);
540
541 // Show animation
542 setTimeout(() => toast.classList.add('show'), 50);
543
544 // Auto remove after duration
545 setTimeout(() => {
546 toast.classList.remove('show');
547 setTimeout(() => toast.remove(), 300);
548 }, duration);
549 },
550
551 initSettings: function() {
552 $('#easyel-settings-save').click(function (e) {
553 e.preventDefault();
554
555 let dataArr = $('#easyel-settings-form').serializeArray();
556 let settings = {};
557
558 dataArr.forEach(field => {
559 let name = field.name;
560 let value = field.value;
561
562 // Detect nested name e.g. fb_config[page_id]
563 if (name.includes('[')) {
564 let mainKey = name.split('[')[0]; // fb_config
565 let subKey = name.match(/\[(.*?)\]/)[1]; // page_id
566
567 if (!settings[mainKey]) settings[mainKey] = {}; // init object
568 settings[mainKey][subKey] = value; // assign value
569 } else {
570 // simple field (no nested)
571 settings[name] = value;
572 }
573 });
574
575 $.ajax({
576 url: ajaxurl,
577 type: "POST",
578 data: {
579 action: "easyel_save_user_data",
580 security: easyElementsData.nonce,
581 settings: settings
582 },
583 beforeSend: function () {
584 $('#easyel-settings-save')
585 .text("Saving...")
586 .prop("disabled", true);
587 },
588 success: function(res){
589 $('#easyel-settings-save')
590 .text('Save Settings')
591 .prop('disabled', false);
592
593 if(res.success){
594 EasyElementsAdmin.easyel_notify(res.data.message, 'success');
595 } else {
596 EasyElementsAdmin.easyel_notify('Error saving settings.', 'error');
597 }
598 },
599 error: function(){
600 EasyElementsAdmin.easyel_notify('AJAX error!', 'error');
601 $('#easyel-settings-save').text('Save Settings').prop('disabled', false);
602 }
603 });
604
605 });
606 },
607 };
608
609 $(document).ready(function() {
610 EasyElementsAdmin.init();
611 });
612
613 window.EasyElementsAdmin = EasyElementsAdmin;
614
615 $(document).ready(function ($) {
616
617 function hideEmptyGroups() {
618
619 $('.easyel-widgets-grid').each(function () {
620 var wrapper = $(this);
621
622 var items = wrapper.find('.easy-widget-item');
623
624 var visibleItems = items.filter(function () {
625 return $(this).css('display') !== 'none';
626 }).length;
627
628 var headingGroup = wrapper.prev('.easyel-widget-heading-group');
629
630 if (visibleItems === 0) {
631 headingGroup.hide();
632 } else {
633 headingGroup.show();
634 }
635 });
636 }
637
638 hideEmptyGroups();
639
640 $(document).on('click', '.easyel-action-btn', function () {
641 setTimeout(hideEmptyGroups, 50);
642 });
643
644 });
645
646
647 $(document).ready(function() {
648
649 $('.easyel-scroll-smoother-popup-setting').on('click', function(e) {
650 e.preventDefault();
651
652 $('.easyel-smooth-scroll-popup').addClass('active');
653 $('html').addClass('popup-opened');
654 });
655
656 $('.easyel-smooth-scroll-popup-close-icon').on('click', function(e) {
657 e.preventDefault();
658 $('.easyel-smooth-scroll-popup').removeClass('active');
659 $('html').removeClass('popup-opened');
660 });
661 });
662
663 $(document).ready(function() {
664
665 $('.easyel-readingprogress-bar-popup-setting').on('click', function(e) {
666 e.preventDefault();
667
668 $('.easyel-reading-progressbar-popup').addClass('active');
669 $('html').addClass('popup-opened');
670 });
671
672 $('.easyel-reading-progressbar-popup-close-icon').on('click', function(e) {
673 e.preventDefault();
674 $('.easyel-reading-progressbar-popup').removeClass('active');
675 $('html').removeClass('popup-opened');
676 });
677 });
678
679 function easyelDisplayMessage(message, type = 'success') {
680 let messageBox = $('#easyel-message-box');
681
682 if (type === 'success') {
683 messageBox.html('<p class="easyel-saved-success-message">' + message + '</p>').fadeIn().delay(1500).fadeOut();
684 }
685 }
686
687 $(document).ready(function($){
688
689 var $form = $('.easyel-smooth-scroll-settings-main-wrapper');
690 var $saveButton = $('.smooth_scroll_popup_item_save');
691
692 $saveButton.prop('disabled', true);
693
694 $form.on('input change', 'input, select', function() {
695 $saveButton.prop('disabled', false).val('Save Changes');
696 });
697
698 $(document).on('click', '.smooth_scroll_popup_item_save', function(event){
699 event.preventDefault();
700
701 var saveButton = $(this);
702
703 saveButton.prop('disabled', true).val('Saving...');
704
705 var settings = {
706 smooth_scroll_speed: $('input[name="smooth_scroll_speed"]').val(),
707 smooth_scroll_normalize: $('input[name="smooth_scroll_normalize"]').is(':checked') ? 1 : 0,
708 smooth_scroll_enable_mobile: $('input[name="smooth_scroll_enable_mobile"]').is(':checked') ? 1 : 0,
709 smooth_scroll_disable_editor_mode: $('input[name="smooth_scroll_disable_editor_mode"]').is(':checked') ? 1 : 0,
710 enable_smooth_scroller: $('input[data-key="enable_smooth_scroller"]').is(':checked') ? 1 : 0
711 };
712
713 // AJAX call
714 $.ajax({
715 url: ajaxurl,
716 type: 'POST',
717 dataType: 'json',
718 data: {
719 action: 'save_smooth_scroll_settings',
720 nonce: easyElementsData.nonce,
721 settings: settings
722 },
723 success: function(response){
724 if(response.success){
725 easyelDisplayMessage('All settings saved', 'success');
726 saveButton.val('Saved All Data').prop('disabled', true);
727 } else {
728 easyelDisplayMessage('Error saving settings', 'error');
729 saveButton.val('Save Changes').prop('disabled', false);
730 }
731 },
732 error: function(jqXHR, textStatus, errorThrown){
733 console.log('AJAX error:', textStatus, errorThrown);
734 easyelDisplayMessage('AJAX error: ' + textStatus, 'error');
735 saveButton.val('Save Changes').prop('disabled', false);
736 }
737 });
738 });
739 });
740
741 $(document).ready(function($){
742
743 var $form = $('.easyel-reading-progressbar-settings-main-wrapper');
744 var $saveButton = $('.reading_progressbar_popup_item_save');
745
746 $saveButton.prop('disabled', true);
747
748 // Enable save button on input/change
749 $form.on('input change', 'input, select', function() {
750 $saveButton.prop('disabled', false).val('Save Changes');
751 });
752
753 // Initialize color picker safely
754 if ( typeof wp !== 'undefined' && wp.colorPicker ) {
755 if ( $('.easyel-color-picker').length ) {
756 $('.easyel-color-picker').wpColorPicker();
757 }
758 }
759
760 // Save via AJAX
761 $(document).on('click', '.reading_progressbar_popup_item_save', function(event){
762 event.preventDefault();
763
764 var saveButton = $(this);
765 saveButton.prop('disabled', true).val('Saving...');
766
767 var settings = {
768 reading_progressbar_position: $('select[name="reading_progressbar_position"]').val(),
769 reading_progressbar_display: $('input[name="reading_progressbar_display[]"]:checked').map(function(){ return this.value; }).get(),
770 reading_progressbar_color: $('input[name="reading_progressbar_color"]').val(),
771 reading_progressbar_height: $('input[name="reading_progressbar_height"]').val(),
772 reading_progressbar_specific_page: $('select[name="reading_progressbar_specific_page[]"]').map(function(){ return $(this).val(); }).get(),
773 };
774
775 $.ajax({
776 url: ajaxurl,
777 type: 'POST',
778 dataType: 'json',
779 data: {
780 action: 'save_reading_progressbar_settings',
781 nonce: easyElementsData.nonce,
782 settings: settings
783 },
784 success: function(response){
785 if(response.success){
786 easyelDisplayMessage('Settings Saved', 'success');
787 saveButton.val('Saved All Data').prop('disabled', true);
788 } else {
789 easyelDisplayMessage('Error saving settings', 'error');
790 saveButton.val('Save Changes').prop('disabled', false);
791 }
792 },
793 error: function(jqXHR, textStatus, errorThrown){
794 console.log('AJAX error:', textStatus, errorThrown);
795 easyelDisplayMessage('AJAX error: ' + textStatus, 'error');
796 saveButton.val('Save Changes').prop('disabled', false);
797 }
798 });
799 });
800 });
801
802 // open close popup modal
803
804 function easyelAdminToggleOpenProModal() {
805 $('#easyel-admin-toggle-pro-upgrade-modal').addClass('active');
806 $('body').addClass('easyel-admin-toggle-modal-open');
807 }
808
809 function easyelAdminToggleCloseProModal() {
810 $('#easyel-admin-toggle-pro-upgrade-modal').removeClass('active');
811 $('body').removeClass('easyel-admin-toggle-modal-open');
812 }
813
814 /**
815 * PRO widget click → show modal
816 */
817 $(document).on(
818 'click',
819 '.easy-widget-item.easyel-pro-enable .easyel-widget-card-switcher',
820 function (e) {
821 e.preventDefault();
822 e.stopPropagation();
823
824 easyelAdminToggleOpenProModal();
825 }
826 );
827
828 // Close modal
829 $(document).on(
830 'click',
831 '.easyel-admin-toggle-pro-modal-close, \
832 .easyel-admin-toggle-pro-modal-cancel, \
833 .easyel-admin-toggle-pro-modal-overlay',
834 function () {
835 easyelAdminToggleCloseProModal();
836 }
837 );
838
839 // reading progressbar popup color js
840 if ( $('.easyel-color-picker').length ) {
841 $('.easyel-color-picker').wpColorPicker();
842 }
843
844 if( $('.easyel-readingprogress-barselect2').length ) {
845 $('.easyel-readingprogress-barselect2').select2({
846 width: '100%',
847 placeholder: 'Select a page',
848 multiple: true,
849 });
850 }
851
852 if ( $('.easyel-color-picker').length ) {
853 $('.easyel-color-picker').wpColorPicker({
854 change: function (event, ui) {
855 var color = ui.color.toString();
856
857 $(event.target).val(color);
858
859 $('.reading_progressbar_popup_item_save')
860 .prop('disabled', false)
861 .val('Save Changes');
862 },
863 clear: function () {
864 $('.reading_progressbar_popup_item_save')
865 .prop('disabled', false)
866 .val('Save Changes');
867 }
868 });
869 }
870
871
872
873
874
875
876 })(jQuery);
877