PluginProbe
Easy Elements for Elementor – Addons & Website Templates / 1.3.3
Easy Elements for Elementor – Addons & Website Templates v1.3.3
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.3, at assets/js/admin.js

900 lines 34.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 let availableWidgets = groupWrapper.find('.widget-toggle-checkbox').not(':disabled').closest('.easy-widget-item').not('.easyel-pro-enable');
232
233 if (availableWidgets.length === 0) {
234 allChecked = false;
235 } else {
236 availableWidgets.each(function() {
237 let checkbox = $(this).find('.widget-toggle-checkbox');
238 if (!checkbox.prop('checked')) {
239 allChecked = false;
240 return false;
241 }
242 });
243 }
244
245 let textSpan = groupCheckbox.closest('.easyel-toggle-switch-widget').find('.easyel-enable-all-widget');
246
247 textSpan.text(allChecked ? 'Disable All' : 'Enable All');
248 groupCheckbox.prop('checked', allChecked);
249 }
250
251 let groupTabEnable = $(".easyel-tab-panel.widget");
252
253 groupTabEnable.find('.easyel-group-toggle-widget').each(function() {
254 let groupCheckbox = $(this);
255 let groupSlug = groupCheckbox.data('group');
256 let groupWrapper = $('.easyel-widgets-grid[data-group="' + groupSlug + '"]');
257
258 EasyupdateEnableAllText2(groupCheckbox, groupWrapper);
259 });
260
261 groupTabEnable.on('change', '.easyel-group-toggle-widget', function () {
262
263 let groupCheckbox = $(this);
264 let groupSlug = groupCheckbox.data('group');
265 let groupWrapper = $('.easyel-widgets-grid[data-group="' + groupSlug + '"]');
266 let hiddenField = $('input.easyel-group-hidden[name="easy_element_group_' + groupSlug + '"]');
267
268 let status = groupCheckbox.is(':checked') ? 1 : 0;
269
270 groupWrapper.find('.widget-toggle-checkbox').each(function () {
271
272 let checkbox = $(this);
273 let widgetItem = checkbox.closest('.easy-widget-item');
274
275 if (widgetItem.hasClass('easyel-pro-enable')) return;
276 checkbox.prop('checked', status === 1);
277 });
278
279
280 hiddenField.val(status);
281
282 EasyupdateEnableAllText2( groupCheckbox, groupWrapper );
283
284 let keys = [];
285 groupWrapper.find('.widget-toggle-checkbox').each(function() { keys.push($(this).data('key')); });
286 if (keys.length) {
287 $.post(ajaxurl, {
288 action: 'easy_elements_bulk_group_action',
289 group: groupSlug,
290 status: status,
291 nonce: easyElementsData.bulk_action_nonce
292 });
293 }
294 });
295 },
296
297 initAllExtensions: function() {
298 let $extensionsTab = $('.easyel-tab-panel.extensions');
299
300 $('.easyel-extension-toggle').on('change', function () {
301 let checkbox = $(this);
302 let key = checkbox.data('key');
303 let tab = checkbox.data('tab');
304 let status = checkbox.is(':checked') ? 1 : 0;
305
306 let mainWrap = $('.easyel-plugin-main-settings-page');
307 let indicator = mainWrap.find('.easyel-saving-indicator');
308
309 indicator.text('Saving...');
310 mainWrap.addClass('is-saving');
311
312 const featureWidgetMap = {
313 enable_megamenu_builder: 'mega_menu_widget'
314 };
315
316
317 $.post(ajaxurl, {
318 action: 'easy_elements_save_global_extensions',
319 tab: tab,
320 key: key,
321 status: status,
322 nonce: easyElementsData.widget_settings_nonce
323 })
324 .done(function(response) {
325 if (response.success) {
326 indicator.text('Saved');
327
328 if (featureWidgetMap[key]) {
329 const widgetKey = featureWidgetMap[key];
330 const widgetEl = $('.easy-widget-item[data-widget-key="' + widgetKey + '"]');
331
332 if (status === 0) {
333
334 widgetEl.slideUp(200, function () {
335 $(this).remove();
336 });
337 } else {
338 indicator.text('Reloading…');
339
340 setTimeout(function () {
341 location.reload();
342 }, 300);
343 }
344 }
345
346
347 } else {
348 indicator.text('Failed');
349 checkbox.prop('checked', !checkbox.is(':checked'));
350 }
351
352 setTimeout(function() {
353 mainWrap.removeClass('is-saving');
354 indicator.text('Saving...');
355 }, 500);
356 })
357 .fail(function () {
358 mainWrap.removeClass('is-saving');
359 checkbox.prop('checked', !checkbox.is(':checked'));
360 });
361 });
362
363 function EasyupdateEnableAllText(groupCheckbox) {
364 let status = groupCheckbox.is(':checked') ? 1 : 0;
365 let label = groupCheckbox.closest('.easyel-toggle-switch-extension');
366 let textSpan = label.find('.easyel-enable-all');
367 let groupSlug = groupCheckbox.data('group');
368 let groupWrapper = $('.easyel-extension-wrapper[data-group="' + groupSlug + '"]');
369
370 let totalItems = groupWrapper.find('.easyel-extension-item').length;
371 let proItems = groupWrapper.find('.easyel-extension-item.easyel-pro-enable').length;
372
373 if (totalItems > 0 && totalItems === proItems) {
374 groupCheckbox.prop('disabled', true);
375 label.css({'opacity': '1','border':'none', 'cursor': 'not-allowed'});
376
377 return;
378 }
379
380 if (status === 1) {
381 textSpan.text('Disable All');
382 } else {
383 textSpan.text('Enable All');
384 }
385 }
386
387 // Extension tab initialize hobar shomoy run hobe
388 $extensionsTab.find('.easyel-group-toggle').each(function() {
389 EasyupdateEnableAllText($(this));
390 });
391
392 $extensionsTab.on('change', '.easyel-group-toggle', function () {
393 let groupCheckbox = $(this);
394 let groupSlug = groupCheckbox.data('group');
395 let groupWrapper = $('.easyel-extension-wrapper[data-group="' + groupSlug + '"]');
396 let hiddenField = $('input.easyel-group-hidden[name="easy_element_group_' + groupSlug + '"]');
397
398 let status = groupCheckbox.is(':checked') ? 1 : 0;
399
400 EasyupdateEnableAllText(groupCheckbox);
401
402
403 groupWrapper.find('.easyel-extension-toggle').each(function () {
404 let checkbox = $(this);
405 if (checkbox.closest('.easyel-extension-item').hasClass('easyel-pro-enable')) return;
406 checkbox.prop('checked', status === 1);
407 });
408
409 hiddenField.val(status);
410
411 let mainWrap = $('.easyel-plugin-main-settings-page');
412 let indicator = mainWrap.find('.easyel-saving-indicator');
413
414 indicator.text('Saving...');
415 mainWrap.addClass('is-saving');
416
417 let keys = [];
418 groupWrapper.find('.easyel-extension-toggle').each(function() { keys.push($(this).data('key')); });
419 if (keys.length) {
420 $.post(ajaxurl, {
421 action: 'easy_elements_save_global_extensions_bulk',
422 tab: 'extensions',
423 keys: keys,
424 status: status,
425 group: groupSlug,
426 nonce: easyElementsData.widget_settings_nonce
427 }).done(function(response) {
428 if (response.success) {
429 indicator.text('Saved');
430 } else {
431 indicator.text('Failed');
432 }
433
434 setTimeout(function() {
435 mainWrap.removeClass('is-saving');
436 indicator.text('Saving...');
437 }, 500 );
438 })
439 .fail(function() {
440 indicator.text('Failed');
441 setTimeout(function() {
442 mainWrap.removeClass('is-saving');
443 indicator.text('Saving...');
444 }, 700);
445 });
446 }
447 else {
448 setTimeout(function() {
449 mainWrap.removeClass('is-saving');
450 indicator.text('Saving...');
451 }, 500);
452 }
453 });
454 },
455
456 easyEltab: function() {
457 $('#toplevel_page_easy-elements-dashboard ul.wp-submenu a').on('click', function (e) {
458 const href = $(this).attr('href');
459 const isDashboardPage = window.location.href.includes('page=easy-elements-dashboard');
460
461 if (isDashboardPage && href.includes('#')) {
462 e.preventDefault();
463
464 let tab = 'overview';
465 if (href.includes('#widget')) tab = 'widget';
466 if (href.includes('#extensions')) tab = 'extensions';
467 if (href.includes('#activate_license')) tab = 'activate_license';
468
469 activateTab(tab);
470 history.replaceState(null, null, '#' + tab);
471 }
472 });
473
474 let hash = window.location.hash.substring(1);
475 if (hash) activateTab(hash);
476 else activateTab('overview');
477
478 $('.easyel-nav-tab').click(function (e) {
479 const tab = $(this).data('tab');
480
481 e.preventDefault();
482 activateTab(tab);
483 history.replaceState(null, null, '#' + tab);
484 });
485
486 function activateTab(tab) {
487 $('.easyel-nav-tab').removeClass('easyel-nav-tab-active');
488 $('.easyel-nav-tab[data-tab="' + tab + '"]').addClass('easyel-nav-tab-active');
489 $('.easyel-tab-panel').hide();
490 $('#tab-' + tab).show();
491 $('#toplevel_page_easy-elements-dashboard ul.wp-submenu li').removeClass('current');
492 $('#toplevel_page_easy-elements-dashboard ul.wp-submenu a[href*="#' + tab + '"]').parent().addClass('current');
493 }
494 },
495
496 easyElFilter: function() {
497 $(".easyel-action-btn").on("click", function() {
498 var filter = $(this).data("filter");
499 $(".easyel-action-btn").removeClass("active");
500 $(this).addClass("active");
501
502 $(".easy-widget-item,.easyel-extension-item").each(function() {
503 var $widget = $(this);
504
505 if (filter === "easyel_all") $widget.show();
506 else if (filter === "easyel_free") {
507 if ($widget.hasClass("easyel-pro-widget")) $widget.hide();
508 else $widget.show();
509 } else if (filter === "easyel_pro") {
510 if ($widget.hasClass("easyel-pro-widget")) $widget.show();
511 else $widget.hide();
512 }
513 });
514 });
515 },
516
517 easyelVideoPopuo: function() {
518 if ($(".easyel-video-popup").length ) {
519 var $popup = $('#easyel-popup-video-area'),
520 $videoContainer = $popup.find('.easyel-popup-video');
521
522 $('.easyel-video-popup').on('click', function(e){
523 e.preventDefault();
524 var videoId = $(this).attr('href').split('v=')[1].split('&')[0];
525 $videoContainer.html('<iframe src="https://www.youtube.com/embed/' + videoId + '?autoplay=1" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>');
526 $popup.fadeIn();
527 });
528
529 $popup.on('click', '.easyel-popup-close, #easyel-popup-video-area', function(e){
530 if($(e.target).is('.easyel-popup-close') || $(e.target).is('#easyel-popup-video-area')){
531 $popup.fadeOut();
532 $videoContainer.html('');
533 }
534 });
535 };
536 },
537
538 easyelFaq: function() {
539 if ($(".easyel-faq-item").length ) {
540 $(".easyel-faq-item.active").find(".easyel-faq-item-content").show();
541 $(".easyel-faq-item-heading").click(function(){
542 var faqItem = $(this).closest(".easyel-faq-item");
543 var content = faqItem.children(".easyel-faq-item-content");
544
545 if(faqItem.hasClass("active")){
546 faqItem.removeClass("active");
547 content.slideUp(300);
548 } else {
549 $(".easyel-faq-item.active").removeClass("active").children(".easyel-faq-item-content").slideUp(300);
550 faqItem.addClass("active");
551 content.slideDown(300);
552 }
553 });
554 };
555 },
556
557 easyel_notify: function(message, type = 'success', duration = 3000) {
558 const toast = document.createElement('div');
559 toast.className = `easyel-toast ${type}`;
560 toast.innerText = message;
561
562 document.body.appendChild(toast);
563
564 // Show animation
565 setTimeout(() => toast.classList.add('show'), 50);
566
567 // Auto remove after duration
568 setTimeout(() => {
569 toast.classList.remove('show');
570 setTimeout(() => toast.remove(), 300);
571 }, duration);
572 },
573
574 initSettings: function() {
575 $('#easyel-settings-save').click(function (e) {
576 e.preventDefault();
577
578 let dataArr = $('#easyel-settings-form').serializeArray();
579 let settings = {};
580
581 dataArr.forEach(field => {
582 let name = field.name;
583 let value = field.value;
584
585 // Detect nested name e.g. fb_config[page_id]
586 if (name.includes('[')) {
587 let mainKey = name.split('[')[0]; // fb_config
588 let subKey = name.match(/\[(.*?)\]/)[1]; // page_id
589
590 if (!settings[mainKey]) settings[mainKey] = {}; // init object
591 settings[mainKey][subKey] = value; // assign value
592 } else {
593 // simple field (no nested)
594 settings[name] = value;
595 }
596 });
597
598 $.ajax({
599 url: ajaxurl,
600 type: "POST",
601 data: {
602 action: "easyel_save_user_data",
603 security: easyElementsData.nonce,
604 settings: settings
605 },
606 beforeSend: function () {
607 $('#easyel-settings-save')
608 .text("Saving...")
609 .prop("disabled", true);
610 },
611 success: function(res){
612 $('#easyel-settings-save')
613 .text('Save Settings')
614 .prop('disabled', false);
615
616 if(res.success){
617 EasyElementsAdmin.easyel_notify(res.data.message, 'success');
618 } else {
619 EasyElementsAdmin.easyel_notify('Error saving settings.', 'error');
620 }
621 },
622 error: function(){
623 EasyElementsAdmin.easyel_notify('AJAX error!', 'error');
624 $('#easyel-settings-save').text('Save Settings').prop('disabled', false);
625 }
626 });
627
628 });
629 },
630 };
631
632 $(document).ready(function() {
633 EasyElementsAdmin.init();
634 });
635
636 window.EasyElementsAdmin = EasyElementsAdmin;
637
638 $(document).ready(function ($) {
639
640 function hideEmptyGroups() {
641
642 $('.easyel-widgets-grid').each(function () {
643 var wrapper = $(this);
644
645 var items = wrapper.find('.easy-widget-item');
646
647 var visibleItems = items.filter(function () {
648 return $(this).css('display') !== 'none';
649 }).length;
650
651 var headingGroup = wrapper.prev('.easyel-widget-heading-group');
652
653 if (visibleItems === 0) {
654 headingGroup.hide();
655 } else {
656 headingGroup.show();
657 }
658 });
659 }
660
661 hideEmptyGroups();
662
663 $(document).on('click', '.easyel-action-btn', function () {
664 setTimeout(hideEmptyGroups, 50);
665 });
666
667 });
668
669
670 $(document).ready(function() {
671
672 $('.easyel-scroll-smoother-popup-setting').on('click', function(e) {
673 e.preventDefault();
674
675 $('.easyel-smooth-scroll-popup').addClass('active');
676 $('html').addClass('popup-opened');
677 });
678
679 $('.easyel-smooth-scroll-popup-close-icon').on('click', function(e) {
680 e.preventDefault();
681 $('.easyel-smooth-scroll-popup').removeClass('active');
682 $('html').removeClass('popup-opened');
683 });
684 });
685
686 $(document).ready(function() {
687
688 $('.easyel-readingprogress-bar-popup-setting').on('click', function(e) {
689 e.preventDefault();
690
691 $('.easyel-reading-progressbar-popup').addClass('active');
692 $('html').addClass('popup-opened');
693 });
694
695 $('.easyel-reading-progressbar-popup-close-icon').on('click', function(e) {
696 e.preventDefault();
697 $('.easyel-reading-progressbar-popup').removeClass('active');
698 $('html').removeClass('popup-opened');
699 });
700 });
701
702 function easyelDisplayMessage(message, type = 'success') {
703 let messageBox = $('#easyel-message-box');
704
705 if (type === 'success') {
706 messageBox.html('<p class="easyel-saved-success-message">' + message + '</p>').fadeIn().delay(1500).fadeOut();
707 }
708 }
709
710 $(document).ready(function($){
711
712 var $form = $('.easyel-smooth-scroll-settings-main-wrapper');
713 var $saveButton = $('.smooth_scroll_popup_item_save');
714
715 $saveButton.prop('disabled', true);
716
717 $form.on('input change', 'input, select', function() {
718 $saveButton.prop('disabled', false).val('Save Changes');
719 });
720
721 $(document).on('click', '.smooth_scroll_popup_item_save', function(event){
722 event.preventDefault();
723
724 var saveButton = $(this);
725
726 saveButton.prop('disabled', true).val('Saving...');
727
728 var settings = {
729 smooth_scroll_speed: $('input[name="smooth_scroll_speed"]').val(),
730 smooth_scroll_normalize: $('input[name="smooth_scroll_normalize"]').is(':checked') ? 1 : 0,
731 smooth_scroll_enable_mobile: $('input[name="smooth_scroll_enable_mobile"]').is(':checked') ? 1 : 0,
732 smooth_scroll_disable_editor_mode: $('input[name="smooth_scroll_disable_editor_mode"]').is(':checked') ? 1 : 0,
733 enable_smooth_scroller: $('input[data-key="enable_smooth_scroller"]').is(':checked') ? 1 : 0
734 };
735
736 // AJAX call
737 $.ajax({
738 url: ajaxurl,
739 type: 'POST',
740 dataType: 'json',
741 data: {
742 action: 'save_smooth_scroll_settings',
743 nonce: easyElementsData.nonce,
744 settings: settings
745 },
746 success: function(response){
747 if(response.success){
748 easyelDisplayMessage('All settings saved', 'success');
749 saveButton.val('Saved All Data').prop('disabled', true);
750 } else {
751 easyelDisplayMessage('Error saving settings', 'error');
752 saveButton.val('Save Changes').prop('disabled', false);
753 }
754 },
755 error: function(jqXHR, textStatus, errorThrown){
756 console.log('AJAX error:', textStatus, errorThrown);
757 easyelDisplayMessage('AJAX error: ' + textStatus, 'error');
758 saveButton.val('Save Changes').prop('disabled', false);
759 }
760 });
761 });
762 });
763
764 $(document).ready(function($){
765
766 var $form = $('.easyel-reading-progressbar-settings-main-wrapper');
767 var $saveButton = $('.reading_progressbar_popup_item_save');
768
769 $saveButton.prop('disabled', true);
770
771 // Enable save button on input/change
772 $form.on('input change', 'input, select', function() {
773 $saveButton.prop('disabled', false).val('Save Changes');
774 });
775
776 // Initialize color picker safely
777 if ( typeof wp !== 'undefined' && wp.colorPicker ) {
778 if ( $('.easyel-color-picker').length ) {
779 $('.easyel-color-picker').wpColorPicker();
780 }
781 }
782
783 // Save via AJAX
784 $(document).on('click', '.reading_progressbar_popup_item_save', function(event){
785 event.preventDefault();
786
787 var saveButton = $(this);
788 saveButton.prop('disabled', true).val('Saving...');
789
790 var settings = {
791 reading_progressbar_position: $('select[name="reading_progressbar_position"]').val(),
792 reading_progressbar_display: $('input[name="reading_progressbar_display[]"]:checked').map(function(){ return this.value; }).get(),
793 reading_progressbar_color: $('input[name="reading_progressbar_color"]').val(),
794 reading_progressbar_height: $('input[name="reading_progressbar_height"]').val(),
795 reading_progressbar_specific_page: $('select[name="reading_progressbar_specific_page[]"]').map(function(){ return $(this).val(); }).get(),
796 };
797
798 $.ajax({
799 url: ajaxurl,
800 type: 'POST',
801 dataType: 'json',
802 data: {
803 action: 'save_reading_progressbar_settings',
804 nonce: easyElementsData.nonce,
805 settings: settings
806 },
807 success: function(response){
808 if(response.success){
809 easyelDisplayMessage('Settings Saved', 'success');
810 saveButton.val('Saved All Data').prop('disabled', true);
811 } else {
812 easyelDisplayMessage('Error saving settings', 'error');
813 saveButton.val('Save Changes').prop('disabled', false);
814 }
815 },
816 error: function(jqXHR, textStatus, errorThrown){
817 console.log('AJAX error:', textStatus, errorThrown);
818 easyelDisplayMessage('AJAX error: ' + textStatus, 'error');
819 saveButton.val('Save Changes').prop('disabled', false);
820 }
821 });
822 });
823 });
824
825 // open close popup modal
826
827 function easyelAdminToggleOpenProModal() {
828 $('#easyel-admin-toggle-pro-upgrade-modal').addClass('active');
829 $('body').addClass('easyel-admin-toggle-modal-open');
830 }
831
832 function easyelAdminToggleCloseProModal() {
833 $('#easyel-admin-toggle-pro-upgrade-modal').removeClass('active');
834 $('body').removeClass('easyel-admin-toggle-modal-open');
835 }
836
837 /**
838 * PRO widget click → show modal
839 */
840 $(document).on(
841 'click',
842 '.easy-widget-item.easyel-pro-enable .easyel-widget-card-switcher',
843 function (e) {
844 e.preventDefault();
845 e.stopPropagation();
846
847 easyelAdminToggleOpenProModal();
848 }
849 );
850
851 // Close modal
852 $(document).on(
853 'click',
854 '.easyel-admin-toggle-pro-modal-close, \
855 .easyel-admin-toggle-pro-modal-cancel, \
856 .easyel-admin-toggle-pro-modal-overlay',
857 function () {
858 easyelAdminToggleCloseProModal();
859 }
860 );
861
862 // reading progressbar popup color js
863 if ( $('.easyel-color-picker').length ) {
864 $('.easyel-color-picker').wpColorPicker();
865 }
866
867 if( $('.easyel-readingprogress-barselect2').length ) {
868 $('.easyel-readingprogress-barselect2').select2({
869 width: '100%',
870 placeholder: 'Select a page',
871 multiple: true,
872 });
873 }
874
875 if ( $('.easyel-color-picker').length ) {
876 $('.easyel-color-picker').wpColorPicker({
877 change: function (event, ui) {
878 var color = ui.color.toString();
879
880 $(event.target).val(color);
881
882 $('.reading_progressbar_popup_item_save')
883 .prop('disabled', false)
884 .val('Save Changes');
885 },
886 clear: function () {
887 $('.reading_progressbar_popup_item_save')
888 .prop('disabled', false)
889 .val('Save Changes');
890 }
891 });
892 }
893
894
895
896
897
898
899 })(jQuery);
900