PluginProbe ʕ •ᴥ•ʔ
Premium Addons for Elementor – Powerful Elementor Templates & Widgets / 4.11.62
Premium Addons for Elementor – Powerful Elementor Templates & Widgets v4.11.62
4.11.84 4.11.83 4.11.82 4.11.80 4.11.81 4.11.79 4.11.78 4.11.77 4.11.76 4.11.75 3.20.5 4.11.69 3.20.6 4.11.7 3.20.7 4.11.70 3.20.8 4.11.71 3.20.9 4.11.72 3.21.1 4.11.73 3.21.2 4.11.74 3.21.3 4.11.8 3.21.4 4.11.9 3.21.5 4.2.0 3.21.6 4.2.1 3.3.0 4.2.2 3.3.1 4.2.3 3.3.2 4.2.4 3.3.3 4.2.5 3.3.4 4.2.6 3.3.5 4.2.7 3.3.6 4.2.8 3.3.7 4.2.9 3.3.8 4.3.0 3.3.9 4.3.1 3.4.0 4.3.2 3.4.1 4.3.3 3.4.2 4.3.4 3.4.3 4.3.5 3.4.4 4.3.6 3.4.5 4.3.7 3.4.6 4.3.8 3.4.7 4.3.9 3.4.8 4.4.0 3.4.9 4.4.1 3.5.0 4.4.2 3.5.1 4.4.3 3.5.2 4.4.4 3.5.3 4.4.5 3.5.4 4.4.6 3.5.5 4.4.7 3.5.6 4.4.8 3.5.7 4.4.9 3.5.8 4.5.0 3.5.9 4.5.1 3.6.0 4.5.2 3.6.1 4.5.3 3.6.2 4.5.4 3.6.3 4.5.5 3.6.4 4.5.6 3.6.5 4.5.7 3.6.6 4.5.8 3.6.7 4.5.9 3.6.8 4.6.0 3.6.9 4.6.1 3.7.0 4.7.0 3.7.1 4.7.1 3.7.2 4.7.2 3.7.3 4.7.3 3.7.4 4.7.4 3.7.5 4.7.5 3.7.6 4.7.6 3.7.7 4.7.7 3.7.8 4.7.8 3.7.9 4.7.9 3.8.0 4.8.0 3.8.1 4.8.1 3.8.2 4.8.10 3.8.3 4.8.11 3.8.4 4.8.2 3.8.5 4.8.3 3.8.6 4.8.4 3.8.7 4.8.5 3.8.8 4.8.6 3.8.9 4.8.7 3.9.0 4.8.8 3.9.1 4.8.9 3.9.2 4.9.0 3.9.3 4.9.0-beta1 3.9.4 4.9.0-beta2 3.9.5 4.9.1 3.9.6 4.9.10 3.9.7 4.9.11 3.9.8 4.9.12 3.9.9 4.9.13 4.0.1 4.9.14 4.0.3 4.9.15 4.0.4 4.9.16 4.0.5 4.9.17 4.0.6 4.9.18 4.0.7 4.9.19 4.0.8 4.9.2 4.0.9 4.9.20 4.1.0 4.9.21 4.1.1 4.9.22 4.1.2 4.9.23 4.1.3 4.9.24 trunk 4.1.4 4.9.25 1.0 4.1.5 4.9.26 1.01 4.1.6 4.9.27 1.02 4.1.7 4.9.28 1.03 4.1.8 4.9.29 1.04 4.1.9 4.9.3 1.05 4.10.0 4.9.30 1.06 4.10.1 4.9.31 1.07 4.10.10 4.9.32 1.08 4.10.11 4.9.33 1.09 4.10.12 4.9.34 2.0 4.10.13 4.9.35 2.0.1 4.10.14 4.9.36 2.0.2 4.10.15 4.9.37 2.0.3 4.10.16 4.9.38 2.0.4 4.10.17 4.9.39 2.0.5 4.10.18 4.9.4 2.0.6 4.10.19 4.9.40 2.0.7 4.10.2 4.9.41 2.0.8 4.10.20 4.9.42 2.0.9 4.10.21 4.9.43 2.1.0 4.10.22 4.9.45 2.1.1 4.10.23 4.9.46 2.1.2 4.10.24 4.9.47 2.1.3 4.10.25 4.9.48 2.1.4 4.10.26 4.9.49 2.1.5 4.10.27 4.9.5 2.1.5-beta1 4.10.28 4.9.50 2.1.6 4.10.29 4.9.51 2.1.7 4.10.3 4.9.52 2.1.8 4.10.30 4.9.53 2.1.9 4.10.31 4.9.54 2.2.0 4.10.32 4.9.55 2.2.1 4.10.33 4.9.56 2.2.2 4.10.34 4.9.57 2.2.3 4.10.35 4.9.6 2.2.4 4.10.36 4.9.7 2.2.5 4.10.37 4.9.8 2.2.6 4.10.38 4.9.9 2.2.7 4.10.39 2.2.8 4.10.4 2.2.9 4.10.40 2.3.0 4.10.41 2.3.1 4.10.42 2.3.2 4.10.43 2.3.3 4.10.44 2.3.4 4.10.45 2.3.5 4.10.46 2.3.6 4.10.47 2.3.7 4.10.48 2.3.8 4.10.49 2.3.9 4.10.5 2.4.0 4.10.50 2.4.1 4.10.51 2.5.0 4.10.52 2.5.1 4.10.53 2.5.2 4.10.54 2.5.3 4.10.55 2.5.4 4.10.56 2.5.5 4.10.57 2.5.6 4.10.58 2.5.7 4.10.59 2.5.8 4.10.6 2.5.9 4.10.60 2.6.0 4.10.61 2.6.1 4.10.62 2.6.2 4.10.63 2.6.3 4.10.64 2.6.4 4.10.65 2.6.5 4.10.66 2.6.6 4.10.67 2.6.7 4.10.68 2.6.8 4.10.69 2.6.9 4.10.7 2.7.0 4.10.70 2.7.1 4.10.71 2.7.2 4.10.72 2.7.3 4.10.73 2.7.4 4.10.74 2.7.5 4.10.75 2.7.6 4.10.76 2.7.7 4.10.77 2.7.8 4.10.78 2.7.9 4.10.79 2.8.0 4.10.8 2.8.1 4.10.80 2.8.2 4.10.81 2.8.3 4.10.82 2.8.4 4.10.83 2.8.5 4.10.84 2.8.6 4.10.85 2.8.7 4.10.86 2.8.8 4.10.87 2.8.9 4.10.88 2.9.0 4.10.89 2.9.1 4.10.9 2.9.2 4.10.90 2.9.3 4.11.0 2.9.4 4.11.1 2.9.5 4.11.10 2.9.6 4.11.11 2.9.7 4.11.12 2.9.8 4.11.13 2.9.9 4.11.14 3.0.0 4.11.15 3.0.1 4.11.16 3.0.2 4.11.17 3.0.3 4.11.18 3.0.4 4.11.19 3.0.5 4.11.2 3.0.6 4.11.20 3.0.7 4.11.21 3.0.8 4.11.22 3.0.9 4.11.23 3.1.0 4.11.24 3.1.1 4.11.25 3.1.2 4.11.26 3.1.3 4.11.27 3.1.4 4.11.28 3.1.5 4.11.29 3.1.6 4.11.3 3.1.7 4.11.30 3.1.8 4.11.31 3.1.9 4.11.32 3.10.0 4.11.33 3.10.1 4.11.34 3.10.2 4.11.35 3.10.3 4.11.36 3.10.4 4.11.37 3.10.5 4.11.38 3.10.6 4.11.39 3.10.7 4.11.4 3.10.8 4.11.40 3.10.9 4.11.41 3.11.0 4.11.42 3.11.1 4.11.43 3.11.2 4.11.44 3.11.3 4.11.45 3.11.4 4.11.46 3.11.5 4.11.47 3.11.6 4.11.48 3.11.7 4.11.49 3.11.8 4.11.5 3.11.9 4.11.50 3.12.0 4.11.51 3.12.1 4.11.52 3.12.2 4.11.53 3.12.3 4.11.54 3.2.0 4.11.55 3.2.1 4.11.56 3.2.2 4.11.57 3.2.3 4.11.58 3.2.4 4.11.59 3.2.5 4.11.6 3.2.6 4.11.60 3.2.7 4.11.61 3.2.8 4.11.62 3.2.9 4.11.63 3.20.0 4.11.64 3.20.1 4.11.65 3.20.2 4.11.66 3.20.3 4.11.67 3.20.4 4.11.68
premium-addons-for-elementor / assets / editor / js / controls-handlers.js
premium-addons-for-elementor / assets / editor / js Last commit date
controls-handlers.js 6 months ago editor-handler.js 6 months ago live-editor.js 6 months ago pa-editor-behavior.js 6 months ago pa-editor-behavior.min.js 6 months ago pa-maps-finder.js 6 months ago premium-cross-cp.js 6 months ago xdlocalstorage.js 6 months ago
controls-handlers.js
461 lines
1 (function () {
2
3 var $ = jQuery;
4
5 $(window).on('elementor:init', function () {
6
7 if (typeof parent.document === "undefined") {
8 return false;
9 }
10
11 parent.document.addEventListener("mousedown", function (e) {
12 var widgets = parent.document.querySelectorAll(".elementor-element--promotion");
13
14 if (widgets.length > 0) {
15 for (var i = 0; i < widgets.length; i++) {
16 if (widgets[i].contains(e.target)) {
17 var dialog = parent.document.querySelector("#elementor-element--promotion__dialog");
18 var icon = widgets[i].querySelector(".icon > i");
19
20 if (icon.classList.toString().indexOf("pa-pro") >= 0) {
21
22 var proElement = icon.classList[0].replace('pa-pro-', '');
23
24 e.stopImmediatePropagation();
25
26 if (dialog.querySelector(".papro-dialog-buttons")) {
27 dialog.querySelector('.papro-dialog-buttons').remove();
28 }
29
30 dialog.querySelector(".dialog-buttons-action").style.display = "none";
31 // if (dialog.querySelector(".papro-dialog-buttons") === null) {
32
33 var button = document.createElement("a");
34 var buttonText = document.createTextNode("Upgrade Premium Addons (Save 30%)");
35
36 button.setAttribute("href", PremiumSettings.upgrade_link + '&utm_source=panel-' + proElement);
37 button.setAttribute("target", "_blank");
38 button.classList.add(
39 "dialog-button",
40 "dialog-action",
41 "dialog-buttons-action",
42 "elementor-button",
43 "go-pro",
44 "elementor-button-success",
45 "papro-dialog-buttons"
46 );
47 button.appendChild(buttonText);
48
49 dialog.querySelector(".dialog-buttons-action").insertAdjacentHTML("afterend", button.outerHTML);
50 // } else {
51 // dialog.querySelector(".papro-dialog-buttons").style.display = "";
52 // }
53 } else {
54 dialog.querySelector(".dialog-buttons-action").style.display = "";
55
56 if (dialog.querySelector(".papro-dialog-buttons") !== null) {
57 dialog.querySelector(".papro-dialog-buttons").style.display = "none";
58 }
59 }
60
61 break;
62 }
63 }
64 }
65 });
66
67 });
68
69 var pinterestToken = null;
70
71 elementor.channels.editor.on('change', function (view) {
72 var changed = view.elementSettingsModel.changed;
73
74 if (changed.access_token) {
75 if (changed.access_token.startsWith('pina_'))
76 pinterestToken = changed.access_token;
77 }
78 });
79
80 function onSectionActivate(sectionName) {
81
82 if ('access_credentials_section' === sectionName) {
83
84 setTimeout(function () {
85
86 var accessToken = jQuery('.elementor-control-access_token textarea').val();
87
88 pinterestToken = accessToken;
89
90 }, 100);
91
92 }
93
94
95 }
96
97
98 elementor.channels.editor.on('section:activated', onSectionActivate);
99
100 var selectOptions = elementor.modules.controls.Select2.extend({
101
102 isUpdated: false,
103
104 onReady: function () {
105
106 var options = (0 === this.model.get('options').length);
107
108 if (this.container && "widget" === this.container.type && 'board_id' === this.model.get('name')) {
109 if (options) {
110
111 var _this = this;
112
113 if (pinterestToken) {
114
115 jQuery.ajax({
116 type: "GET",
117 url: PremiumSettings.ajaxurl,
118 dataType: "JSON",
119 data: {
120 action: "get_pinterest_boards",
121 nonce: PremiumSettings.nonce,
122 token: pinterestToken
123 },
124 success: function (res) {
125
126 if (res.data) {
127
128 var options = JSON.parse(res.data);
129
130 _this.model.set("options", options);
131
132 _this.isUpdated = false;
133
134 _this.render();
135
136 }
137 },
138 error: function (err) {
139 console.log(err);
140 }
141 });
142 }
143
144 elementor.channels.editor.on('change', function (view) {
145 var changed = view.elementSettingsModel.changed;
146
147 if (undefined !== changed.board_id && !_this.isUpdated) {
148 _this.isUpdated = true;
149 }
150 });
151
152 }
153 }
154 },
155
156 onBeforeRender: function () {
157
158 if (this.container && ("section" === this.container.type || "container" === this.container.type)) {
159 var widgetObj = elementor.widgetsCache || elementor.config.widgets,
160 optionsToUpdate = {};
161
162 var _this = this;
163 this.container.children.forEach(function (child) {
164
165 if ("container" === _this.container.type) {
166
167 if (child.view.$childViewContainer) {
168 getInnerWidgets(child);
169 } else {
170 //Get Flex Container widgets when no columns are added.
171 var name = child.view.$el.data("widget_type").split('.')[0];
172
173 if ('undefined' !== typeof widgetObj[name]) {
174 optionsToUpdate[".elementor-widget-" + widgetObj[name].widget_type + " .elementor-widget-container"] = widgetObj[name].title;
175 }
176 }
177
178 } else if ("section" === _this.container.type) {
179 getInnerWidgets(child);
180 }
181
182 });
183
184 function getInnerWidgets(child) {
185 child.view.$childViewContainer.children("[data-widget_type]").each(function (index, widget) {
186 var name = $(widget).data("widget_type").split('.')[0];
187
188 if ('undefined' !== typeof widgetObj[name]) {
189 optionsToUpdate[".elementor-widget-" + widgetObj[name].widget_type + " .elementor-widget-container"] = widgetObj[name].title;
190 }
191 });
192
193 }
194
195 this.model.set("options", optionsToUpdate);
196 }
197 },
198 });
199
200 elementor.addControlView("premium-select", selectOptions);
201
202 var filterOptions = elementor.modules.controls.Select2.extend({
203
204 isUpdated: false,
205
206 onReady: function () {
207 var self = this,
208 type = self.model.get('source') || self.options.elementSettingsModel.attributes.post_type_filter;
209
210 var options = (0 === this.model.get('options').length);
211
212 if (options) {
213 self.fetchData(type);
214 }
215
216 elementor.channels.editor.on('change', function (view) {
217 var changed = view.elementSettingsModel.changed;
218
219 if (undefined !== changed.post_type_filter && 'post' !== changed.post_type_filter && !self.isUpdated) {
220 self.isUpdated = true;
221 self.fetchData(changed.post_type_filter);
222 }
223
224 //ToDO: Test with repeater items controls
225 if (view.$el.hasClass('premium-live-temp-label')) {
226 // hide the title input if the control value isn't empty
227 if (undefined !== changed[view.model.get('name')] && '' !== changed[view.model.get('name')]) {
228 $('.premium-live-temp-title').addClass('control-hidden');
229 }
230 }
231 });
232 },
233
234 fetchData: function (type) {
235
236 var self = this;
237 $.ajax({
238 url: PremiumSettings.ajaxurl,
239 dataType: 'json',
240 type: 'POST',
241 data: {
242 nonce: PremiumSettings.nonce,
243 action: 'premium_update_filter',
244 post_type: 'object' === typeof type ? type : [type]
245 },
246 success: function (res) {
247
248 self.updateFilterOptions(JSON.parse(res.data));
249 self.isUpdated = false;
250
251 self.render();
252 },
253 error: function (err) {
254 console.log(err);
255 },
256 });
257 },
258
259 updateFilterOptions: function (options) {
260 this.model.set("options", options);
261 },
262
263 onBeforeDestroy: function () {
264 if (this.ui.select.data('select2')) {
265 // this.ui.select.select2('destroy');
266 }
267
268 this.$el.remove();
269 }
270 });
271
272 elementor.addControlView("premium-post-filter", filterOptions);
273
274 var taxOptions = elementor.modules.controls.Select.extend({
275
276 isUpdated: false,
277
278 onReady: function () {
279 var self = this,
280 type = self.options.elementSettingsModel.attributes.post_type_filter,
281 options = (0 === this.model.get('options').length);
282
283 if (options) {
284 self.fetchData(type);
285 }
286
287 elementor.channels.editor.on('change', function (view) {
288 var changed = view.elementSettingsModel.changed;
289
290 if (undefined !== changed.post_type_filter && !self.isUpdated) {
291 self.isUpdated = true;
292 self.fetchData(changed.post_type_filter);
293 }
294 });
295 },
296
297 fetchData: function (type) {
298 var self = this;
299 $.ajax({
300 url: PremiumSettings.ajaxurl,
301 dataType: 'json',
302 type: 'POST',
303 data: {
304 nonce: PremiumSettings.nonce,
305 action: 'premium_update_tax',
306 post_type: type
307 },
308 success: function (res) {
309
310 var options = JSON.parse(res.data);
311 self.updateTaxOptions(options);
312 self.isUpdated = false;
313
314 if (0 !== options.length) {
315
316 self.$el.removeClass('elementor-hidden-control');
317
318 $('.premium-live-temp-title').addClass('control-hidden');
319
320 // var $tax = Object.keys(options);
321 // self.container.settings.setExternalChange({ 'filter_tabs_type': $tax[0] });
322 self.container.render();
323 self.render();
324 } else {
325 self.$el.addClass('elementor-hidden-control');
326
327 $('.premium-live-temp-title.control-hidden').removeClass('control-hidden');
328 }
329 },
330 error: function (err) {
331 console.log(err);
332 },
333 });
334 },
335
336 updateTaxOptions: function (options) {
337
338 this.model.set("options", options);
339
340 },
341 });
342
343 elementor.addControlView("premium-tax-filter", taxOptions);
344
345 var acfOptions = elementor.modules.controls.Select2.extend({
346
347 isUpdated: false,
348
349 onReady: function () {
350 var self = this;
351
352 if (!self.isUpdated) {
353 self.fetchData();
354 }
355 },
356
357 fetchData: function () {
358 var self = this;
359
360 $.ajax({
361 url: PremiumSettings.ajaxurl,
362 dataType: 'json',
363 type: 'POST',
364 data: {
365 nonce: PremiumSettings.nonce,
366 action: 'pa_acf_options',
367 query_options: self.model.get('query_options'),
368 },
369 success: function (res) {
370 self.isUpdated = true;
371 self.updateAcfOptions(JSON.parse(res.data));
372 self.render();
373 },
374 error: function (err) {
375 console.log(err);
376 },
377 });
378 },
379
380 updateAcfOptions: function (options) {
381 this.model.set("options", options);
382 },
383
384 onBeforeDestroy: function () {
385 if (this.ui.select.data('select2')) {
386 this.ui.select.select2('destroy');
387 }
388
389 this.$el.remove();
390 }
391 });
392
393 elementor.addControlView("premium-acf-selector", acfOptions);
394
395 var onNavigatorInit = function () {
396
397 elementor.navigator.indicators.paDisConditions = {
398 icon: 'preview-medium',
399 settingKeys: ['pa_display_conditions_switcher'],
400 title: wp.i18n.__('Display Conditions', 'premium-addons-for-elementor'),
401 section: 'section_pa_display_conditions'
402 };
403 }
404
405 elementor.on('navigator:init', onNavigatorInit);
406
407
408 var e = elementor.modules.controls.BaseData,
409 imageChoose = e.extend({
410 ui: function () {
411 var t = e.prototype.ui.apply(this, arguments);
412 return t.inputs = '[type="radio"]', t
413 },
414 events: function () {
415 return _.extend(e.prototype.events.apply(this, arguments), {
416 "mousedown label": "onMouseDownLabel",
417 "click @ui.inputs": "onClickInput",
418 "change @ui.inputs": "onBaseInputChange"
419 })
420 },
421
422 onMouseDownLabel: function (e) {
423 var t = this.$(e.currentTarget),
424 o = this.$("#" + t.attr("for"));
425
426 $('.elementor-control-form_insert .elementor-button').css('background-color', '#252c59');
427 o.data("checked", o.prop("checked")), this.ui.inputs.removeClass("checked"), o.data("checked", o.addClass("checked"))
428 },
429
430 onClickInput: function (e) {
431 if (this.model.get("toggle")) {
432 var t = this.$(e.currentTarget);
433 t.data("checked") && t.prop("checked", !1).trigger("change")
434 }
435 },
436
437 onRender: function () {
438 e.prototype.onRender.apply(this, arguments);
439 var t = this.getControlValue();
440 t && (this.ui.inputs.filter('[value="' + t + '"]').prop("checked", !0), this.ui.inputs.filter('[value="' + t + '"]').addClass("checked"))
441 },
442 onReady: function () {
443 if ('premium_gdivider_defaults' === this.model.attributes.name) {
444 const choicesContainer = $(this.el).find('.elementor-image-choices')[0];
445 new PerfectScrollbar(choicesContainer, {
446 suppressScrollX: true,
447 });
448
449 }
450 }
451
452 }, {
453 onPasteStyle: function (e, t) {
454 return "" === t || undefined !== e.options[t]
455 }
456 });
457
458 elementor.addControlView("premium-image-choose", imageChoose)
459
460 })(jQuery);
461