Premium Addons for Elementor - Version 3.6.7

Version Description

  • Tweak: Font Awesome 5 compatibility for all widgets.
  • Tweak: Added Navigation Dots option for carousel in Blog widget.
  • Tweak: Added Text/Background Hover Color option for filter tabs in Grid widget.
  • Tweak: Added Shuffle Images on Page Load option to Grid widget.
  • Fixed: Description container rendered even when description text is empty.
  • Tweak: Show overflow content then scroll in Vertical Scroll widget.
  • Fixed: Vertical Scroll issue on Mac OS.
Download this release

Release Info

Developer leap13
Plugin Icon 128x128 Premium Addons for Elementor
Version 3.6.7
Comparing to
See all releases

Code changes from version 3.6.6 to 3.6.7

admin/includes/version-control.php CHANGED
@@ -91,7 +91,7 @@ class Version_Control {
91
  <tr class="pa-roll-row">
92
  <th><?php echo __('Rollback Version', 'premium-addons-for-elementor'); ?></th>
93
  <td>
94
- <div><?php echo sprintf( '<a target="_blank" href="%1$s" class="button pa-btn pa-rollback-button elementor-button-spinner">%2$s</a>', wp_nonce_url( admin_url( 'admin-post.php?action=premium_addons_rollback' ), 'premium_addons_rollback' ), __('Reinstall Version 3.6.5', 'premium-addons-for-elementor') ); ?></div>
95
  <p class="pa-roll-desc">
96
  <span><?php echo __('Warning: Please backup your database before making the rollback.', 'premium-addons-for-elementor'); ?></span>
97
  </p>
91
  <tr class="pa-roll-row">
92
  <th><?php echo __('Rollback Version', 'premium-addons-for-elementor'); ?></th>
93
  <td>
94
+ <div><?php echo sprintf( '<a target="_blank" href="%1$s" class="button pa-btn pa-rollback-button elementor-button-spinner">%2$s</a>', wp_nonce_url( admin_url( 'admin-post.php?action=premium_addons_rollback' ), 'premium_addons_rollback' ), __('Reinstall Version 3.6.6', 'premium-addons-for-elementor') ); ?></div>
95
  <p class="pa-roll-desc">
96
  <span><?php echo __('Warning: Please backup your database before making the rollback.', 'premium-addons-for-elementor'); ?></span>
97
  </p>
assets/frontend/css/premium-addons.css CHANGED
@@ -891,7 +891,8 @@ a.circle-border {
891
  a.square-border {
892
  border: solid black;
893
  }
894
- .premium-carousel-wrapper ul.slick-dots {
 
895
  list-style: none;
896
  text-align: center;
897
  margin: 0;
@@ -2090,6 +2091,12 @@ button.premium-modal-box-modal-close {
2090
  font-size: 20px;
2091
  }
2092
  /*
 
 
 
 
 
 
2093
  * Even Layout
2094
  */
2095
  .premium-blog-even .premium-blog-post-container {
@@ -3219,6 +3226,18 @@ button.premium-modal-box-modal-close {
3219
  border-radius: 75px;
3220
  margin: 15px 5px 20px;
3221
  padding: 7px 20px;
 
 
 
 
 
 
 
 
 
 
 
 
3222
  }
3223
  .pa-gallery-img {
3224
  position: relative;
891
  a.square-border {
892
  border: solid black;
893
  }
894
+ .premium-carousel-wrapper ul.slick-dots,
895
+ .premium-blog-wrap ul.slick-dots {
896
  list-style: none;
897
  text-align: center;
898
  margin: 0;
2091
  font-size: 20px;
2092
  }
2093
  /*
2094
+ * Carousel
2095
+ */
2096
+ .premium-blog-wrap ul.slick-dots {
2097
+ width: 100%;
2098
+ }
2099
+ /*
2100
  * Even Layout
2101
  */
2102
  .premium-blog-even .premium-blog-post-container {
3226
  border-radius: 75px;
3227
  margin: 15px 5px 20px;
3228
  padding: 7px 20px;
3229
+ -webkit-transition: all 0.3s ease-in-out;
3230
+ -moz-transition: all 0.3s ease-in-out;
3231
+ -ms-transition: all 0.3s ease-in-out;
3232
+ -o-transition: all 0.3s ease-in-out;
3233
+ transition: all 0.3s ease-in-out;
3234
+ }
3235
+ .premium-img-gallery-filter .premium-gallery-cats-container li a.category span {
3236
+ -webkit-transition: all 0.3s ease-in-out;
3237
+ -moz-transition: all 0.3s ease-in-out;
3238
+ -ms-transition: all 0.3s ease-in-out;
3239
+ -o-transition: all 0.3s ease-in-out;
3240
+ transition: all 0.3s ease-in-out;
3241
  }
3242
  .pa-gallery-img {
3243
  position: relative;
assets/frontend/js/lib/scrollify.js DELETED
@@ -1,868 +0,0 @@
1
- /*!
2
- * jQuery Scrollify
3
- * Version 1.0.20
4
- *
5
- * Requires:
6
- * - jQuery 1.7 or higher
7
- *
8
- * https://github.com/lukehaas/Scrollify
9
- *
10
- * Copyright 2016, Luke Haas
11
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
12
- * this software and associated documentation files (the "Software"), to deal in
13
- * the Software without restriction, including without limitation the rights to
14
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
15
- * the Software, and to permit persons to whom the Software is furnished to do so,
16
- * subject to the following conditions:
17
- *
18
- * The above copyright notice and this permission notice shall be included in all
19
- * copies or substantial portions of the Software.
20
- *
21
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
23
- * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
24
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
25
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
26
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
-
28
-
29
-
30
- if touchScroll is false - update index
31
-
32
- */
33
- (function (global,factory) {
34
- "use strict";
35
- if (typeof define === 'function' && define.amd) {
36
- // AMD. Register as an anonymous module.
37
- define(['jquery'], function($) {
38
- return factory($, global, global.document);
39
- });
40
- } else if (typeof module === 'object' && module.exports) {
41
- // Node/CommonJS
42
- module.exports = factory(require('jquery'), global, global.document);
43
- } else {
44
- // Browser globals
45
- factory(jQuery, global, global.document);
46
- }
47
- }(typeof window !== 'undefined' ? window : this, function ($, window, document, undefined) {
48
- "use strict";
49
- var heights = [],
50
- names = [],
51
- elements = [],
52
- overflow = [],
53
- index = 0,
54
- currentIndex = 0,
55
- interstitialIndex = 1,
56
- hasLocation = false,
57
- timeoutId,
58
- timeoutId2,
59
- $window = $(window),
60
- portHeight,
61
- top = $window.scrollTop(),
62
- scrollable = false,
63
- locked = false,
64
- scrolled = false,
65
- manualScroll,
66
- swipeScroll,
67
- util,
68
- disabled = false,
69
- scrollSamples = [],
70
- scrollTime = new Date().getTime(),
71
- currentScrollID = null,
72
- firstLoad = true,
73
- initialised = false,
74
- destination = 0,
75
- wheelEvent = 'onwheel' in document ? 'wheel' : document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll',
76
- settings = {
77
- //section should be an identifier that is the same for each section
78
- section: ".section",
79
- sectionName: "section-name",
80
- interstitialSection: "",
81
- easing: "easeOutExpo",
82
- scrollSpeed: 1100,
83
- offset: 0,
84
- scrollbars: true,
85
- templates: false,
86
- target:"html,body",
87
- standardScrollElements: false,
88
- setHeights: true,
89
- overflowScroll:true,
90
- updateHash: true,
91
- touchScroll:true,
92
- before:function() {},
93
- after:function() {},
94
- afterResize:function() {},
95
- afterRender:function() {}
96
- };
97
- function getportHeight() {
98
- return ($window.height() + settings.offset);
99
- }
100
- function animateScroll(index,instant,callbacks,toTop) {
101
- if(currentIndex===index) {
102
- callbacks = false;
103
- }
104
- if(disabled===true) {
105
- return true;
106
- }
107
- if(names[index]) {
108
- scrollable = false;
109
- if(firstLoad===true) {
110
- firstLoad = false;
111
- settings.afterRender();
112
- }
113
- if(callbacks) {
114
- if( typeof settings.before == 'function' && settings.before(index,elements) === false ){
115
- return true;
116
- }
117
- }
118
- interstitialIndex = 1;
119
- destination = (!index) ? 0 : heights[index];
120
- if(firstLoad===false && currentIndex>index && toTop===false) {
121
- //We're going backwards
122
- if(overflow[index]) {
123
- portHeight = getportHeight();
124
-
125
- interstitialIndex = parseInt(elements[index].outerHeight()/portHeight);
126
-
127
- destination = parseInt(heights[index])+(elements[index].outerHeight()-portHeight);
128
- }
129
- }
130
-
131
-
132
- if(settings.updateHash && settings.sectionName && !(firstLoad===true && index===0)) {
133
- if(history.pushState) {
134
- try {
135
- history.replaceState(null, null, names[index]);
136
- } catch (e) {
137
- if(window.console) {
138
- console.warn("Scrollify warning: Page must be hosted to manipulate the hash value.");
139
- }
140
- }
141
-
142
- } else {
143
- window.location.hash = names[index];
144
- }
145
- }
146
-
147
- currentIndex = index;
148
- if(instant) {
149
- $(settings.target).stop().scrollTop(destination);
150
- if(callbacks) {
151
- settings.after(index,elements);
152
- }
153
- } else {
154
- locked = true;
155
- if( $().velocity ) {
156
- $(settings.target).stop().velocity('scroll', {
157
- duration: settings.scrollSpeed,
158
- easing: settings.easing,
159
- offset: destination,
160
- mobileHA: false
161
- });
162
- } else {
163
- $(settings.target).stop().animate({
164
- scrollTop: destination
165
- }, settings.scrollSpeed,settings.easing);
166
- }
167
-
168
- if(window.location.hash.length && settings.sectionName && window.console) {
169
- try {
170
- if($(window.location.hash).length) {
171
- console.warn("Scrollify warning: ID matches hash value - this will cause the page to anchor.");
172
- }
173
- } catch (e) {}
174
- }
175
- $(settings.target).promise().done(function(){
176
- locked = false;
177
- firstLoad = false;
178
- if(callbacks) {
179
- settings.after(index,elements);
180
- }
181
- });
182
- }
183
-
184
- }
185
- }
186
-
187
- function isAccelerating(samples) {
188
- function average(num) {
189
- var sum = 0;
190
-
191
- var lastElements = samples.slice(Math.max(samples.length - num, 1));
192
-
193
- for(var i = 0; i < lastElements.length; i++){
194
- sum += lastElements[i];
195
- }
196
-
197
- return Math.ceil(sum/num);
198
- }
199
-
200
- var avEnd = average(10);
201
- var avMiddle = average(70);
202
-
203
- if(avEnd >= avMiddle) {
204
- return true;
205
- } else {
206
- return false;
207
- }
208
- }
209
- var scrollify = function(options) {
210
- initialised = true;
211
- $.easing['easeOutExpo'] = function(x, t, b, c, d) {
212
- return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
213
- };
214
-
215
- manualScroll = {
216
- handleMousedown:function() {
217
- if(disabled===true) {
218
- return true;
219
- }
220
- scrollable = false;
221
- scrolled = false;
222
- },
223
- handleMouseup:function() {
224
- if(disabled===true) {
225
- return true;
226
- }
227
- scrollable = true;
228
- if(scrolled) {
229
- //instant,callbacks
230
- manualScroll.calculateNearest(false,true);
231
- }
232
- },
233
- handleScroll:function() {
234
- if(disabled===true) {
235
- return true;
236
- }
237
- if(timeoutId){
238
- clearTimeout(timeoutId);
239
- }
240
-
241
- timeoutId = setTimeout(function(){
242
- scrolled = true;
243
- if(scrollable===false) {
244
- return false;
245
- }
246
- scrollable = false;
247
- //instant,callbacks
248
- manualScroll.calculateNearest(false,true);
249
- }, 200);
250
- },
251
- calculateNearest:function(instant,callbacks) {
252
- top = $window.scrollTop();
253
- var i =1,
254
- max = heights.length,
255
- closest = 0,
256
- prev = Math.abs(heights[0] - top),
257
- diff;
258
- for(;i<max;i++) {
259
- diff = Math.abs(heights[i] - top);
260
-
261
- if(diff < prev) {
262
- prev = diff;
263
- closest = i;
264
- }
265
- }
266
- if((atBottom() && closest>index) || atTop()) {
267
- index = closest;
268
- //index, instant, callbacks, toTop
269
- animateScroll(closest,instant,callbacks,false);
270
- }
271
- },
272
- wheelHandler:function( e ) {
273
-
274
- var sectionSelector = settings.templates ? ".premium-vscroll-temp" : ".elementor-top-section",
275
- $section = $( e.target ).closest( sectionSelector ),
276
- sectionID = $section.attr("id");
277
-
278
- currentScrollID = sectionID;
279
-
280
- if(disabled===true) {
281
- return true;
282
- } else if(settings.standardScrollElements) {
283
- if($(e.target).is(settings.standardScrollElements) || $(e.target).closest(settings.standardScrollElements).length) {
284
- return true;
285
- }
286
- }
287
- if(!overflow[index]) {
288
- e.preventDefault();
289
- }
290
- var currentScrollTime = new Date().getTime();
291
-
292
-
293
- e = e || window.event;
294
- var value;
295
- if (e.originalEvent) {
296
- value = e.originalEvent.wheelDelta || -e.originalEvent.deltaY || -e.originalEvent.detail;
297
- } else {
298
- value = e.wheelDelta || -e.deltaY || -e.detail;
299
- }
300
- var delta = Math.max(-1, Math.min(1, value));
301
-
302
- //delta = delta || -e.originalEvent.detail / 3 || e.originalEvent.wheelDelta / 120;
303
-
304
- if(scrollSamples.length > 149){
305
- scrollSamples.shift();
306
- }
307
- //scrollSamples.push(Math.abs(delta*10));
308
- scrollSamples.push(Math.abs(value));
309
-
310
- if((currentScrollTime-scrollTime) > 200){
311
- scrollSamples = [];
312
- }
313
- scrollTime = currentScrollTime;
314
-
315
-
316
- if(locked) {
317
- return false;
318
- }
319
- if(delta<0) {
320
- if(index<heights.length-1) {
321
- if(atBottom()) {
322
- if(isAccelerating(scrollSamples)) {
323
- e.preventDefault();
324
- index++;
325
- locked = true;
326
- //index, instant, callbacks, toTop
327
- animateScroll(index,false,true, false);
328
- } else {
329
- return false;
330
- }
331
- }
332
- }
333
- } else if(delta>0) {
334
- if(index>0) {
335
- if(atTop()) {
336
- if(isAccelerating(scrollSamples)) {
337
- e.preventDefault();
338
- index--;
339
- locked = true;
340
- //index, instant, callbacks, toTop
341
- animateScroll(index,false,true, false);
342
- } else {
343
- return false
344
- }
345
- }
346
- }
347
- }
348
-
349
- },
350
- keyHandler:function(e) {
351
- if(disabled===true || document.activeElement.readOnly===false) {
352
- return true;
353
- } else if(settings.standardScrollElements) {
354
- if($(e.target).is(settings.standardScrollElements) || $(e.target).closest(settings.standardScrollElements).length) {
355
- return true;
356
- }
357
- }
358
- if(locked===true) {
359
- return false;
360
- }
361
- if(e.keyCode==38 || e.keyCode==33) {
362
- if(index>0) {
363
- if(atTop()) {
364
- e.preventDefault();
365
- index--;
366
- //index, instant, callbacks, toTop
367
- animateScroll(index,false,true,false);
368
- }
369
- }
370
- } else if(e.keyCode==40 || e.keyCode==34) {
371
- if(index<heights.length-1) {
372
- if(atBottom()) {
373
- e.preventDefault();
374
- index++;
375
- //index, instant, callbacks, toTop
376
- animateScroll(index,false,true,false);
377
- }
378
- }
379
- }
380
- },
381
- init:function() {
382
- if(settings.scrollbars) {
383
- $window.on('mousedown', manualScroll.handleMousedown);
384
- $window.on('mouseup', manualScroll.handleMouseup);
385
- $window.on('scroll', manualScroll.handleScroll);
386
- } else {
387
- $("body").css({"overflow":"hidden"});
388
- }
389
- window.addEventListener(wheelEvent, manualScroll.wheelHandler, { passive: false });
390
- //$(document).bind(wheelEvent,manualScroll.wheelHandler);
391
- $window.on('keydown', manualScroll.keyHandler);
392
- }
393
- };
394
-
395
- swipeScroll = {
396
- touches : {
397
- "touchstart": {"y":-1,"x":-1},
398
- "touchmove" : {"y":-1,"x":-1},
399
- "touchend" : false,
400
- "direction" : "undetermined"
401
- },
402
- options:{
403
- "distance" : 30,
404
- "timeGap" : 800,
405
- "timeStamp" : new Date().getTime()
406
- },
407
- touchHandler: function(event) {
408
- if(disabled===true) {
409
- return true;
410
- } else if(settings.standardScrollElements) {
411
- if($(event.target).is(settings.standardScrollElements) || $(event.target).closest(settings.standardScrollElements).length) {
412
- return true;
413
- }
414
- }
415
- var touch;
416
- if (typeof event !== 'undefined'){
417
- if (typeof event.touches !== 'undefined') {
418
- touch = event.touches[0];
419
- switch (event.type) {
420
- case 'touchstart':
421
- swipeScroll.touches.touchstart.y = touch.pageY;
422
- swipeScroll.touches.touchmove.y = -1;
423
-
424
- swipeScroll.touches.touchstart.x = touch.pageX;
425
- swipeScroll.touches.touchmove.x = -1;
426
-
427
- swipeScroll.options.timeStamp = new Date().getTime();
428
- swipeScroll.touches.touchend = false;
429
- case 'touchmove':
430
- swipeScroll.touches.touchmove.y = touch.pageY;
431
- swipeScroll.touches.touchmove.x = touch.pageX;
432
- if(swipeScroll.touches.touchstart.y!==swipeScroll.touches.touchmove.y && (Math.abs(swipeScroll.touches.touchstart.y-swipeScroll.touches.touchmove.y)>Math.abs(swipeScroll.touches.touchstart.x-swipeScroll.touches.touchmove.x))) {
433
- //if(!overflow[index]) {
434
- event.preventDefault();
435
- //}
436
- swipeScroll.touches.direction = "y";
437
- if((swipeScroll.options.timeStamp+swipeScroll.options.timeGap)<(new Date().getTime()) && swipeScroll.touches.touchend == false) {
438
-
439
- swipeScroll.touches.touchend = true;
440
- if (swipeScroll.touches.touchstart.y > -1) {
441
-
442
- if(Math.abs(swipeScroll.touches.touchmove.y-swipeScroll.touches.touchstart.y)>swipeScroll.options.distance) {
443
- if(swipeScroll.touches.touchstart.y < swipeScroll.touches.touchmove.y) {
444
-
445
- swipeScroll.up();
446
-
447
- } else {
448
- swipeScroll.down();
449
-
450
- }
451
- }
452
- }
453
- }
454
- }
455
- break;
456
- case 'touchend':
457
- if(swipeScroll.touches[event.type]===false) {
458
- swipeScroll.touches[event.type] = true;
459
- if (swipeScroll.touches.touchstart.y > -1 && swipeScroll.touches.touchmove.y > -1 && swipeScroll.touches.direction==="y") {
460
-
461
- if(Math.abs(swipeScroll.touches.touchmove.y-swipeScroll.touches.touchstart.y)>swipeScroll.options.distance) {
462
- if(swipeScroll.touches.touchstart.y < swipeScroll.touches.touchmove.y) {
463
- swipeScroll.up();
464
-
465
- } else {
466
- swipeScroll.down();
467
-
468
- }
469
- }
470
- swipeScroll.touches.touchstart.y = -1;
471
- swipeScroll.touches.touchstart.x = -1;
472
- swipeScroll.touches.direction = "undetermined";
473
- }
474
- }
475
- default:
476
- break;
477
- }
478
- }
479
- }
480
- },
481
- down: function() {
482
-
483
- if(index<heights.length) {
484
-
485
- if(atBottom() && index<heights.length-1) {
486
-
487
- index++;
488
- //index, instant, callbacks, toTop
489
- animateScroll(index,false,true,false);
490
- } else {
491
- portHeight = getportHeight();
492
- if(Math.floor(elements[index].height()/portHeight)>interstitialIndex) {
493
-
494
- interstitialScroll(parseInt(heights[index])+(portHeight*interstitialIndex));
495
- interstitialIndex += 1;
496
-
497
- } else {
498
- interstitialScroll(parseInt(heights[index])+(elements[index].outerHeight()-portHeight));
499
- }
500
-
501
- }
502
- }
503
- },
504
- up: function() {
505
- if(index>=0) {
506
- if(atTop() && index>0) {
507
-
508
- index--;
509
- //index, instant, callbacks, toTop
510
- animateScroll(index,false,true,false);
511
- } else {
512
-
513
- if(interstitialIndex>2) {
514
- portHeight = getportHeight();
515
-
516
- interstitialIndex -= 1;
517
- interstitialScroll(parseInt(heights[index])+(portHeight*interstitialIndex));
518
-
519
- } else {
520
-
521
- interstitialIndex = 1;
522
- interstitialScroll(parseInt(heights[index]));
523
- }
524
- }
525
-
526
- }
527
- },
528
- init: function() {
529
- if (document.addEventListener && settings.touchScroll) {
530
- var eventListenerOptions = {
531
- passive: false
532
- };
533
- document.addEventListener('touchstart', swipeScroll.touchHandler, eventListenerOptions);
534
- document.addEventListener('touchmove', swipeScroll.touchHandler, eventListenerOptions);
535
- document.addEventListener('touchend', swipeScroll.touchHandler, eventListenerOptions);
536
- }
537
- }
538
- };
539
-
540
-
541
- util = {
542
- refresh:function(withCallback,scroll) {
543
- clearTimeout(timeoutId2);
544
- timeoutId2 = setTimeout(function() {
545
- //retain position
546
- sizePanels(true);
547
- //scroll, firstLoad
548
- calculatePositions(scroll,false);
549
- if(withCallback) {
550
- settings.afterResize();
551
- }
552
- },400);
553
- },
554
- handleUpdate:function() {
555
- //callbacks, scroll
556
- //changed from false,true to false,false
557
- util.refresh(false,false);
558
- },
559
- handleResize:function() {
560
- //callbacks, scroll
561
- util.refresh(true,false);
562
- },
563
- handleOrientation:function() {
564
- //callbacks, scroll
565
- util.refresh(true,true);
566
- }
567
- };
568
- settings = $.extend(settings, options);
569
-
570
- //retain position
571
- sizePanels(false);
572
-
573
- calculatePositions(false,true);
574
-
575
- if(true===hasLocation) {
576
- //index, instant, callbacks, toTop
577
- animateScroll(index,false,true,true);
578
- } else {
579
- setTimeout(function() {
580
- //instant,callbacks
581
- manualScroll.calculateNearest(true,false);
582
- },200);
583
- }
584
- if(heights.length) {
585
- manualScroll.init();
586
- swipeScroll.init();
587
-
588
- $window.on("resize",util.handleResize);
589
- if (document.addEventListener) {
590
- window.addEventListener("orientationchange", util.handleOrientation, false);
591
- }
592
- }
593
- function interstitialScroll(pos) {
594
- if( $().velocity ) {
595
- $(settings.target).stop().velocity('scroll', {
596
- duration: settings.scrollSpeed,
597
- easing: settings.easing,
598
- offset: pos,
599
- mobileHA: false
600
- });
601
- } else {
602
- $(settings.target).stop().animate({
603
- scrollTop: pos
604
- }, settings.scrollSpeed,settings.easing);
605
- }
606
- }
607
-
608
- function sizePanels(keepPosition) {
609
- if(keepPosition) {
610
- top = $window.scrollTop();
611
- }
612
-
613
- var selector = settings.section;
614
- overflow = [];
615
- if(settings.interstitialSection.length) {
616
- selector += "," + settings.interstitialSection;
617
- }
618
- if(settings.scrollbars===false) {
619
- settings.overflowScroll = false;
620
- }
621
- portHeight = getportHeight();
622
- $(selector).each(function(i) {
623
- var $this = $(this);
624
-
625
- if(settings.setHeights) {
626
- if($this.is(settings.interstitialSection)) {
627
- overflow[i] = false;
628
- } else {
629
- if(($this.css("height","auto").outerHeight()<portHeight) || $this.css("overflow")==="hidden") {
630
- $this.css({"height":portHeight});
631
-
632
- overflow[i] = false;
633
- } else {
634
-
635
- $this.css({"height":$this.outerHeight()});
636
-
637
- if(settings.overflowScroll) {
638
- overflow[i] = true;
639
- } else {
640
- overflow[i] = false;
641
- }
642
- }
643
-
644
- }
645
-
646
- } else {
647
-
648
- if(($this.outerHeight()<portHeight) || (settings.overflowScroll===false)) {
649
- overflow[i] = false;
650
- } else {
651
- overflow[i] = true;
652
- }
653
- }
654
- });
655
- if(keepPosition) {
656
- $window.scrollTop(top);
657
- }
658
- }
659
- function calculatePositions(scroll,firstLoad) {
660
- var selector = settings.section;
661
- if(settings.interstitialSection.length) {
662
- selector += "," + settings.interstitialSection;
663
- }
664
- heights = [];
665
- names = [];
666
- elements = [];
667
- $(selector).each(function(i){
668
- var $this = $(this);
669
- if(i>0) {
670
- heights[i] = parseInt($this.offset().top) + settings.offset;
671
- } else {
672
- heights[i] = parseInt($this.offset().top);
673
- }
674
- if(settings.sectionName && $this.data(settings.sectionName)) {
675
- names[i] = "#" + $this.data(settings.sectionName).toString().replace(/ /g,"-");
676
- } else {
677
- if($this.is(settings.interstitialSection)===false) {
678
- names[i] = "#" + (i + 1);
679
- } else {
680
- names[i] = "#";
681
- if(i===$(selector).length-1 && i>1) {
682
- heights[i] = heights[i-1] + (parseInt($($(selector)[i-1]).outerHeight()) - parseInt($(window).height())) + parseInt($this.outerHeight());
683
- }
684
- }
685
- }
686
- elements[i] = $this;
687
- try {
688
- if($(names[i]).length && window.console) {
689
- console.warn("Scrollify warning: Section names can't match IDs - this will cause the browser to anchor.");
690
- }
691
- } catch (e) {}
692
-
693
- if(window.location.hash===names[i]) {
694
- index = i;
695
- hasLocation = true;
696
- }
697
-
698
- });
699
-
700
- if(true===scroll) {
701
- //index, instant, callbacks, toTop
702
- animateScroll(index,false,false,false);
703
- }
704
- }
705
-
706
- function atTop() {
707
- if(!overflow[index]) {
708
- return true;
709
- }
710
- top = $window.scrollTop();
711
- if(top>parseInt(heights[index])) {
712
- return false;
713
- } else {
714
- return true;
715
- }
716
- }
717
- function atBottom() {
718
- if(!overflow[index]) {
719
- return true;
720
- }
721
- top = $window.scrollTop();
722
- portHeight = getportHeight();
723
-
724
- if(top<parseInt(heights[index])+(elements[index].outerHeight()-portHeight)-28) {
725
-
726
- return false;
727
-
728
- } else {
729
- return true;
730
- }
731
- }
732
- }
733
-
734
- function move(panel,instant) {
735
- var z = names.length;
736
- for(;z>=0;z--) {
737
- if(typeof panel === 'string') {
738
- if (names[z]===panel) {
739
- index = z;
740
- //index, instant, callbacks, toTop
741
- animateScroll(z,instant,true,true);
742
- }
743
- } else {
744
- if(z===panel) {
745
- index = z;
746
- //index, instant, callbacks, toTop
747
- animateScroll(z,instant,true,true);
748
- }
749
- }
750
- }
751
- }
752
- scrollify.move = function(panel) {
753
- if(panel===undefined) {
754
- return false;
755
- }
756
- if(panel.originalEvent) {
757
- panel = $(this).attr("href");
758
- }
759
- move(panel,false);
760
- };
761
- scrollify.instantMove = function(panel) {
762
- if(panel===undefined) {
763
- return false;
764
- }
765
- move(panel,true);
766
- };
767
- scrollify.next = function() {
768
- if(index<names.length) {
769
- index += 1;
770
- //index, instant, callbacks, toTop
771
- animateScroll(index,false,true,true);
772
- }
773
- };
774
- scrollify.previous = function() {
775
- if(index>0) {
776
- index -= 1;
777
- //index, instant, callbacks, toTop
778
- animateScroll(index,false,true,true);
779
- }
780
- };
781
- scrollify.instantNext = function() {
782
- if(index<names.length) {
783
- index += 1;
784
- //index, instant, callbacks, toTop
785
- animateScroll(index,true,true,true);
786
- }
787
- };
788
- scrollify.instantPrevious = function() {
789
- if(index>0) {
790
- index -= 1;
791
- //index, instant, callbacks, toTop
792
- animateScroll(index,true,true,true);
793
- }
794
- };
795
- scrollify.destroy = function() {
796
- if(!initialised) {
797
- return false;
798
- }
799
- if(settings.setHeights) {
800
- $(settings.section).each(function() {
801
- $(this).css("height","auto");
802
- });
803
- }
804
- $window.off("resize",util.handleResize);
805
- if(settings.scrollbars) {
806
- $window.off('mousedown', manualScroll.handleMousedown);
807
- $window.off('mouseup', manualScroll.handleMouseup);
808
- $window.off('scroll', manualScroll.handleScroll);
809
- }
810
- // $window.off(wheelEvent,manualScroll.wheelHandler);
811
- window.removeEventListener(wheelEvent,manualScroll.wheelHandler);
812
- $window.off('keydown', manualScroll.keyHandler);
813
-
814
- if (document.addEventListener && settings.touchScroll) {
815
- document.removeEventListener('touchstart', swipeScroll.touchHandler, false);
816
- document.removeEventListener('touchmove', swipeScroll.touchHandler, false);
817
- document.removeEventListener('touchend', swipeScroll.touchHandler, false);
818
- }
819
- heights = [];
820
- names = [];
821
- elements = [];
822
- overflow = [];
823
- };
824
- scrollify.update = function() {
825
- if(!initialised) {
826
- return false;
827
- }
828
- util.handleUpdate();
829
- };
830
- scrollify.current = function() {
831
- return elements[index];
832
- };
833
- scrollify.currentIndex = function() {
834
- return index;
835
- };
836
- scrollify.disable = function() {
837
- disabled = true;
838
- };
839
- scrollify.enable = function() {
840
- disabled = false;
841
- if (initialised) {
842
- //instant,callbacks
843
- manualScroll.calculateNearest(false,false);
844
- }
845
- };
846
- scrollify.currentScroll = function() {
847
- return currentScrollID;
848
- };
849
- scrollify.isScrollable = function() {
850
- return scrollable;
851
- };
852
- scrollify.isDisabled = function() {
853
- return disabled;
854
- };
855
- scrollify.setOptions = function(updatedOptions) {
856
- if(!initialised) {
857
- return false;
858
- }
859
- if(typeof updatedOptions === "object") {
860
- settings = $.extend(settings, updatedOptions);
861
- util.handleUpdate();
862
- } else if(window.console) {
863
- console.warn("Scrollify warning: setOptions expects an object.");
864
- }
865
- };
866
- $.scrollify = scrollify;
867
- return scrollify;
868
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/frontend/js/premium-addons.js CHANGED
@@ -126,7 +126,8 @@
126
  originLeft: ltrMode,
127
  masonry: {
128
  columnWidth: columnWidth
129
- }
 
130
  });
131
  });
132
 
@@ -482,7 +483,7 @@
482
  nextArrow: carouselSettings["nextArrow"],
483
  prevArrow: carouselSettings["prevArrow"],
484
  dots: carouselSettings["dots"],
485
- customPaging: function ( slider, i ) {
486
  return (
487
  '<i class="' +
488
  carouselSettings["customPaging"] +
@@ -629,16 +630,9 @@
629
  /****** Premium Blog Handler ******/
630
  var PremiumBlogHandler = function ($scope, $) {
631
  var blogElement = $scope.find(".premium-blog-wrap"),
632
- colsNumber = blogElement.data("col"),
633
- carousel = blogElement.data("carousel"),
634
- autoPlay = blogElement.data("play"),
635
- speed = blogElement.data("speed"),
636
- fade = blogElement.data("fade"),
637
- prevArrow =
638
- '<a type="button" data-role="none" class="carousel-arrow carousel-prev" aria-label="Next" role="button" style=""><i class="fa fa-angle-left" aria-hidden="true"></i></a>',
639
- nextArrow =
640
- '<a type="button" data-role="none" class="carousel-arrow carousel-next" aria-label="Next" role="button" style=""><i class="fa fa-angle-right" aria-hidden="true"></i></a>';
641
-
642
  $scope.find(".premium-blog-cats-container li a").click(function (e) {
643
  e.preventDefault();
644
 
@@ -672,11 +666,27 @@
672
  }
673
 
674
  if ( carousel && ! masonryBlog ) {
675
- $(blogElement).slick({
676
- infinite: true,
677
- slidesToShow: colsNumber,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
678
  slidesToScroll: colsNumber,
679
- responsive: [
680
  {
681
  breakpoint: 769,
682
  settings: {
@@ -692,12 +702,18 @@
692
  }
693
  }
694
  ],
695
- autoplay: autoPlay,
696
- autoplaySpeed: speed,
697
- nextArrow: nextArrow,
698
- prevArrow: prevArrow,
699
- fade: fade,
700
- draggable: true
 
 
 
 
 
 
701
  });
702
  }
703
  };
126
  originLeft: ltrMode,
127
  masonry: {
128
  columnWidth: columnWidth
129
+ },
130
+ sortBy: gridSettings["sort_by"]
131
  });
132
  });
133
 
483
  nextArrow: carouselSettings["nextArrow"],
484
  prevArrow: carouselSettings["prevArrow"],
485
  dots: carouselSettings["dots"],
486
+ customPaging: function () {
487
  return (
488
  '<i class="' +
489
  carouselSettings["customPaging"] +
630
  /****** Premium Blog Handler ******/
631
  var PremiumBlogHandler = function ($scope, $) {
632
  var blogElement = $scope.find(".premium-blog-wrap"),
633
+ colsNumber = blogElement.data("col"),
634
+ carousel = blogElement.data("carousel");
635
+
 
 
 
 
 
 
 
636
  $scope.find(".premium-blog-cats-container li a").click(function (e) {
637
  e.preventDefault();
638
 
666
  }
667
 
668
  if ( carousel && ! masonryBlog ) {
669
+
670
+ var autoPlay = blogElement.data("play"),
671
+ speed = blogElement.data("speed"),
672
+ fade = blogElement.data("fade"),
673
+ arrows = blogElement.data("arrows"),
674
+ dots = blogElement.data("dots"),
675
+ prevArrow = null,
676
+ nextArrow = null;
677
+
678
+ if ( arrows ) {
679
+ prevArrow = '<a type="button" data-role="none" class="carousel-arrow carousel-prev" aria-label="Next" role="button" style=""><i class="fas fa-angle-left" aria-hidden="true"></i></a>',
680
+ nextArrow = '<a type="button" data-role="none" class="carousel-arrow carousel-next" aria-label="Next" role="button" style=""><i class="fas fa-angle-right" aria-hidden="true"></i></a>';
681
+ } else {
682
+ prevArrow = prevArrow = '';
683
+ }
684
+
685
+ $( blogElement ).slick({
686
+ infinite: true,
687
+ slidesToShow: colsNumber,
688
  slidesToScroll: colsNumber,
689
+ responsive: [
690
  {
691
  breakpoint: 769,
692
  settings: {
702
  }
703
  }
704
  ],
705
+ autoplay: autoPlay,
706
+ autoplaySpeed: speed,
707
+ nextArrow: nextArrow,
708
+ prevArrow: prevArrow,
709
+ fade: fade,
710
+ draggable: true,
711
+ dots: dots,
712
+ customPaging: function () {
713
+ return (
714
+ '<i class="fas fa-circle"></i>'
715
+ );
716
+ }
717
  });
718
  }
719
  };
assets/frontend/js/premium-vscroll.js CHANGED
@@ -28,15 +28,9 @@
28
  },
29
  settings = $.extend({}, defaultSettings, settings),
30
  sections = {},
31
- timeStamp = 0,
32
  currentSection = null,
33
- platform = navigator.platform,
34
  isScrolling = false,
35
- sectionChanged = false,
36
- inScope = true;
37
-
38
-
39
- var interstitialIndex = 1;
40
 
41
  var touchStartY = 0,
42
  touchEndY = 0;
@@ -142,7 +136,7 @@
142
 
143
  elementorFrontend.waypoint(
144
  $section,
145
- function( direction ) {
146
 
147
  var $this = $( this ),
148
  sectionId = $this.attr( "id" );
@@ -254,8 +248,7 @@
254
 
255
  self.onTouchMove = function( e ) {
256
 
257
-
258
- if ( inScope ) {
259
  self.preventDefault( e );
260
  }
261
 
@@ -271,14 +264,12 @@
271
  var $target = $( e.target ),
272
  sectionSelector = checkTemps ? ".premium-vscroll-temp" : ".elementor-top-section",
273
  $section = $target.closest( sectionSelector ),
274
- $vTarget = self.visible( $instance, true, false ),
275
  sectionId = $section.attr( "id" ),
276
  newSectionId = false,
277
  prevSectionId = false,
278
  nextSectionId = false,
279
  direction = false,
280
- windowScrollTop = $window.scrollTop(),
281
- dotIndex = $( ".premium-vscroll-dot-item.active" ).index();
282
 
283
  $( ".premium-vscroll-tooltip" ).hide();
284
 
@@ -320,7 +311,7 @@
320
 
321
  if ( "down" === direction ) {
322
 
323
- if ( ! prevSectionId && sections[ sectionId ].offset > windowScrollTop + 5 || ! self.atBottom( sectionId ) ) {
324
  newSectionId = sectionId;
325
  } else {
326
  newSectionId = nextSectionId;
@@ -330,14 +321,16 @@
330
 
331
  if ( newSectionId ) {
332
 
333
- inScope = true;
334
-
335
  $( ".premium-vscroll-dots, .premium-vscroll-nav-menu" ).removeClass( "premium-vscroll-dots-hide" );
336
-
337
- self.scrolling( newSectionId );
 
 
 
 
 
338
 
339
  } else {
340
- inScope = false;
341
 
342
  var $lastselector = checkTemps ? $instance : $( "#" + sectionId );
343
 
@@ -557,7 +550,6 @@
557
 
558
  self.onKeyUp = function(event, direction) {
559
  var direction = direction || "up",
560
- sectionId,
561
  nextItem = $(
562
  ".premium-vscroll-dot-item[data-menuanchor=" +
563
  currentSection +
@@ -616,32 +608,33 @@
616
 
617
  self.onWheel = function(event) {
618
 
619
- if (isScrolling) {
620
  event.preventDefault();
621
  return false;
622
  }
623
-
624
- var $target = $(event.target),
625
- sectionSelector = checkTemps
626
- ? ".premium-vscroll-temp"
627
- : ".elementor-top-section",
628
- $section = $target.closest(sectionSelector),
629
- $vTarget = self.visible($instance, true, false),
630
- sectionId = $section.attr("id"),
631
- newSectionId = false,
632
- prevSectionId = false,
633
- nextSectionId = false,
634
- delta = getDirection(event),
635
- direction = 0 > delta ? "down" : "up",
636
  windowScrollTop = $window.scrollTop(),
637
- dotIndex = $(".premium-vscroll-dot-item.active").index();
638
- if ("mobile" === deviceType || "tablet" === deviceType) {
 
 
639
  $(".premium-vscroll-tooltip").hide();
640
- if (dotIndex === $itemsList.length - 1 && !$vTarget) {
 
641
  $(
642
  ".premium-vscroll-dots, .premium-vscroll-nav-menu"
643
  ).addClass("premium-vscroll-dots-hide");
644
- } else if (dotIndex === 0 && !$vTarget) {
645
  if (
646
  $instance.offset().top - $(document).scrollTop() >
647
  200
@@ -657,21 +650,21 @@
657
  }
658
  }
659
 
660
- if (beforeCheck()) {
661
  sectionId = getFirstSection(sections);
662
  }
663
 
664
- if (afterCheck()) {
665
  sectionId = getLastSection(sections);
666
  }
667
- if (sectionId && sections.hasOwnProperty(sectionId)) {
 
 
668
  prevSectionId = self.checkPrevSection(sections, sectionId);
669
  nextSectionId = self.checkNextSection(sections, sectionId);
 
670
  if ("up" === direction) {
671
- if (
672
- !nextSectionId &&
673
- sections[sectionId].offset < windowScrollTop
674
- ) {
675
  newSectionId = sectionId;
676
  } else {
677
  newSectionId = prevSectionId;
@@ -679,32 +672,23 @@
679
  }
680
 
681
  if ("down" === direction) {
682
- if (
683
- !prevSectionId &&
684
- sections[sectionId].offset > windowScrollTop + 5
685
- ) {
686
  newSectionId = sectionId;
687
  } else {
688
  newSectionId = nextSectionId;
689
  }
690
  }
691
 
692
- if (newSectionId) {
693
- $(
694
- ".premium-vscroll-dots, .premium-vscroll-nav-menu"
695
- ).removeClass("premium-vscroll-dots-hide");
 
 
 
696
  event.preventDefault();
697
-
698
- if (
699
- event.timeStamp - timeStamp > 10 &&
700
- "MacIntel" == platform
701
- ) {
702
- timeStamp = event.timeStamp;
703
-
704
- return false;
705
- }
706
-
707
- self.onAnchorChange(newSectionId);
708
  } else {
709
  var $lastselector = checkTemps
710
  ? $instance
28
  },
29
  settings = $.extend({}, defaultSettings, settings),
30
  sections = {},
 
31
  currentSection = null,
 
32
  isScrolling = false,
33
+ sectionChanged = false;
 
 
 
 
34
 
35
  var touchStartY = 0,
36
  touchEndY = 0;
136
 
137
  elementorFrontend.waypoint(
138
  $section,
139
+ function() {
140
 
141
  var $this = $( this ),
142
  sectionId = $this.attr( "id" );
248
 
249
  self.onTouchMove = function( e ) {
250
 
251
+ if ( ! settings.showOverflow ) {
 
252
  self.preventDefault( e );
253
  }
254
 
264
  var $target = $( e.target ),
265
  sectionSelector = checkTemps ? ".premium-vscroll-temp" : ".elementor-top-section",
266
  $section = $target.closest( sectionSelector ),
 
267
  sectionId = $section.attr( "id" ),
268
  newSectionId = false,
269
  prevSectionId = false,
270
  nextSectionId = false,
271
  direction = false,
272
+ windowScrollTop = $window.scrollTop();
 
273
 
274
  $( ".premium-vscroll-tooltip" ).hide();
275
 
311
 
312
  if ( "down" === direction ) {
313
 
314
+ if ( ! prevSectionId && sections[ sectionId ].offset > windowScrollTop + 5 ) {
315
  newSectionId = sectionId;
316
  } else {
317
  newSectionId = nextSectionId;
321
 
322
  if ( newSectionId ) {
323
 
 
 
324
  $( ".premium-vscroll-dots, .premium-vscroll-nav-menu" ).removeClass( "premium-vscroll-dots-hide" );
325
+
326
+ if ( settings.showOverflow ) {
327
+ if ( ! self.atBottom( sectionId ) )
328
+ return;
329
+ }
330
+
331
+ self.onAnchorChange( newSectionId );
332
 
333
  } else {
 
334
 
335
  var $lastselector = checkTemps ? $instance : $( "#" + sectionId );
336
 
550
 
551
  self.onKeyUp = function(event, direction) {
552
  var direction = direction || "up",
 
553
  nextItem = $(
554
  ".premium-vscroll-dot-item[data-menuanchor=" +
555
  currentSection +
608
 
609
  self.onWheel = function(event) {
610
 
611
+ if ( isScrolling ) {
612
  event.preventDefault();
613
  return false;
614
  }
615
+
616
+ var $target = $( event.target ),
617
+ sectionSelector = checkTemps ? ".premium-vscroll-temp" : ".elementor-top-section",
618
+ $section = $target.closest( sectionSelector ),
619
+ $vTarget = self.visible($instance, true, false),
620
+ sectionId = $section.attr("id"),
621
+ newSectionId = false,
622
+ prevSectionId = false,
623
+ nextSectionId = false,
624
+ delta = getDirection( event ),
625
+ direction = 0 > delta ? "down" : "up",
 
 
626
  windowScrollTop = $window.scrollTop(),
627
+ dotIndex = $(".premium-vscroll-dot-item.active").index();
628
+
629
+ if ( isTouch ) {
630
+
631
  $(".premium-vscroll-tooltip").hide();
632
+
633
+ if ( dotIndex === $itemsList.length - 1 && ! $vTarget ) {
634
  $(
635
  ".premium-vscroll-dots, .premium-vscroll-nav-menu"
636
  ).addClass("premium-vscroll-dots-hide");
637
+ } else if ( dotIndex === 0 && ! $vTarget ) {
638
  if (
639
  $instance.offset().top - $(document).scrollTop() >
640
  200
650
  }
651
  }
652
 
653
+ if ( beforeCheck() ) {
654
  sectionId = getFirstSection(sections);
655
  }
656
 
657
+ if ( afterCheck() ) {
658
  sectionId = getLastSection(sections);
659
  }
660
+
661
+ if ( sectionId && sections.hasOwnProperty( sectionId )) {
662
+
663
  prevSectionId = self.checkPrevSection(sections, sectionId);
664
  nextSectionId = self.checkNextSection(sections, sectionId);
665
+
666
  if ("up" === direction) {
667
+ if ( ! nextSectionId && sections[sectionId].offset < windowScrollTop ) {
 
 
 
668
  newSectionId = sectionId;
669
  } else {
670
  newSectionId = prevSectionId;
672
  }
673
 
674
  if ("down" === direction) {
675
+ if ( ! prevSectionId && sections[sectionId].offset > windowScrollTop + 5 ) {
 
 
 
676
  newSectionId = sectionId;
677
  } else {
678
  newSectionId = nextSectionId;
679
  }
680
  }
681
 
682
+ if ( newSectionId ) {
683
+
684
+ if ( ! self.atBottom( sectionId ) )
685
+ return;
686
+
687
+ $( ".premium-vscroll-dots, .premium-vscroll-nav-menu" ).removeClass("premium-vscroll-dots-hide");
688
+
689
  event.preventDefault();
690
+
691
+ self.onAnchorChange( newSectionId );
 
 
 
 
 
 
 
 
 
692
  } else {
693
  var $lastselector = checkTemps
694
  ? $instance
premium-addons-for-elementor.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Premium Addons for Elementor
4
  Description: Premium Addons Plugin Includes 22+ premium widgets for Elementor Page Builder.
5
  Plugin URI: https://premiumaddons.com
6
- Version: 3.6.6
7
  Author: Leap13
8
  Author URI: https://leap13.com/
9
  Text Domain: premium-addons-for-elementor
@@ -14,12 +14,12 @@ License: GNU General Public License v3.0
14
  if ( ! defined('ABSPATH') ) exit; // No access of directly access
15
 
16
  // Define Constants
17
- define('PREMIUM_ADDONS_VERSION', '3.6.6');
18
  define('PREMIUM_ADDONS_URL', plugins_url('/', __FILE__));
19
  define('PREMIUM_ADDONS_PATH', plugin_dir_path(__FILE__));
20
  define('PREMIUM_ADDONS_FILE', __FILE__);
21
  define('PREMIUM_ADDONS_BASENAME', plugin_basename( PREMIUM_ADDONS_FILE ) );
22
- define('PREMIUM_ADDONS_STABLE_VERSION', '3.6.5');
23
 
24
  if( ! class_exists('Premium_Addons_Elementor') ) {
25
 
3
  Plugin Name: Premium Addons for Elementor
4
  Description: Premium Addons Plugin Includes 22+ premium widgets for Elementor Page Builder.
5
  Plugin URI: https://premiumaddons.com
6
+ Version: 3.6.7
7
  Author: Leap13
8
  Author URI: https://leap13.com/
9
  Text Domain: premium-addons-for-elementor
14
  if ( ! defined('ABSPATH') ) exit; // No access of directly access
15
 
16
  // Define Constants
17
+ define('PREMIUM_ADDONS_VERSION', '3.6.7');
18
  define('PREMIUM_ADDONS_URL', plugins_url('/', __FILE__));
19
  define('PREMIUM_ADDONS_PATH', plugin_dir_path(__FILE__));
20
  define('PREMIUM_ADDONS_FILE', __FILE__);
21
  define('PREMIUM_ADDONS_BASENAME', plugin_basename( PREMIUM_ADDONS_FILE ) );
22
+ define('PREMIUM_ADDONS_STABLE_VERSION', '3.6.6');
23
 
24
  if( ! class_exists('Premium_Addons_Elementor') ) {
25
 
readme.txt CHANGED
@@ -5,7 +5,7 @@ Donate Link: https://premiumaddons.com/?utm_source=wp-repo&utm_medium=link&utm_c
5
  Requires at Least: 4.5
6
  Tested Up To: 5.2.2
7
  Requires PHP: 5.4
8
- Stable Tag: 3.6.6
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
@@ -174,6 +174,16 @@ Premium Addons for Elementor is 100% Ads Free, Ads can only be detected from You
174
 
175
  == Changelog ==
176
 
 
 
 
 
 
 
 
 
 
 
177
  = 3.6.6 =
178
 
179
  - Fixed: `Notice: Undefined variable: col_number in /premium-blog.php on line 1752'
5
  Requires at Least: 4.5
6
  Tested Up To: 5.2.2
7
  Requires PHP: 5.4
8
+ Stable Tag: 3.6.7
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
174
 
175
  == Changelog ==
176
 
177
+ = 3.6.7 =
178
+
179
+ - Tweak: Font Awesome 5 compatibility for all widgets.
180
+ - Tweak: Added `Navigation Dots` option for carousel in Blog widget.
181
+ - Tweak: Added `Text/Background Hover Color` option for filter tabs in Grid widget.
182
+ - Tweak: Added `Shuffle Images on Page Load` option to Grid widget.
183
+ - Fixed: Description container rendered even when description text is empty.
184
+ - Tweak: Show overflow content then scroll in Vertical Scroll widget.
185
+ - Fixed: Vertical Scroll issue on Mac OS.
186
+
187
  = 3.6.6 =
188
 
189
  - Fixed: `Notice: Undefined variable: col_number in /premium-blog.php on line 1752'
widgets/premium-blog.php CHANGED
@@ -693,6 +693,27 @@ class Premium_Blog extends Widget_Base {
693
  ]
694
  );
695
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
696
  $this->add_responsive_control('premium_blog_carousel_arrows_pos',
697
  [
698
  'label' => __('Arrows Position', 'premium-addons-for-elementor'),
@@ -709,7 +730,8 @@ class Premium_Blog extends Widget_Base {
709
  ],
710
  ],
711
  'condition' => [
712
- 'premium_blog_carousel' => 'yes'
 
713
  ],
714
  'selectors' => [
715
  '{{WRAPPER}} .premium-blog-wrap a.carousel-arrow.carousel-next' => 'right: {{SIZE}}{{UNIT}};',
@@ -1240,12 +1262,54 @@ class Premium_Blog extends Widget_Base {
1240
 
1241
  $this->end_controls_section();
1242
 
1243
- $this->start_controls_section('carousel_style',
1244
  [
1245
- 'label' => __('Carousel', 'premium-addons-for-elementor'),
1246
  'tab' => Controls_Manager::TAB_STYLE,
1247
  'condition' => [
1248
- 'premium_blog_carousel' => 'yes'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1249
  ]
1250
  ]
1251
  );
@@ -1745,9 +1809,6 @@ class Premium_Blog extends Widget_Base {
1745
  $posts_number = intval ( 100 / substr( $settings['premium_blog_columns_number'], 0, strpos( $settings['premium_blog_columns_number'], '%') ) );
1746
 
1747
  $carousel = 'yes' == $settings['premium_blog_carousel'] ? true : false;
1748
- $play = 'yes' == $settings['premium_blog_carousel_play'] ? true : false;
1749
- $fade = 'yes' == $settings['premium_blog_carousel_fade'] ? 'true' : 'false';
1750
- $speed = ! empty( $settings['premium_blog_carousel_autoplay_speed'] ) ? $settings['premium_blog_carousel_autoplay_speed'] : 5000;
1751
 
1752
  $this->add_render_attribute('blog', 'class', [
1753
  'premium-blog-wrap',
@@ -1756,16 +1817,29 @@ class Premium_Blog extends Widget_Base {
1756
  ]
1757
  );
1758
 
1759
- $this->add_render_attribute('blog', 'data-carousel', $carousel );
1760
-
1761
- $this->add_render_attribute('blog', 'data-fade', $fade );
1762
-
1763
- $this->add_render_attribute('blog', 'data-play', $play );
1764
-
1765
- $this->add_render_attribute('blog', 'data-speed', $speed );
1766
 
1767
- $this->add_render_attribute('blog', 'data-col', $posts_number );
1768
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1769
 
1770
  ?>
1771
  <div class="premium-blog">
693
  ]
694
  );
695
 
696
+ $this->add_control('premium_blog_carousel_dots',
697
+ [
698
+ 'label' => __('Navigation Dots', 'premium-addons-for-elementor'),
699
+ 'type' => Controls_Manager::SWITCHER,
700
+ 'condition' => [
701
+ 'premium_blog_carousel' => 'yes'
702
+ ]
703
+ ]
704
+ );
705
+
706
+ $this->add_control('premium_blog_carousel_arrows',
707
+ [
708
+ 'label' => __('Navigation Arrows', 'premium-addons-for-elementor'),
709
+ 'type' => Controls_Manager::SWITCHER,
710
+ 'default' => 'yes',
711
+ 'condition' => [
712
+ 'premium_blog_carousel' => 'yes'
713
+ ]
714
+ ]
715
+ );
716
+
717
  $this->add_responsive_control('premium_blog_carousel_arrows_pos',
718
  [
719
  'label' => __('Arrows Position', 'premium-addons-for-elementor'),
730
  ],
731
  ],
732
  'condition' => [
733
+ 'premium_blog_carousel' => 'yes',
734
+ 'premium_blog_carousel_arrows' => 'yes'
735
  ],
736
  'selectors' => [
737
  '{{WRAPPER}} .premium-blog-wrap a.carousel-arrow.carousel-next' => 'right: {{SIZE}}{{UNIT}};',
1262
 
1263
  $this->end_controls_section();
1264
 
1265
+ $this->start_controls_section('carousel_dots_style',
1266
  [
1267
+ 'label' => __('Carousel Dots', 'premium-addons-for-elementor'),
1268
  'tab' => Controls_Manager::TAB_STYLE,
1269
  'condition' => [
1270
+ 'premium_blog_carousel' => 'yes',
1271
+ 'premium_blog_carousel_dots' => 'yes'
1272
+ ]
1273
+ ]
1274
+ );
1275
+
1276
+ $this->add_control('carousel_dot_navigation_color',
1277
+ [
1278
+ 'label' => __( 'Color', 'premium-addons-for-elementor' ),
1279
+ 'type' => Controls_Manager::COLOR,
1280
+ 'scheme' => [
1281
+ 'type' => Scheme_Color::get_type(),
1282
+ 'value' => Scheme_Color::COLOR_2,
1283
+ ],
1284
+ 'selectors' => [
1285
+ '{{WRAPPER}} ul.slick-dots li' => 'color: {{VALUE}}'
1286
+ ]
1287
+ ]
1288
+ );
1289
+
1290
+ $this->add_control('carousel_dot_navigation_active_color',
1291
+ [
1292
+ 'label' => __( 'Active Color', 'premium-addons-for-elementor' ),
1293
+ 'type' => Controls_Manager::COLOR,
1294
+ 'scheme' => [
1295
+ 'type' => Scheme_Color::get_type(),
1296
+ 'value' => Scheme_Color::COLOR_1,
1297
+ ],
1298
+ 'selectors' => [
1299
+ '{{WRAPPER}} ul.slick-dots li.slick-active' => 'color: {{VALUE}}'
1300
+ ]
1301
+ ]
1302
+ );
1303
+
1304
+ $this->end_controls_section();
1305
+
1306
+ $this->start_controls_section('carousel_arrows_style',
1307
+ [
1308
+ 'label' => __('Carousel Arrows', 'premium-addons-for-elementor'),
1309
+ 'tab' => Controls_Manager::TAB_STYLE,
1310
+ 'condition' => [
1311
+ 'premium_blog_carousel' => 'yes',
1312
+ 'premium_blog_carousel_arrows' => 'yes'
1313
  ]
1314
  ]
1315
  );
1809
  $posts_number = intval ( 100 / substr( $settings['premium_blog_columns_number'], 0, strpos( $settings['premium_blog_columns_number'], '%') ) );
1810
 
1811
  $carousel = 'yes' == $settings['premium_blog_carousel'] ? true : false;
 
 
 
1812
 
1813
  $this->add_render_attribute('blog', 'class', [
1814
  'premium-blog-wrap',
1817
  ]
1818
  );
1819
 
1820
+ if ( $carousel ) {
1821
+
1822
+ $play = 'yes' == $settings['premium_blog_carousel_play'] ? true : false;
1823
+ $fade = 'yes' == $settings['premium_blog_carousel_fade'] ? 'true' : 'false';
1824
+ $arrows = 'yes' == $settings['premium_blog_carousel_arrows'] ? 'true' : 'false';
1825
+ $speed = ! empty( $settings['premium_blog_carousel_autoplay_speed'] ) ? $settings['premium_blog_carousel_autoplay_speed'] : 5000;
1826
+ $dots = 'yes' == $settings['premium_blog_carousel_dots'] ? 'true' : 'false';
1827
 
1828
+ $this->add_render_attribute('blog', 'data-carousel', $carousel );
1829
 
1830
+ $this->add_render_attribute('blog', 'data-fade', $fade );
1831
+
1832
+ $this->add_render_attribute('blog', 'data-play', $play );
1833
+
1834
+ $this->add_render_attribute('blog', 'data-speed', $speed );
1835
+
1836
+ $this->add_render_attribute('blog', 'data-col', $posts_number );
1837
+
1838
+ $this->add_render_attribute('blog', 'data-arrows', $arrows );
1839
+
1840
+ $this->add_render_attribute('blog', 'data-dots', $dots );
1841
+
1842
+ }
1843
 
1844
  ?>
1845
  <div class="premium-blog">
widgets/premium-button.php CHANGED
@@ -4,6 +4,7 @@ namespace PremiumAddons\Widgets;
4
 
5
  use PremiumAddons\Helper_Functions;
6
  use PremiumAddons\Includes;
 
7
  use Elementor\Widget_Base;
8
  use Elementor\Controls_Manager;
9
  use Elementor\Scheme_Color;
@@ -216,30 +217,38 @@ class Premium_Button extends Widget_Base {
216
  ]
217
  );
218
 
219
- $this->add_control('premium_button_icon_selection',
220
- [
221
- 'label' => __('Icon', 'premium-addons-for-elementor'),
222
- 'type' => Controls_Manager::ICON,
223
- 'default' => 'fa fa-bars',
224
- 'condition' => [
225
- 'premium_button_icon_switcher' => 'yes',
226
- 'premium_button_hover_effect!' => 'style4'
227
- ],
228
- 'label_block' => true,
229
- ]
230
- );
 
 
 
 
231
 
232
- $this->add_control('premium_button_style4_icon_selection',
233
- [
234
- 'label' => __('Icon', 'premium-addons-for-elementor'),
235
- 'type' => Controls_Manager::ICON,
236
- 'default' => 'fa fa-bars',
237
- 'condition' => [
238
- 'premium_button_hover_effect' => 'style4'
239
- ],
240
- 'label_block' => true,
241
- ]
242
- );
 
 
 
 
243
 
244
  $this->add_control('premium_button_icon_position',
245
  [
@@ -770,7 +779,15 @@ class Premium_Button extends Widget_Base {
770
 
771
  $this->end_controls_section();
772
  }
773
-
 
 
 
 
 
 
 
 
774
  protected function render() {
775
 
776
  $settings = $this->get_settings_for_display();
@@ -789,7 +806,13 @@ class Premium_Button extends Widget_Base {
789
 
790
  $button_event = $settings['premium_button_event_function'];
791
 
792
- $button_icon = $settings['premium_button_icon_selection'];
 
 
 
 
 
 
793
 
794
  if ( $settings['premium_button_hover_effect'] == 'none' ) {
795
  $style_dir = 'premium-button-none';
@@ -801,15 +824,71 @@ class Premium_Button extends Widget_Base {
801
  $style_dir = 'premium-button-style3-' . $settings['premium_button_icon_position'];
802
  } elseif ( $settings['premium_button_hover_effect'] == 'style4' ) {
803
  $style_dir = 'premium-button-style4-' . $settings['premium_button_style4_dir'];
804
- $slide_icon = $settings['premium_button_style4_icon_selection'];
 
 
 
 
 
 
 
 
805
  } elseif ( $settings['premium_button_hover_effect'] == 'style5' ) {
806
  $style_dir = 'premium-button-style5-' . $settings['premium_button_style5_dir'];
807
  }
808
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
809
 
810
  <div class="premium-button-container">
811
- <a class="premium-button <?php echo esc_attr($button_size); ?> <?php echo esc_attr($style_dir);?>" <?php if(!empty($button_url)) : ?>href="<?php echo esc_url($button_url); ?>"<?php endif;?><?php if(!empty($settings['premium_button_link']['is_external'])) : ?>target="_blank"<?php endif; ?><?php if(!empty($settings['premium_button_link']['nofollow'])) : ?>rel="nofollow"<?php endif; ?><?php if(!empty($settings['premium_button_event_function']) && $settings['premium_button_event_switcher']) : ?> onclick="<?php echo $button_event; ?>"<?php endif ?>><div class="premium-button-text-icon-wrapper"><?php if($settings['premium_button_icon_switcher'] && $settings['premium_button_icon_position'] == 'before'&& $settings['premium_button_hover_effect'] != 'style4' &&!empty($settings['premium_button_icon_selection'])) : ?><i class="fa <?php echo esc_attr($button_icon); ?>"></i><?php endif; ?><span <?php echo $this->get_render_attribute_string( 'premium_button_text' ); ?>><?php echo $button_text; ?></span><?php if($settings['premium_button_icon_switcher'] && $settings['premium_button_icon_position'] == 'after' && $settings['premium_button_hover_effect'] != 'style4' &&!empty($settings['premium_button_icon_selection'])) : ?><i class="fa <?php echo esc_attr($button_icon); ?>"></i><?php endif; ?></div>
812
- <?php if($settings['premium_button_hover_effect'] == 'style4') : ?><div class="premium-button-style4-icon-wrapper <?php echo esc_attr($settings['premium_button_style4_dir']); ?>"><i class="fa <?php echo esc_attr($slide_icon); ?>"></i></div><?php endif; ?></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
813
  </div>
814
 
815
  <?php
@@ -846,26 +925,45 @@ class Premium_Button extends Widget_Base {
846
  } else if ( 'style4' == settings.premium_button_hover_effect ) {
847
  styleDir = 'premium-button-style4-' + settings.premium_button_style4_dir;
848
  slideIcon = settings.premium_button_style4_icon_selection;
 
 
 
 
849
  } else if ( 'style5' == settings.premium_button_hover_effect ){
850
  styleDir = 'premium-button-style5-' + settings.premium_button_style5_dir;
851
  }
852
 
 
 
 
853
  #>
854
 
855
  <div class="premium-button-container">
856
- <a class="premium-button {{ buttonSize }} {{ styleDir }}" href="{{ buttonUrl }}" onclick="{{ buttonEvent }}">
857
  <div class="premium-button-text-icon-wrapper">
858
- <# if( settings.premium_button_icon_switcher && 'before' == settings.premium_button_icon_position && 'style4' != settings.premium_button_hover_effect && '' != settings.premium_button_icon_selection ) { #>
859
- <i class="fa {{ buttonIcon }}"></i>
860
- <# } #>
 
 
 
 
861
  <span {{{ view.getRenderAttributeString('premium_button_text') }}}>{{{ buttonText }}}</span>
862
- <# if( settings.premium_button_icon_switcher && 'after' == settings.premium_button_icon_position && 'style4' != settings.premium_button_hover_effect && '' != settings.premium_button_icon_selection ) { #>
863
- <i class="fa {{ buttonIcon }}"></i>
864
- <# } #>
 
 
 
 
865
  </div>
866
  <# if( 'style4' == settings.premium_button_hover_effect ) { #>
867
  <div class="premium-button-style4-icon-wrapper {{ settings.premium_button_style4_dir }}">
868
- <i class="fa {{ slideIcon }}"></i>
 
 
 
 
869
  </div>
870
  <# } #>
871
  </a>
4
 
5
  use PremiumAddons\Helper_Functions;
6
  use PremiumAddons\Includes;
7
+ use Elementor\Icons_Manager;
8
  use Elementor\Widget_Base;
9
  use Elementor\Controls_Manager;
10
  use Elementor\Scheme_Color;
217
  ]
218
  );
219
 
220
+ $this->add_control('premium_button_icon_selection_updated',
221
+ [
222
+ 'label' => __('Icon', 'premium-addons-for-elementor'),
223
+ 'type' => Controls_Manager::ICONS,
224
+ 'fa4compatibility' => 'premium_button_icon_selection',
225
+ 'default' => [
226
+ 'value' => 'fas fa-bars',
227
+ 'library' => 'fa-solid',
228
+ ],
229
+ 'condition' => [
230
+ 'premium_button_icon_switcher' => 'yes',
231
+ 'premium_button_hover_effect!' => 'style4'
232
+ ],
233
+ 'label_block' => true,
234
+ ]
235
+ );
236
 
237
+ $this->add_control('premium_button_style4_icon_selection_updated',
238
+ [
239
+ 'label' => __('Icon', 'premium-addons-for-elementor'),
240
+ 'type' => Controls_Manager::ICONS,
241
+ 'fa4compatibility' => 'premium_button_style4_icon_selection',
242
+ 'default' => [
243
+ 'value' => 'fas fa-bars',
244
+ 'library' => 'fa-solid',
245
+ ],
246
+ 'condition' => [
247
+ 'premium_button_hover_effect' => 'style4'
248
+ ],
249
+ 'label_block' => true,
250
+ ]
251
+ );
252
 
253
  $this->add_control('premium_button_icon_position',
254
  [
779
 
780
  $this->end_controls_section();
781
  }
782
+
783
+ /**
784
+ * Render Grid output on the frontend.
785
+ *
786
+ * Written in PHP and used to generate the final HTML.
787
+ *
788
+ * @since 1.0.0
789
+ * @access protected
790
+ */
791
  protected function render() {
792
 
793
  $settings = $this->get_settings_for_display();
806
 
807
  $button_event = $settings['premium_button_event_function'];
808
 
809
+ if ( ! empty ( $settings['premium_button_icon_selection'] ) ) {
810
+ $this->add_render_attribute( 'icon', 'class', $settings['premium_button_icon_selection'] );
811
+ $this->add_render_attribute( 'icon', 'aria-hidden', 'true' );
812
+ }
813
+
814
+ $migrated = isset( $settings['__fa4_migrated']['premium_button_icon_selection_updated'] );
815
+ $is_new = empty( $settings['premium_button_icon_selection'] ) && Icons_Manager::is_migration_allowed();
816
 
817
  if ( $settings['premium_button_hover_effect'] == 'none' ) {
818
  $style_dir = 'premium-button-none';
824
  $style_dir = 'premium-button-style3-' . $settings['premium_button_icon_position'];
825
  } elseif ( $settings['premium_button_hover_effect'] == 'style4' ) {
826
  $style_dir = 'premium-button-style4-' . $settings['premium_button_style4_dir'];
827
+
828
+ if ( ! empty ( $settings['premium_button_style4_icon_selection'] ) ) {
829
+ $this->add_render_attribute( 'slide_icon', 'class', $settings['premium_button_style4_icon_selection'] );
830
+ $this->add_render_attribute( 'slide_icon', 'aria-hidden', 'true' );
831
+ }
832
+
833
+ $slide_migrated = isset( $settings['__fa4_migrated']['premium_button_style4_icon_selection_updated'] );
834
+ $slide_is_new = empty( $settings['premium_button_style4_icon_selection'] ) && Icons_Manager::is_migration_allowed();
835
+
836
  } elseif ( $settings['premium_button_hover_effect'] == 'style5' ) {
837
  $style_dir = 'premium-button-style5-' . $settings['premium_button_style5_dir'];
838
  }
839
+
840
+ $this->add_render_attribute( 'button', 'class', array(
841
+ 'premium-button',
842
+ $button_size,
843
+ $style_dir
844
+ ));
845
+
846
+ if( ! empty( $button_url ) ) {
847
+
848
+ $this->add_render_attribute( 'button', 'href', $button_url );
849
+
850
+ if( ! empty( $settings['premium_button_link']['is_external'] ) )
851
+ $this->add_render_attribute( 'button', 'target', '_blank' );
852
+
853
+ if( ! empty( $settings['premium_button_link']['nofollow'] ) )
854
+ $this->add_render_attribute( 'button', 'rel', 'nofollow' );
855
+ }
856
+
857
+ if( 'yes' === $settings['premium_button_event_switcher'] && ! empty( $button_event ) ) {
858
+ $this->add_render_attribute( 'button', 'onclick', $button_event );
859
+ }
860
+
861
+ ?>
862
 
863
  <div class="premium-button-container">
864
+ <a <?php echo $this->get_render_attribute_string( 'button' ); ?>>
865
+ <div class="premium-button-text-icon-wrapper">
866
+ <?php if( 'yes' === $settings['premium_button_icon_switcher'] && $settings['premium_button_icon_position'] === 'before' && $settings['premium_button_hover_effect'] !== 'style4' ) :
867
+ if ( $is_new || $migrated ) :
868
+ Icons_Manager::render_icon( $settings['premium_button_icon_selection_updated'], [ 'aria-hidden' => 'true' ] );
869
+ else: ?>
870
+ <i <?php echo $this->get_render_attribute_string( 'icon' ); ?>></i>
871
+ <?php endif;
872
+ endif; ?>
873
+ <span <?php echo $this->get_render_attribute_string( 'premium_button_text' ); ?>><?php echo $button_text; ?></span>
874
+ <?php if( 'yes' === $settings['premium_button_icon_switcher'] && $settings['premium_button_icon_position'] === 'after' && $settings['premium_button_hover_effect'] !== 'style4' ) :
875
+ if ( $is_new || $migrated ) :
876
+ Icons_Manager::render_icon( $settings['premium_button_icon_selection_updated'], [ 'aria-hidden' => 'true' ] );
877
+ else: ?>
878
+ <i <?php echo $this->get_render_attribute_string( 'icon' ); ?>></i>
879
+ <?php endif;
880
+ endif; ?>
881
+ </div>
882
+ <?php if( $settings['premium_button_hover_effect'] === 'style4' ) : ?>
883
+ <div class="premium-button-style4-icon-wrapper <?php echo esc_attr( $settings['premium_button_style4_dir'] ); ?>">
884
+ <?php if ( $slide_is_new || $slide_migrated ) :
885
+ Icons_Manager::render_icon( $settings['premium_button_style4_icon_selection_updated'], [ 'aria-hidden' => 'true' ] );
886
+ else: ?>
887
+ <i <?php echo $this->get_render_attribute_string( 'slide_icon' ); ?>></i>
888
+ <?php endif; ?>
889
+ </div>
890
+ <?php endif; ?>
891
+ </a>
892
  </div>
893
 
894
  <?php
925
  } else if ( 'style4' == settings.premium_button_hover_effect ) {
926
  styleDir = 'premium-button-style4-' + settings.premium_button_style4_dir;
927
  slideIcon = settings.premium_button_style4_icon_selection;
928
+
929
+ var slideIconHTML = elementor.helpers.renderIcon( view, settings.premium_button_style4_icon_selection_updated, { 'aria-hidden': true }, 'i' , 'object' ),
930
+ slideMigrated = elementor.helpers.isIconMigrated( settings, 'premium_button_style4_icon_selection_updated' );
931
+
932
  } else if ( 'style5' == settings.premium_button_hover_effect ){
933
  styleDir = 'premium-button-style5-' + settings.premium_button_style5_dir;
934
  }
935
 
936
+ var iconHTML = elementor.helpers.renderIcon( view, settings.premium_button_icon_selection_updated, { 'aria-hidden': true }, 'i' , 'object' ),
937
+ migrated = elementor.helpers.isIconMigrated( settings, 'premium_button_icon_selection_updated' );
938
+
939
  #>
940
 
941
  <div class="premium-button-container">
942
+ <a class="premium-button {{ buttonSize }} {{ styleDir }}" href="{{ buttonUrl }}" onclick="{{ buttonEvent }}">
943
  <div class="premium-button-text-icon-wrapper">
944
+ <# if( 'yes' === settings.premium_button_icon_switcher && 'before' == settings.premium_button_icon_position && 'style4' != settings.premium_button_hover_effect ) {
945
+ if ( iconHTML && iconHTML.rendered && ( ! buttonIcon || migrated ) ) { #>
946
+ {{{ iconHTML.value }}}
947
+ <# } else { #>
948
+ <i class="{{ buttonIcon }}" aria-hidden="true"></i>
949
+ <# }
950
+ } #>
951
  <span {{{ view.getRenderAttributeString('premium_button_text') }}}>{{{ buttonText }}}</span>
952
+ <# if( 'yes' === settings.premium_button_icon_switcher && 'after' == settings.premium_button_icon_position && 'style4' != settings.premium_button_hover_effect ) {
953
+ if ( iconHTML && iconHTML.rendered && ( ! buttonIcon || migrated ) ) { #>
954
+ {{{ iconHTML.value }}}
955
+ <# } else { #>
956
+ <i class="{{ buttonIcon }}" aria-hidden="true"></i>
957
+ <# }
958
+ } #>
959
  </div>
960
  <# if( 'style4' == settings.premium_button_hover_effect ) { #>
961
  <div class="premium-button-style4-icon-wrapper {{ settings.premium_button_style4_dir }}">
962
+ <# if ( slideIconHTML && slideIconHTML.rendered && ( ! slideIcon || slideMigrated ) ) { #>
963
+ {{{ slideIconHTML.value }}}
964
+ <# } else { #>
965
+ <i class="{{ slideIcon }}" aria-hidden="true"></i>
966
+ <# } #>
967
  </div>
968
  <# } #>
969
  </a>
widgets/premium-carousel.php CHANGED
@@ -438,56 +438,57 @@ class Premium_Carousel extends Widget_Base {
438
  'type' => Controls_Manager::CHOOSE,
439
  'options' => [
440
  'right_arrow_bold' => [
441
- 'icon' => 'fa fa-arrow-right',
442
  ],
443
  'right_arrow_long' => [
444
- 'icon' => 'fa fa-long-arrow-right',
445
  ],
446
  'right_arrow_long_circle' => [
447
- 'icon' => 'fa fa-arrow-circle-right',
448
  ],
449
  'right_arrow_angle' => [
450
- 'icon' => 'fa fa-angle-right',
451
  ],
452
  'right_arrow_chevron' => [
453
- 'icon' => 'fa fa-chevron-right',
454
  ]
455
  ],
456
  'default' => 'right_arrow_angle',
457
  'condition' => [
458
  'premium_carousel_navigation_show' => 'yes',
459
  'premium_carousel_slider_type!' => 'vertical'
460
- ]
 
461
  ]
462
  );
463
 
464
- // If the carousel type vertical
465
  $this->add_control('premium_carousel_arrow_icon_next_ver',
466
  [
467
  'label' => __( 'Bottom Icon', 'premium-addons-for-elementor' ),
468
  'type' => Controls_Manager::CHOOSE,
469
  'options' => [
470
  'right_arrow_bold' => [
471
- 'icon' => 'fa fa-arrow-down',
472
  ],
473
  'right_arrow_long' => [
474
- 'icon' => 'fa fa-long-arrow-down',
475
  ],
476
  'right_arrow_long_circle' => [
477
- 'icon' => 'fa fa-arrow-circle-down',
478
  ],
479
  'right_arrow_angle' => [
480
- 'icon' => 'fa fa-angle-down',
481
  ],
482
  'right_arrow_chevron' => [
483
- 'icon' => 'fa fa-chevron-down',
484
  ]
485
  ],
486
  'default' => 'right_arrow_angle',
487
  'condition' => [
488
  'premium_carousel_navigation_show' => 'yes',
489
  'premium_carousel_slider_type' => 'vertical',
490
- ]
 
491
  ]
492
  );
493
 
@@ -497,26 +498,27 @@ class Premium_Carousel extends Widget_Base {
497
  'type' => Controls_Manager::CHOOSE,
498
  'options' => [
499
  'left_arrow_bold' => [
500
- 'icon' => 'fa fa-arrow-up',
501
  ],
502
  'left_arrow_long' => [
503
- 'icon' => 'fa fa-long-arrow-up',
504
  ],
505
  'left_arrow_long_circle' => [
506
- 'icon' => 'fa fa-arrow-circle-up',
507
  ],
508
  'left_arrow_angle' => [
509
- 'icon' => 'fa fa-angle-up',
510
  ],
511
  'left_arrow_chevron' => [
512
- 'icon' => 'fa fa-chevron-up',
513
  ]
514
  ],
515
  'default' => 'left_arrow_angle',
516
  'condition' => [
517
  'premium_carousel_navigation_show' => 'yes',
518
  'premium_carousel_slider_type' => 'vertical',
519
- ]
 
520
  ]
521
  );
522
 
@@ -526,26 +528,27 @@ class Premium_Carousel extends Widget_Base {
526
  'type' => Controls_Manager::CHOOSE,
527
  'options' => [
528
  'left_arrow_bold' => [
529
- 'icon' => 'fa fa-arrow-left',
530
  ],
531
  'left_arrow_long' => [
532
- 'icon' => 'fa fa-long-arrow-left',
533
  ],
534
  'left_arrow_long_circle' => [
535
- 'icon' => 'fa fa-arrow-circle-left',
536
  ],
537
  'left_arrow_angle' => [
538
- 'icon' => 'fa fa-angle-left',
539
  ],
540
  'left_arrow_chevron' => [
541
- 'icon' => 'fa fa-chevron-left',
542
  ]
543
  ],
544
  'default' => 'left_arrow_angle',
545
  'condition' => [
546
  'premium_carousel_navigation_show' => 'yes',
547
  'premium_carousel_slider_type!' => 'vertical',
548
- ]
 
549
  ]
550
  );
551
 
@@ -704,25 +707,23 @@ class Premium_Carousel extends Widget_Base {
704
  'type' => Controls_Manager::CHOOSE,
705
  'options' => [
706
  'square_white' => [
707
- 'icon' => 'fa fa-square-o',
708
  ],
709
  'square_black' => [
710
- 'icon' => 'fa fa-square',
711
  ],
712
  'circle_white' => [
713
- 'icon' => 'fa fa-circle',
714
  ],
715
  'circle_thin' => [
716
- 'icon' => 'fa fa-circle-thin',
717
- ],
718
- 'circle_thin_bold' => [
719
- 'icon' => 'fa fa-circle-o',
720
  ]
721
  ],
722
  'default' => 'circle_white',
723
  'condition' => [
724
  'premium_carousel_dot_navigation_show' => 'yes'
725
- ]
 
726
  ]
727
  );
728
 
@@ -891,70 +892,70 @@ class Premium_Carousel extends Widget_Base {
891
  if( $settings['premium_carousel_slider_type'] == 'vertical' ) {
892
  $icon_next = $settings['premium_carousel_arrow_icon_next_ver'];
893
  if( $icon_next == 'right_arrow_bold' ) {
894
- $icon_next_class = 'fa fa-arrow-down';
895
  }
896
  if( $icon_next == 'right_arrow_long' ) {
897
- $icon_next_class = 'fa fa-long-arrow-down';
898
  }
899
  if( $icon_next == 'right_arrow_long_circle' ) {
900
- $icon_next_class = 'fa fa-arrow-circle-down';
901
  }
902
  if( $icon_next == 'right_arrow_angle' ) {
903
- $icon_next_class = 'fa fa-angle-down';
904
  }
905
  if( $icon_next == 'right_arrow_chevron' ) {
906
- $icon_next_class = 'fa fa-chevron-down';
907
  }
908
  $icon_prev = $settings['premium_carousel_arrow_icon_prev_ver'];
909
 
910
  if( $icon_prev == 'left_arrow_bold' ) {
911
- $icon_prev_class = 'fa fa-arrow-up';
912
  }
913
  if( $icon_prev == 'left_arrow_long' ) {
914
- $icon_prev_class = 'fa fa-long-arrow-up';
915
  }
916
  if( $icon_prev == 'left_arrow_long_circle' ) {
917
- $icon_prev_class = 'fa fa-arrow-circle-up';
918
  }
919
  if( $icon_prev == 'left_arrow_angle' ) {
920
- $icon_prev_class = 'fa fa-angle-up';
921
  }
922
  if( $icon_prev == 'left_arrow_chevron' ) {
923
- $icon_prev_class = 'fa fa-chevron-up';
924
  }
925
  } else {
926
  $icon_next = $settings['premium_carousel_arrow_icon_next'];
927
  if( $icon_next == 'right_arrow_bold' ) {
928
- $icon_next_class = 'fa fa-arrow-right';
929
  }
930
  if( $icon_next == 'right_arrow_long' ) {
931
- $icon_next_class = 'fa fa-long-arrow-right';
932
  }
933
  if( $icon_next == 'right_arrow_long_circle' ) {
934
- $icon_next_class = 'fa fa-arrow-circle-right';
935
  }
936
  if( $icon_next == 'right_arrow_angle' ) {
937
- $icon_next_class = 'fa fa-angle-right';
938
  }
939
  if( $icon_next == 'right_arrow_chevron' ) {
940
- $icon_next_class = 'fa fa-chevron-right';
941
  }
942
  $icon_prev = $settings['premium_carousel_arrow_icon_prev'];
943
 
944
  if( $icon_prev == 'left_arrow_bold' ) {
945
- $icon_prev_class = 'fa fa-arrow-left';
946
  }
947
  if( $icon_prev == 'left_arrow_long' ) {
948
- $icon_prev_class = 'fa fa-long-arrow-left';
949
  }
950
  if( $icon_prev == 'left_arrow_long_circle' ) {
951
- $icon_prev_class = 'fa fa-arrow-circle-left';
952
  }
953
  if( $icon_prev == 'left_arrow_angle' ) {
954
- $icon_prev_class = 'fa fa-angle-left';
955
  }
956
  if( $icon_prev == 'left_arrow_chevron' ) {
957
- $icon_prev_class = 'fa fa-chevron-left';
958
  }
959
  }
960
 
@@ -972,19 +973,16 @@ class Premium_Carousel extends Widget_Base {
972
  if( $settings['premium_carousel_dot_navigation_show'] == 'yes' ){
973
  $dots = true;
974
  if( $settings['premium_carousel_dot_icon'] == 'square_white' ) {
975
- $dot_icon = 'fa fa-square-o';
976
  }
977
  if( $settings['premium_carousel_dot_icon'] == 'square_black' ) {
978
- $dot_icon = 'fa fa-square';
979
  }
980
  if( $settings['premium_carousel_dot_icon'] == 'circle_white' ) {
981
- $dot_icon = 'fa fa-circle';
982
  }
983
  if( $settings['premium_carousel_dot_icon'] == 'circle_thin' ) {
984
- $dot_icon = 'fa fa-circle-thin';
985
- }
986
- if( $settings['premium_carousel_dot_icon'] == 'circle_thin_bold' ) {
987
- $dot_icon = 'fa fa-circle-o';
988
  }
989
  $customPaging = $dot_icon;
990
  } else {
@@ -1164,74 +1162,74 @@ class Premium_Carousel extends Widget_Base {
1164
  var iconNext = settings.premium_carousel_arrow_icon_next_ver;
1165
 
1166
  if( iconNext === 'right_arrow_bold' ) {
1167
- iconNextClass = 'fa fa-arrow-down';
1168
  }
1169
  if( iconNext === 'right_arrow_long' ) {
1170
- iconNextClass = 'fa fa-long-arrow-down';
1171
  }
1172
  if( iconNext === 'right_arrow_long_circle' ) {
1173
- iconNextClass = 'fa fa-arrow-circle-down';
1174
  }
1175
  if( iconNext === 'right_arrow_angle' ) {
1176
- iconNextClass = 'fa fa-angle-down';
1177
  }
1178
  if( iconNext === 'right_arrow_chevron' ) {
1179
- iconNextClass = 'fa fa-chevron-down';
1180
  }
1181
 
1182
  var iconPrev = settings.premium_carousel_arrow_icon_prev_ver;
1183
 
1184
  if( iconPrev === 'left_arrow_bold' ) {
1185
- iconPrevClass = 'fa fa-arrow-up';
1186
  }
1187
  if( iconPrev === 'left_arrow_long' ) {
1188
- iconPrevClass = 'fa fa-long-arrow-up';
1189
  }
1190
  if( iconPrev === 'left_arrow_long_circle' ) {
1191
- iconPrevClass = 'fa fa-arrow-circle-up';
1192
  }
1193
  if( iconPrev === 'left_arrow_angle' ) {
1194
- iconPrevClass = 'fa fa-angle-up';
1195
  }
1196
  if( iconPrev === 'left_arrow_chevron' ) {
1197
- iconPrevClass = 'fa fa-chevron-up';
1198
  }
1199
 
1200
  } else {
1201
  var iconNext = settings.premium_carousel_arrow_icon_next;
1202
 
1203
  if( iconNext === 'right_arrow_bold' ) {
1204
- iconNextClass = 'fa fa-arrow-right';
1205
  }
1206
  if( iconNext === 'right_arrow_long' ) {
1207
- iconNextClass = 'fa fa-long-arrow-right';
1208
  }
1209
  if( iconNext === 'right_arrow_long_circle' ) {
1210
- iconNextClass = 'fa fa-arrow-circle-right';
1211
  }
1212
  if( iconNext === 'right_arrow_angle' ) {
1213
- iconNextClass = 'fa fa-angle-right';
1214
  }
1215
  if( iconNext === 'right_arrow_chevron' ) {
1216
- iconNextClass = 'fa fa-chevron-right';
1217
  }
1218
 
1219
  var iconPrev = settings.premium_carousel_arrow_icon_prev;
1220
 
1221
  if( iconPrev === 'left_arrow_bold' ) {
1222
- iconPrevClass = 'fa fa-arrow-left';
1223
  }
1224
  if( iconPrev === 'left_arrow_long' ) {
1225
- iconPrevClass = 'fa fa-long-arrow-left';
1226
  }
1227
  if( iconPrev === 'left_arrow_long_circle' ) {
1228
- iconPrevClass = 'fa fa-arrow-circle-left';
1229
  }
1230
  if( iconPrev === 'left_arrow_angle' ) {
1231
- iconPrevClass = 'fa fa-angle-left';
1232
  }
1233
  if( iconPrev === 'left_arrow_chevron' ) {
1234
- iconPrevClass = 'fa fa-chevron-left';
1235
  }
1236
  }
1237
 
@@ -1254,19 +1252,16 @@ class Premium_Carousel extends Widget_Base {
1254
  var dots = true;
1255
 
1256
  if( 'square_white' === settings.premium_carousel_dot_icon ) {
1257
- dotIcon = 'fa fa-square-o';
1258
  }
1259
  if( 'square_black' === settings.premium_carousel_dot_icon ) {
1260
- dotIcon = 'fa fa-square';
1261
  }
1262
  if( 'circle_white' === settings.premium_carousel_dot_icon ) {
1263
- dotIcon = 'fa fa-circle';
1264
  }
1265
  if( 'circle_thin' === settings.premium_carousel_dot_icon ) {
1266
- dotIcon = 'fa fa-circle-thin';
1267
- }
1268
- if( 'circle_thin_bold' === settings.premium_carousel_dot_icon ) {
1269
- dotIcon = 'fa fa-circle-o';
1270
  }
1271
  var customPaging = dotIcon;
1272
 
438
  'type' => Controls_Manager::CHOOSE,
439
  'options' => [
440
  'right_arrow_bold' => [
441
+ 'icon' => 'fas fa-arrow-right',
442
  ],
443
  'right_arrow_long' => [
444
+ 'icon' => 'fas fa-long-arrow-alt-right',
445
  ],
446
  'right_arrow_long_circle' => [
447
+ 'icon' => 'fas fa-arrow-circle-right',
448
  ],
449
  'right_arrow_angle' => [
450
+ 'icon' => 'fas fa-angle-right',
451
  ],
452
  'right_arrow_chevron' => [
453
+ 'icon' => 'fas fa-chevron-right',
454
  ]
455
  ],
456
  'default' => 'right_arrow_angle',
457
  'condition' => [
458
  'premium_carousel_navigation_show' => 'yes',
459
  'premium_carousel_slider_type!' => 'vertical'
460
+ ],
461
+ 'toggle' => false
462
  ]
463
  );
464
 
 
465
  $this->add_control('premium_carousel_arrow_icon_next_ver',
466
  [
467
  'label' => __( 'Bottom Icon', 'premium-addons-for-elementor' ),
468
  'type' => Controls_Manager::CHOOSE,
469
  'options' => [
470
  'right_arrow_bold' => [
471
+ 'icon' => 'fas fa-arrow-down',
472
  ],
473
  'right_arrow_long' => [
474
+ 'icon' => 'fas fa-long-arrow-alt-down',
475
  ],
476
  'right_arrow_long_circle' => [
477
+ 'icon' => 'fas fa-arrow-circle-down',
478
  ],
479
  'right_arrow_angle' => [
480
+ 'icon' => 'fas fa-angle-down',
481
  ],
482
  'right_arrow_chevron' => [
483
+ 'icon' => 'fas fa-chevron-down',
484
  ]
485
  ],
486
  'default' => 'right_arrow_angle',
487
  'condition' => [
488
  'premium_carousel_navigation_show' => 'yes',
489
  'premium_carousel_slider_type' => 'vertical',
490
+ ],
491
+ 'toggle' => false
492
  ]
493
  );
494
 
498
  'type' => Controls_Manager::CHOOSE,
499
  'options' => [
500
  'left_arrow_bold' => [
501
+ 'icon' => 'fas fa-arrow-up',
502
  ],
503
  'left_arrow_long' => [
504
+ 'icon' => 'fas fa-long-arrow-alt-up',
505
  ],
506
  'left_arrow_long_circle' => [
507
+ 'icon' => 'fas fa-arrow-circle-up',
508
  ],
509
  'left_arrow_angle' => [
510
+ 'icon' => 'fas fa-angle-up',
511
  ],
512
  'left_arrow_chevron' => [
513
+ 'icon' => 'fas fa-chevron-up',
514
  ]
515
  ],
516
  'default' => 'left_arrow_angle',
517
  'condition' => [
518
  'premium_carousel_navigation_show' => 'yes',
519
  'premium_carousel_slider_type' => 'vertical',
520
+ ],
521
+ 'toggle' => false
522
  ]
523
  );
524
 
528
  'type' => Controls_Manager::CHOOSE,
529
  'options' => [
530
  'left_arrow_bold' => [
531
+ 'icon' => 'fas fa-arrow-left',
532
  ],
533
  'left_arrow_long' => [
534
+ 'icon' => 'fas fa-long-arrow-alt-left',
535
  ],
536
  'left_arrow_long_circle' => [
537
+ 'icon' => 'fas fa-arrow-circle-left',
538
  ],
539
  'left_arrow_angle' => [
540
+ 'icon' => 'fas fa-angle-left',
541
  ],
542
  'left_arrow_chevron' => [
543
+ 'icon' => 'fas fa-chevron-left',
544
  ]
545
  ],
546
  'default' => 'left_arrow_angle',
547
  'condition' => [
548
  'premium_carousel_navigation_show' => 'yes',
549
  'premium_carousel_slider_type!' => 'vertical',
550
+ ],
551
+ 'toggle' => false
552
  ]
553
  );
554
 
707
  'type' => Controls_Manager::CHOOSE,
708
  'options' => [
709
  'square_white' => [
710
+ 'icon' => 'far fa-square',
711
  ],
712
  'square_black' => [
713
+ 'icon' => 'fas fa-square',
714
  ],
715
  'circle_white' => [
716
+ 'icon' => 'fas fa-circle',
717
  ],
718
  'circle_thin' => [
719
+ 'icon' => 'far fa-circle',
 
 
 
720
  ]
721
  ],
722
  'default' => 'circle_white',
723
  'condition' => [
724
  'premium_carousel_dot_navigation_show' => 'yes'
725
+ ],
726
+ 'toggle' => false
727
  ]
728
  );
729
 
892
  if( $settings['premium_carousel_slider_type'] == 'vertical' ) {
893
  $icon_next = $settings['premium_carousel_arrow_icon_next_ver'];
894
  if( $icon_next == 'right_arrow_bold' ) {
895
+ $icon_next_class = 'fas fa-arrow-down';
896
  }
897
  if( $icon_next == 'right_arrow_long' ) {
898
+ $icon_next_class = 'fas fa-long-arrow-alt-down';
899
  }
900
  if( $icon_next == 'right_arrow_long_circle' ) {
901
+ $icon_next_class = 'fas fa-arrow-circle-down';
902
  }
903
  if( $icon_next == 'right_arrow_angle' ) {
904
+ $icon_next_class = 'fas fa-angle-down';
905
  }
906
  if( $icon_next == 'right_arrow_chevron' ) {
907
+ $icon_next_class = 'fas fa-chevron-down';
908
  }
909
  $icon_prev = $settings['premium_carousel_arrow_icon_prev_ver'];
910
 
911
  if( $icon_prev == 'left_arrow_bold' ) {
912
+ $icon_prev_class = 'fas fa-arrow-up';
913
  }
914
  if( $icon_prev == 'left_arrow_long' ) {
915
+ $icon_prev_class = 'fas fa-long-arrow-alt-up';
916
  }
917
  if( $icon_prev == 'left_arrow_long_circle' ) {
918
+ $icon_prev_class = 'fas fa-arrow-circle-up';
919
  }
920
  if( $icon_prev == 'left_arrow_angle' ) {
921
+ $icon_prev_class = 'fas fa-angle-up';
922
  }
923
  if( $icon_prev == 'left_arrow_chevron' ) {
924
+ $icon_prev_class = 'fas fa-chevron-up';
925
  }
926
  } else {
927
  $icon_next = $settings['premium_carousel_arrow_icon_next'];
928
  if( $icon_next == 'right_arrow_bold' ) {
929
+ $icon_next_class = 'fas fa-arrow-right';
930
  }
931
  if( $icon_next == 'right_arrow_long' ) {
932
+ $icon_next_class = 'fas fa-long-arrow-alt-right';
933
  }
934
  if( $icon_next == 'right_arrow_long_circle' ) {
935
+ $icon_next_class = 'fas fa-arrow-circle-right';
936
  }
937
  if( $icon_next == 'right_arrow_angle' ) {
938
+ $icon_next_class = 'fas fa-angle-right';
939
  }
940
  if( $icon_next == 'right_arrow_chevron' ) {
941
+ $icon_next_class = 'fas fa-chevron-right';
942
  }
943
  $icon_prev = $settings['premium_carousel_arrow_icon_prev'];
944
 
945
  if( $icon_prev == 'left_arrow_bold' ) {
946
+ $icon_prev_class = 'fas fa-arrow-left';
947
  }
948
  if( $icon_prev == 'left_arrow_long' ) {
949
+ $icon_prev_class = 'fas fa-long-arrow-alt-left';
950
  }
951
  if( $icon_prev == 'left_arrow_long_circle' ) {
952
+ $icon_prev_class = 'fas fa-arrow-circle-left';
953
  }
954
  if( $icon_prev == 'left_arrow_angle' ) {
955
+ $icon_prev_class = 'fas fa-angle-left';
956
  }
957
  if( $icon_prev == 'left_arrow_chevron' ) {
958
+ $icon_prev_class = 'fas fa-chevron-left';
959
  }
960
  }
961
 
973
  if( $settings['premium_carousel_dot_navigation_show'] == 'yes' ){
974
  $dots = true;
975
  if( $settings['premium_carousel_dot_icon'] == 'square_white' ) {
976
+ $dot_icon = 'far fa-square';
977
  }
978
  if( $settings['premium_carousel_dot_icon'] == 'square_black' ) {
979
+ $dot_icon = 'fas fa-square';
980
  }
981
  if( $settings['premium_carousel_dot_icon'] == 'circle_white' ) {
982
+ $dot_icon = 'fas fa-circle';
983
  }
984
  if( $settings['premium_carousel_dot_icon'] == 'circle_thin' ) {
985
+ $dot_icon = 'far fa-circle-thin';
 
 
 
986
  }
987
  $customPaging = $dot_icon;
988
  } else {
1162
  var iconNext = settings.premium_carousel_arrow_icon_next_ver;
1163
 
1164
  if( iconNext === 'right_arrow_bold' ) {
1165
+ iconNextClass = 'fas fa-arrow-down';
1166
  }
1167
  if( iconNext === 'right_arrow_long' ) {
1168
+ iconNextClass = 'fas fa-long-arrow-alt-down';
1169
  }
1170
  if( iconNext === 'right_arrow_long_circle' ) {
1171
+ iconNextClass = 'fas fa-arrow-circle-down';
1172
  }
1173
  if( iconNext === 'right_arrow_angle' ) {
1174
+ iconNextClass = 'fas fa-angle-down';
1175
  }
1176
  if( iconNext === 'right_arrow_chevron' ) {
1177
+ iconNextClass = 'fas fa-chevron-down';
1178
  }
1179
 
1180
  var iconPrev = settings.premium_carousel_arrow_icon_prev_ver;
1181
 
1182
  if( iconPrev === 'left_arrow_bold' ) {
1183
+ iconPrevClass = 'fas fa-arrow-up';
1184
  }
1185
  if( iconPrev === 'left_arrow_long' ) {
1186
+ iconPrevClass = 'fas fa-long-arrow-alt-up';
1187
  }
1188
  if( iconPrev === 'left_arrow_long_circle' ) {
1189
+ iconPrevClass = 'fas fa-arrow-circle-up';
1190
  }
1191
  if( iconPrev === 'left_arrow_angle' ) {
1192
+ iconPrevClass = 'fas fa-angle-up';
1193
  }
1194
  if( iconPrev === 'left_arrow_chevron' ) {
1195
+ iconPrevClass = 'fas fa-chevron-up';
1196
  }
1197
 
1198
  } else {
1199
  var iconNext = settings.premium_carousel_arrow_icon_next;
1200
 
1201
  if( iconNext === 'right_arrow_bold' ) {
1202
+ iconNextClass = 'fas fa-arrow-right';
1203
  }
1204
  if( iconNext === 'right_arrow_long' ) {
1205
+ iconNextClass = 'fas fa-long-arrow-alt-right';
1206
  }
1207
  if( iconNext === 'right_arrow_long_circle' ) {
1208
+ iconNextClass = 'fas fa-arrow-circle-right';
1209
  }
1210
  if( iconNext === 'right_arrow_angle' ) {
1211
+ iconNextClass = 'fas fa-angle-right';
1212
  }
1213
  if( iconNext === 'right_arrow_chevron' ) {
1214
+ iconNextClass = 'fas fa-chevron-right';
1215
  }
1216
 
1217
  var iconPrev = settings.premium_carousel_arrow_icon_prev;
1218
 
1219
  if( iconPrev === 'left_arrow_bold' ) {
1220
+ iconPrevClass = 'fas fa-arrow-left';
1221
  }
1222
  if( iconPrev === 'left_arrow_long' ) {
1223
+ iconPrevClass = 'fas fa-long-arrow-alt-left';
1224
  }
1225
  if( iconPrev === 'left_arrow_long_circle' ) {
1226
+ iconPrevClass = 'fas fa-arrow-circle-left';
1227
  }
1228
  if( iconPrev === 'left_arrow_angle' ) {
1229
+ iconPrevClass = 'fas fa-angle-left';
1230
  }
1231
  if( iconPrev === 'left_arrow_chevron' ) {
1232
+ iconPrevClass = 'fas fa-chevron-left';
1233
  }
1234
  }
1235
 
1252
  var dots = true;
1253
 
1254
  if( 'square_white' === settings.premium_carousel_dot_icon ) {
1255
+ dotIcon = 'far fa-square';
1256
  }
1257
  if( 'square_black' === settings.premium_carousel_dot_icon ) {
1258
+ dotIcon = 'fas fa-square';
1259
  }
1260
  if( 'circle_white' === settings.premium_carousel_dot_icon ) {
1261
+ dotIcon = 'fas fa-circle';
1262
  }
1263
  if( 'circle_thin' === settings.premium_carousel_dot_icon ) {
1264
+ dotIcon = 'far fa-circle';
 
 
 
1265
  }
1266
  var customPaging = dotIcon;
1267
 
widgets/premium-counter.php CHANGED
@@ -5,6 +5,7 @@ namespace PremiumAddons\Widgets;
5
  use PremiumAddons\Helper_Functions;
6
  use Elementor\Widget_Base;
7
  use Elementor\Utils;
 
8
  use Elementor\Control_Media;
9
  use Elementor\Controls_Manager;
10
  use Elementor\Scheme_Color;
@@ -147,11 +148,15 @@ class Premium_Counter extends Widget_Base {
147
  ]
148
  );
149
 
150
- $this->add_control('premium_counter_icon',
151
  [
152
  'label' => __( 'Select an Icon', 'premium-addons-for-elementor' ),
153
- 'type' => Controls_Manager::ICON,
154
- 'default' => 'fa fa-clock-o',
 
 
 
 
155
  'condition' => [
156
  'premium_counter_icon_image' => 'icon'
157
  ]
@@ -544,21 +549,44 @@ class Premium_Counter extends Widget_Base {
544
 
545
  $animation = $settings['premium_counter_icon_animation'];
546
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
547
  $flex_width = '';
548
  if( $settings['premium_counter_icon_image'] == 'custom' && $settings['premium_counter_icon_style'] == 'simple' ) {
549
  $flex_width = ' flex-width ';
550
  }
551
 
552
- if( $settings['premium_counter_icon_image'] == 'icon' ) {
553
- $icon_image = '<i class="' . $settings['premium_counter_icon'] .'"></i>';
554
- } else {
555
- $alt = esc_attr( Control_Media::get_image_alt( $settings['premium_counter_image_upload'] ) );
556
- $icon_image = '<img class="custom-image" src="'.$settings['premium_counter_image_upload']['url'] . '" alt="' . $alt . '">';
557
- }
558
- ?>
559
 
560
  <div class="premium-counter-icon <?php echo $direction; ?>">
561
- <span class="icon<?php echo $flex_width; ?><?php echo $icon_style; ?>" data-animation="<?php echo $animation; ?>"><?php echo $icon_image; ?></span>
 
 
 
 
 
 
 
 
 
 
 
 
 
562
  </div>
563
 
564
  <?php
@@ -684,6 +712,9 @@ class Premium_Counter extends Widget_Base {
684
  animation = settings.premium_counter_icon_animation,
685
  flexWidth = '';
686
 
 
 
 
687
  if( 'custom' === settings.premium_counter_icon_image && 'simple' === settings.premium_counter_icon_style ) {
688
  flexWidth = ' flex-width ';
689
  }
@@ -696,8 +727,12 @@ class Premium_Counter extends Widget_Base {
696
 
697
  <div {{{ view.getRenderAttributeString('icon_wrap') }}}>
698
  <span data-animation="{{ animation }}" class="{{ iconClass }}">
699
- <# if( 'icon' === settings.premium_counter_icon_image ) { #>
700
- <i class="{{ settings.premium_counter_icon }}"></i>
 
 
 
 
701
  <# } else { #>
702
  <img class="custom-image" src="{{ settings.premium_counter_image_upload.url }}">
703
  <# } #>
5
  use PremiumAddons\Helper_Functions;
6
  use Elementor\Widget_Base;
7
  use Elementor\Utils;
8
+ use Elementor\Icons_Manager;
9
  use Elementor\Control_Media;
10
  use Elementor\Controls_Manager;
11
  use Elementor\Scheme_Color;
148
  ]
149
  );
150
 
151
+ $this->add_control('premium_counter_icon_updated',
152
  [
153
  'label' => __( 'Select an Icon', 'premium-addons-for-elementor' ),
154
+ 'type' => Controls_Manager::ICONS,
155
+ 'fa4compatibility' => 'premium_counter_icon',
156
+ 'default' => [
157
+ 'value' => 'fas fa-clock',
158
+ 'library' => 'fa-solid',
159
+ ],
160
  'condition' => [
161
  'premium_counter_icon_image' => 'icon'
162
  ]
549
 
550
  $animation = $settings['premium_counter_icon_animation'];
551
 
552
+ if ( $settings['premium_counter_icon_image'] === 'icon' ) {
553
+ if ( ! empty ( $settings['premium_counter_icon'] ) ) {
554
+ $this->add_render_attribute( 'icon', 'class', $settings['premium_counter_icon'] );
555
+ $this->add_render_attribute( 'icon', 'aria-hidden', 'true' );
556
+ }
557
+
558
+ $migrated = isset( $settings['__fa4_migrated']['premium_counter_icon_updated'] );
559
+ $is_new = empty( $settings['premium_counter_icon'] ) && Icons_Manager::is_migration_allowed();
560
+ } else {
561
+ $alt = esc_attr( Control_Media::get_image_alt( $settings['premium_counter_image_upload'] ) );
562
+
563
+ $this->add_render_attribute( 'image', 'class', 'custom-image' );
564
+ $this->add_render_attribute( 'image', 'src', $settings['premium_counter_image_upload']['url'] );
565
+ $this->add_render_attribute( 'image', 'alt', $alt );
566
+ }
567
+
568
  $flex_width = '';
569
  if( $settings['premium_counter_icon_image'] == 'custom' && $settings['premium_counter_icon_style'] == 'simple' ) {
570
  $flex_width = ' flex-width ';
571
  }
572
 
573
+ ?>
 
 
 
 
 
 
574
 
575
  <div class="premium-counter-icon <?php echo $direction; ?>">
576
+ <span class="icon<?php echo $flex_width; ?><?php echo $icon_style; ?>" data-animation="<?php echo $animation; ?>">
577
+
578
+ <?php if( $settings['premium_counter_icon_image'] === 'icon' ) {
579
+
580
+ if ( $is_new || $migrated ) :
581
+ Icons_Manager::render_icon( $settings['premium_counter_icon_updated'], [ 'aria-hidden' => 'true' ] );
582
+ else: ?>
583
+ <i <?php echo $this->get_render_attribute_string( 'icon' ); ?>></i>
584
+ <?php endif;
585
+ } else { ?>
586
+ <img <?php echo $this->get_render_attribute_string('image'); ?>>
587
+ <?php } ?>
588
+
589
+ </span>
590
  </div>
591
 
592
  <?php
712
  animation = settings.premium_counter_icon_animation,
713
  flexWidth = '';
714
 
715
+ var iconHTML = elementor.helpers.renderIcon( view, settings.premium_counter_icon_updated, { 'aria-hidden': true }, 'i' , 'object' ),
716
+ migrated = elementor.helpers.isIconMigrated( settings, 'premium_counter_icon_updated' );
717
+
718
  if( 'custom' === settings.premium_counter_icon_image && 'simple' === settings.premium_counter_icon_style ) {
719
  flexWidth = ' flex-width ';
720
  }
727
 
728
  <div {{{ view.getRenderAttributeString('icon_wrap') }}}>
729
  <span data-animation="{{ animation }}" class="{{ iconClass }}">
730
+ <# if( 'icon' === settings.premium_counter_icon_image ) {
731
+ if ( iconHTML && iconHTML.rendered && ( ! settings.premium_counter_icon || migrated ) ) { #>
732
+ {{{ iconHTML.value }}}
733
+ <# } else { #>
734
+ <i class="{{ settings.premium_counter_icon }}" aria-hidden="true"></i>
735
+ <# } #>
736
  <# } else { #>
737
  <img class="custom-image" src="{{ settings.premium_counter_image_upload.url }}">
738
  <# } #>
widgets/premium-grid.php CHANGED
@@ -495,6 +495,13 @@ class Premium_Grid extends Widget_Base {
495
  ]
496
  );
497
 
 
 
 
 
 
 
 
498
  $this->end_controls_section();
499
 
500
  $this->start_controls_section('premium_gallery_grid_settings',
@@ -1223,32 +1230,42 @@ class Premium_Grid extends Widget_Base {
1223
  ]);
1224
 
1225
  $this->add_control('premium_gallery_filter_color',
1226
- [
1227
- 'label' => __('Color', 'premium-addons-for-elementor'),
1228
- 'type' => Controls_Manager::COLOR,
1229
- 'scheme' => [
1230
- 'type' => Scheme_Color::get_type(),
1231
- 'value' => Scheme_Color::COLOR_2,
1232
- ],
1233
- 'selectors' => [
1234
- '{{WRAPPER}} .premium-gallery-cats-container li a.category span' => 'color: {{VALUE}};',
1235
- ]
1236
  ]
1237
- );
 
 
 
 
 
 
 
 
 
 
 
1238
 
1239
  $this->add_control('premium_gallery_filter_active_color',
1240
- [
1241
- 'label' => __('Active Color', 'premium-addons-for-elementor'),
1242
- 'type' => Controls_Manager::COLOR,
1243
- 'scheme' => [
1244
- 'type' => Scheme_Color::get_type(),
1245
- 'value' => Scheme_Color::COLOR_1,
1246
- ],
1247
- 'selectors' => [
1248
- '{{WRAPPER}} .premium-gallery-cats-container li a.active span' => 'color: {{VALUE}};',
1249
- ]
1250
  ]
1251
- );
 
1252
 
1253
  $this->add_group_control(
1254
  Group_Control_Typography::get_type(),
@@ -1281,6 +1298,19 @@ class Premium_Grid extends Widget_Base {
1281
  ]
1282
  );
1283
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1284
  $this->add_control('premium_gallery_background_active_color',
1285
  [
1286
  'label' => __('Background Active Color', 'premium-addons-for-elementor'),
@@ -1745,7 +1775,7 @@ class Premium_Grid extends Widget_Base {
1745
 
1746
  ?>
1747
  <a <?php echo $this->get_render_attribute_string( $lightbox_key ); ?>>
1748
- <span><i class="fa fa-search-plus"></i></span>
1749
  </a>
1750
  <?php
1751
  }
@@ -1789,7 +1819,7 @@ class Premium_Grid extends Widget_Base {
1789
  if ( ! empty ( $icon_link ) ) {
1790
  ?>
1791
  <a <?php echo $this->get_render_attribute_string( $link_key ); ?>>
1792
- <span><i class="fa fa-link"></i></span>
1793
  </a>
1794
  <?php
1795
  }
@@ -1883,13 +1913,16 @@ class Premium_Grid extends Widget_Base {
1883
 
1884
  $shuffle = 'yes' === $settings['premium_gallery_shuffle'] ? true : false;
1885
 
 
 
1886
  $grid_settings = [
1887
  'img_size' => $settings['premium_gallery_img_size_select'],
1888
  'filter' => $filter,
1889
  'theme' => $settings['premium_gallery_lightbox_theme'],
1890
  'active_cat' => $category,
1891
  'ltr_mode' => $ltr_mode,
1892
- 'shuffle' => $shuffle
 
1893
  ];
1894
 
1895
  $load_more = 'yes' === $settings['premium_gallery_load_more'] ? true : false;
495
  ]
496
  );
497
 
498
+ $this->add_control('premium_gallery_shuffle_onload',
499
+ [
500
+ 'label' => __( 'Shuffle Images on Page Load', 'premium-addons-for-elementor' ),
501
+ 'type' => Controls_Manager::SWITCHER,
502
+ ]
503
+ );
504
+
505
  $this->end_controls_section();
506
 
507
  $this->start_controls_section('premium_gallery_grid_settings',
1230
  ]);
1231
 
1232
  $this->add_control('premium_gallery_filter_color',
1233
+ [
1234
+ 'label' => __('Text Color', 'premium-addons-for-elementor'),
1235
+ 'type' => Controls_Manager::COLOR,
1236
+ 'scheme' => [
1237
+ 'type' => Scheme_Color::get_type(),
1238
+ 'value' => Scheme_Color::COLOR_2,
1239
+ ],
1240
+ 'selectors' => [
1241
+ '{{WRAPPER}} .premium-gallery-cats-container li a.category span' => 'color: {{VALUE}};',
 
1242
  ]
1243
+ ]
1244
+ );
1245
+
1246
+ $this->add_control('premium_gallery_filter_hover_color',
1247
+ [
1248
+ 'label' => __('Text Hover Color', 'premium-addons-for-elementor'),
1249
+ 'type' => Controls_Manager::COLOR,
1250
+ 'selectors' => [
1251
+ '{{WRAPPER}} .premium-gallery-cats-container li a:hover span' => 'color: {{VALUE}};',
1252
+ ]
1253
+ ]
1254
+ );
1255
 
1256
  $this->add_control('premium_gallery_filter_active_color',
1257
+ [
1258
+ 'label' => __('Text Active Color', 'premium-addons-for-elementor'),
1259
+ 'type' => Controls_Manager::COLOR,
1260
+ 'scheme' => [
1261
+ 'type' => Scheme_Color::get_type(),
1262
+ 'value' => Scheme_Color::COLOR_1,
1263
+ ],
1264
+ 'selectors' => [
1265
+ '{{WRAPPER}} .premium-gallery-cats-container li a.active span' => 'color: {{VALUE}};',
 
1266
  ]
1267
+ ]
1268
+ );
1269
 
1270
  $this->add_group_control(
1271
  Group_Control_Typography::get_type(),
1298
  ]
1299
  );
1300
 
1301
+ $this->add_control('premium_gallery_background_hover_color',
1302
+ [
1303
+ 'label' => __('Background Hover Color', 'premium-addons-for-elementor'),
1304
+ 'type' => Controls_Manager::COLOR,
1305
+ 'selectors' => [
1306
+ '{{WRAPPER}} .premium-gallery-cats-container li a:hover' => 'background-color: {{VALUE}};',
1307
+ ],
1308
+ 'condition' => [
1309
+ 'premium_gallery_background' => 'yes'
1310
+ ]
1311
+ ]
1312
+ );
1313
+
1314
  $this->add_control('premium_gallery_background_active_color',
1315
  [
1316
  'label' => __('Background Active Color', 'premium-addons-for-elementor'),
1775
 
1776
  ?>
1777
  <a <?php echo $this->get_render_attribute_string( $lightbox_key ); ?>>
1778
+ <span><i class="fas fa-search-plus"></i></span>
1779
  </a>
1780
  <?php
1781
  }
1819
  if ( ! empty ( $icon_link ) ) {
1820
  ?>
1821
  <a <?php echo $this->get_render_attribute_string( $link_key ); ?>>
1822
+ <span><i class="fas fa-link"></i></span>
1823
  </a>
1824
  <?php
1825
  }
1913
 
1914
  $shuffle = 'yes' === $settings['premium_gallery_shuffle'] ? true : false;
1915
 
1916
+ $shuffle_onload = 'yes' === $settings['premium_gallery_shuffle_onload'] ? 'random' : 'original-order';
1917
+
1918
  $grid_settings = [
1919
  'img_size' => $settings['premium_gallery_img_size_select'],
1920
  'filter' => $filter,
1921
  'theme' => $settings['premium_gallery_lightbox_theme'],
1922
  'active_cat' => $category,
1923
  'ltr_mode' => $ltr_mode,
1924
+ 'shuffle' => $shuffle,
1925
+ 'sort_by' => $shuffle_onload
1926
  ];
1927
 
1928
  $load_more = 'yes' === $settings['premium_gallery_load_more'] ? true : false;
widgets/premium-image-button.php CHANGED
@@ -4,6 +4,7 @@ namespace PremiumAddons\Widgets;
4
 
5
  use PremiumAddons\Helper_Functions;
6
  use PremiumAddons\Includes;
 
7
  use Elementor\Widget_Base;
8
  use Elementor\Controls_Manager;
9
  use Elementor\Scheme_Color;
@@ -204,30 +205,38 @@ class Premium_Image_Button extends Widget_Base {
204
  ]
205
  );
206
 
207
- $this->add_control('premium_image_button_icon_selection',
208
- [
209
- 'label' => __('Icon', 'premium-addons-for-elementor'),
210
- 'type' => Controls_Manager::ICON,
211
- 'default' => 'fa fa-bars',
212
- 'condition' => [
213
- 'premium_image_button_icon_switcher' => 'yes',
214
- 'premium_image_button_hover_effect!' => 'style4'
215
- ],
216
- 'label_block' => true,
217
- ]
218
- );
 
 
 
 
219
 
220
- $this->add_control('premium_image_button_style4_icon_selection',
221
- [
222
- 'label' => __('Icon', 'premium-addons-for-elementor'),
223
- 'type' => Controls_Manager::ICON,
224
- 'default' => 'fa fa-bars',
225
- 'condition' => [
226
- 'premium_image_button_hover_effect' => 'style4'
227
- ],
228
- 'label_block' => true,
229
- ]
230
- );
 
 
 
 
231
 
232
  $this->add_control('premium_image_button_icon_position',
233
  [
@@ -736,6 +745,14 @@ class Premium_Image_Button extends Widget_Base {
736
 
737
  $image_event = $settings['premium_image_button_event_function'];
738
 
 
 
 
 
 
 
 
 
739
  if ($settings['premium_image_button_hover_effect'] == 'none'){
740
  $style_dir = 'premium-image-button-none';
741
  } elseif($settings['premium_image_button_hover_effect'] == 'style1'){
@@ -744,39 +761,69 @@ class Premium_Image_Button extends Widget_Base {
744
  $style_dir = 'premium-image-button-diagonal-effect-' . $settings['premium_image_button_style3_dir'];
745
  } elseif($settings['premium_image_button_hover_effect'] == 'style4'){
746
  $style_dir = 'premium-image-button-style4-' . $settings['premium_image_button_style4_dir'];
 
 
 
 
 
 
 
 
 
747
  } elseif($settings['premium_image_button_hover_effect'] == 'style5'){
748
  $style_dir = 'premium-image-button-overlap-effect-' . $settings['premium_image_button_style5_dir'];
749
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
750
 
751
  ?>
752
  <div class="premium-image-button-container">
753
- <a class="premium-image-button <?php echo esc_attr( $button_size ); ?> <?php echo esc_attr( $style_dir ); ?>"
754
- <?php if( ! empty( $image_link ) ) : ?> href="<?php echo esc_url( $image_link ); ?>" <?php endif; ?>
755
- <?php if( ! empty( $settings['premium_image_button_link']['is_external'] ) ) : ?> target="_blank" <?php endif; ?>
756
- <?php if( ! empty( $settings['premium_image_button_link']['nofollow'] ) ) : ?> rel="nofollow" <?php endif; ?>
757
- <?php if( ! empty( $settings['premium_image_button_event_function'] ) && $settings['premium_image_button_event_switcher'] ) : ?> onclick="<?php echo $image_event; ?>"<?php endif ?>>
758
- <div class="premium-image-button-text-icon-wrapper">
759
- <?php if( $settings['premium_image_button_icon_switcher'] &&
760
- $settings['premium_image_button_hover_effect'] != 'style4' &&
761
- $settings['premium_image_button_icon_position'] == 'before' &&
762
- ! empty( $settings['premium_image_button_icon_selection'] ) ) :
763
- ?>
764
- <i class="fa <?php echo esc_attr( $button_icon ); ?>"></i>
765
- <?php endif; ?>
766
  <span <?php echo $this->get_render_attribute_string( 'premium_image_button_text' ); ?>>
767
  <?php echo $button_text; ?>
768
  </span>
769
- <?php if( $settings['premium_image_button_icon_switcher'] &&
770
- $settings['premium_image_button_hover_effect'] != 'style4' &&
771
- $settings['premium_image_button_icon_position'] == 'after' &&
772
- ! empty( $settings['premium_image_button_icon_selection'] ) ) :
773
- ?>
774
- <i class="fa <?php echo esc_attr( $button_icon ); ?>"></i>
775
- <?php endif; ?>
776
  </div>
777
  <?php if( $settings['premium_image_button_hover_effect'] == 'style4') : ?>
778
  <div class="premium-image-button-style4-icon-wrapper <?php echo esc_attr( $settings['premium_image_button_style4_dir'] ); ?>">
779
- <i class="fa <?php echo esc_attr($settings['premium_image_button_style4_icon_selection']); ?>"></i>
 
 
 
 
780
  </div>
781
  <?php endif; ?>
782
  </a>
@@ -814,26 +861,44 @@ class Premium_Image_Button extends Widget_Base {
814
  } else if ( 'style4' == settings.premium_image_button_hover_effect ) {
815
  styleDir = 'premium-image-button-style4-' + settings.premium_image_button_style4_dir;
816
  slideIcon = settings.premium_image_button_style4_icon_selection;
 
 
 
817
  } else if ( 'style5' == settings.premium_image_button_hover_effect ){
818
  styleDir = 'premium-image-button-overlap-effect-' + settings.premium_image_button_style5_dir;
819
  }
820
 
 
 
 
821
  #>
822
 
823
  <div class="premium-image-button-container">
824
  <a class="premium-image-button {{ buttonSize }} {{ styleDir }}" href="{{ buttonUrl }}" onclick="{{ buttonEvent }}">
825
  <div class="premium-image-button-text-icon-wrapper">
826
- <# if( settings.premium_image_button_icon_switcher && 'before' == settings.premium_image_button_icon_position && 'style4' != settings.premium_image_button_hover_effect && '' != settings.premium_image_button_icon_selection ) { #>
827
- <i class="fa {{ buttonIcon }}"></i>
828
- <# } #>
 
 
 
 
829
  <span {{{ view.getRenderAttributeString('premium_image_button_text') }}}>{{{ buttonText }}}</span>
830
- <# if( settings.premium_image_button_icon_switcher && 'after' == settings.premium_image_button_icon_position && 'style4' != settings.premium_image_button_hover_effect && '' != settings.premium_image_button_icon_selection ) { #>
831
- <i class="fa {{ buttonIcon }}"></i>
832
- <# } #>
 
 
 
 
833
  </div>
834
  <# if( 'style4' == settings.premium_image_button_hover_effect ) { #>
835
  <div class="premium-image-button-style4-icon-wrapper {{ settings.premium_image_button_style4_dir }}">
836
- <i class="fa {{ slideIcon }}"></i>
 
 
 
 
837
  </div>
838
  <# } #>
839
  </a>
4
 
5
  use PremiumAddons\Helper_Functions;
6
  use PremiumAddons\Includes;
7
+ use Elementor\Icons_Manager;
8
  use Elementor\Widget_Base;
9
  use Elementor\Controls_Manager;
10
  use Elementor\Scheme_Color;
205
  ]
206
  );
207
 
208
+ $this->add_control('premium_image_button_icon_selection_updated',
209
+ [
210
+ 'label' => __('Icon', 'premium-addons-for-elementor'),
211
+ 'type' => Controls_Manager::ICONS,
212
+ 'fa4compatibility' => 'premium_image_button_icon_selection',
213
+ 'default' => [
214
+ 'value' => 'fas fa-bars',
215
+ 'library' => 'fa-solid',
216
+ ],
217
+ 'condition' => [
218
+ 'premium_image_button_icon_switcher' => 'yes',
219
+ 'premium_image_button_hover_effect!' => 'style4'
220
+ ],
221
+ 'label_block' => true,
222
+ ]
223
+ );
224
 
225
+ $this->add_control('premium_image_button_style4_icon_selection_updated',
226
+ [
227
+ 'label' => __('Icon', 'premium-addons-for-elementor'),
228
+ 'type' => Controls_Manager::ICONS,
229
+ 'fa4compatibility' => 'premium_image_button_style4_icon_selection',
230
+ 'default' => [
231
+ 'value' => 'fas fa-bars',
232
+ 'library' => 'fa-solid',
233
+ ],
234
+ 'condition' => [
235
+ 'premium_image_button_hover_effect' => 'style4'
236
+ ],
237
+ 'label_block' => true,
238
+ ]
239
+ );
240
 
241
  $this->add_control('premium_image_button_icon_position',
242
  [
745
 
746
  $image_event = $settings['premium_image_button_event_function'];
747
 
748
+ if ( ! empty ( $settings['premium_image_button_icon_selection'] ) ) {
749
+ $this->add_render_attribute( 'icon', 'class', $settings['premium_image_button_icon_selection'] );
750
+ $this->add_render_attribute( 'icon', 'aria-hidden', 'true' );
751
+ }
752
+
753
+ $migrated = isset( $settings['__fa4_migrated']['premium_image_button_icon_selection_updated'] );
754
+ $is_new = empty( $settings['premium_image_button_icon_selection'] ) && Icons_Manager::is_migration_allowed();
755
+
756
  if ($settings['premium_image_button_hover_effect'] == 'none'){
757
  $style_dir = 'premium-image-button-none';
758
  } elseif($settings['premium_image_button_hover_effect'] == 'style1'){
761
  $style_dir = 'premium-image-button-diagonal-effect-' . $settings['premium_image_button_style3_dir'];
762
  } elseif($settings['premium_image_button_hover_effect'] == 'style4'){
763
  $style_dir = 'premium-image-button-style4-' . $settings['premium_image_button_style4_dir'];
764
+
765
+ if ( ! empty ( $settings['premium_image_button_style4_icon_selection'] ) ) {
766
+ $this->add_render_attribute( 'slide_icon', 'class', $settings['premium_image_button_style4_icon_selection'] );
767
+ $this->add_render_attribute( 'slide_icon', 'aria-hidden', 'true' );
768
+ }
769
+
770
+ $slide_migrated = isset( $settings['__fa4_migrated']['premium_image_button_style4_icon_selection_updated'] );
771
+ $slide_is_new = empty( $settings['premium_image_button_style4_icon_selection'] ) && Icons_Manager::is_migration_allowed();
772
+
773
  } elseif($settings['premium_image_button_hover_effect'] == 'style5'){
774
  $style_dir = 'premium-image-button-overlap-effect-' . $settings['premium_image_button_style5_dir'];
775
  }
776
+
777
+ $this->add_render_attribute( 'button', 'class', array(
778
+ 'premium-image-button',
779
+ $button_size,
780
+ $style_dir
781
+ ));
782
+
783
+ if( ! empty( $image_link ) ) {
784
+
785
+ $this->add_render_attribute( 'button', 'href', $image_link );
786
+
787
+ if( ! empty( $settings['premium_image_button_link']['is_external'] ) )
788
+ $this->add_render_attribute( 'button', 'target', '_blank' );
789
+
790
+ if( ! empty( $settings['premium_image_button_link']['nofollow'] ) )
791
+ $this->add_render_attribute( 'button', 'rel', 'nofollow' );
792
+ }
793
+
794
+ if( 'yes' === $settings['premium_image_button_event_switcher'] && ! empty( $image_event ) ) {
795
+ $this->add_render_attribute( 'button', 'onclick', $image_event );
796
+ }
797
 
798
  ?>
799
  <div class="premium-image-button-container">
800
+ <a <?php echo $this->get_render_attribute_string( 'button' ); ?>>
801
+ <div class="premium-image-button-text-icon-wrapper">
802
+ <?php if( 'yes' === $settings['premium_image_button_icon_switcher'] && $settings['premium_image_button_hover_effect'] !== 'style4' && $settings['premium_image_button_icon_position'] === 'before' ) :
803
+ if ( $is_new || $migrated ) :
804
+ Icons_Manager::render_icon( $settings['premium_image_button_icon_selection_updated'], [ 'aria-hidden' => 'true' ] );
805
+ else: ?>
806
+ <i <?php echo $this->get_render_attribute_string( 'icon' ); ?>></i>
807
+ <?php endif;
808
+ endif; ?>
 
 
 
 
809
  <span <?php echo $this->get_render_attribute_string( 'premium_image_button_text' ); ?>>
810
  <?php echo $button_text; ?>
811
  </span>
812
+ <?php if( 'yes' === $settings['premium_image_button_icon_switcher'] && $settings['premium_image_button_hover_effect'] != 'style4' && $settings['premium_image_button_icon_position'] == 'after' ) :
813
+ if ( $is_new || $migrated ) :
814
+ Icons_Manager::render_icon( $settings['premium_image_button_icon_selection_updated'], [ 'aria-hidden' => 'true' ] );
815
+ else: ?>
816
+ <i <?php echo $this->get_render_attribute_string( 'icon' ); ?>></i>
817
+ <?php endif;
818
+ endif; ?>
819
  </div>
820
  <?php if( $settings['premium_image_button_hover_effect'] == 'style4') : ?>
821
  <div class="premium-image-button-style4-icon-wrapper <?php echo esc_attr( $settings['premium_image_button_style4_dir'] ); ?>">
822
+ <?php if ( $slide_is_new || $slide_migrated ) :
823
+ Icons_Manager::render_icon( $settings['premium_image_button_style4_icon_selection_updated'], [ 'aria-hidden' => 'true' ] );
824
+ else: ?>
825
+ <i <?php echo $this->get_render_attribute_string( 'slide_icon' ); ?>></i>
826
+ <?php endif; ?>
827
  </div>
828
  <?php endif; ?>
829
  </a>
861
  } else if ( 'style4' == settings.premium_image_button_hover_effect ) {
862
  styleDir = 'premium-image-button-style4-' + settings.premium_image_button_style4_dir;
863
  slideIcon = settings.premium_image_button_style4_icon_selection;
864
+
865
+ var slideIconHTML = elementor.helpers.renderIcon( view, settings.premium_image_button_style4_icon_selection_updated, { 'aria-hidden': true }, 'i' , 'object' ),
866
+ slideMigrated = elementor.helpers.isIconMigrated( settings, 'premium_image_button_style4_icon_selection_updated' );
867
  } else if ( 'style5' == settings.premium_image_button_hover_effect ){
868
  styleDir = 'premium-image-button-overlap-effect-' + settings.premium_image_button_style5_dir;
869
  }
870
 
871
+ var iconHTML = elementor.helpers.renderIcon( view, settings.premium_image_button_icon_selection_updated, { 'aria-hidden': true }, 'i' , 'object' ),
872
+ migrated = elementor.helpers.isIconMigrated( settings, 'premium_image_button_icon_selection_updated' );
873
+
874
  #>
875
 
876
  <div class="premium-image-button-container">
877
  <a class="premium-image-button {{ buttonSize }} {{ styleDir }}" href="{{ buttonUrl }}" onclick="{{ buttonEvent }}">
878
  <div class="premium-image-button-text-icon-wrapper">
879
+ <# if( 'yes' === settings.premium_image_button_icon_switcher && 'before' === settings.premium_image_button_icon_position && 'style4' !== settings.premium_image_button_hover_effect ) {
880
+ if ( iconHTML && iconHTML.rendered && ( ! buttonIcon || migrated ) ) { #>
881
+ {{{ iconHTML.value }}}
882
+ <# } else { #>
883
+ <i class="{{ buttonIcon }}" aria-hidden="true"></i>
884
+ <# }
885
+ } #>
886
  <span {{{ view.getRenderAttributeString('premium_image_button_text') }}}>{{{ buttonText }}}</span>
887
+ <# if( 'yes' === settings.premium_image_button_icon_switcher && 'after' === settings.premium_image_button_icon_position && 'style4' !== settings.premium_image_button_hover_effect ) {
888
+ if ( iconHTML && iconHTML.rendered && ( ! buttonIcon || migrated ) ) { #>
889
+ {{{ iconHTML.value }}}
890
+ <# } else { #>
891
+ <i class="{{ buttonIcon }}" aria-hidden="true"></i>
892
+ <# }
893
+ } #>
894
  </div>
895
  <# if( 'style4' == settings.premium_image_button_hover_effect ) { #>
896
  <div class="premium-image-button-style4-icon-wrapper {{ settings.premium_image_button_style4_dir }}">
897
+ <# if ( slideIconHTML && slideIconHTML.rendered && ( ! slideIcon || slideMigrated ) ) { #>
898
+ {{{ slideIconHTML.value }}}
899
+ <# } else { #>
900
+ <i class="{{ slideIcon }}" aria-hidden="true"></i>
901
+ <# } #>
902
  </div>
903
  <# } #>
904
  </a>
widgets/premium-modalbox.php CHANGED
@@ -4,6 +4,7 @@ namespace PremiumAddons\Widgets;
4
 
5
  use PremiumAddons\Helper_Functions;
6
  use PremiumAddons\Includes;
 
7
  use Elementor\Widget_Base;
8
  use Elementor\Utils;
9
  use Elementor\Control_Media;
@@ -61,7 +62,6 @@ class Premium_Modalbox extends Widget_Base {
61
  // Adding the controls fields for the premium modal box
62
  // This will controls the animation, colors and background, dimensions etc
63
  protected function _register_controls() {
64
- /* Start Box Content Section */
65
 
66
  $this->start_controls_section('premium_modal_box_selector_content_section',
67
  [
@@ -80,7 +80,6 @@ class Premium_Modalbox extends Widget_Base {
80
  ]
81
  );
82
 
83
- /*Icon To Display*/
84
  $this->add_control('premium_modal_box_icon_selection',
85
  [
86
  'label' => __('Icon', 'premium-addons-for-elementor'),
@@ -99,18 +98,18 @@ class Premium_Modalbox extends Widget_Base {
99
  ]
100
  );
101
 
102
- /*Font Awesome Icon*/
103
- $this->add_control('premium_modal_box_font_icon',
104
- [
105
- 'label' => __('Font Awesome', 'premium-addons-for-elementor'),
106
- 'type' => Controls_Manager::ICON,
107
- 'condition' => [
108
- 'premium_modal_box_icon_selection' => 'fonticon',
109
- 'premium_modal_box_header_switcher' => 'yes'
110
- ],
111
- 'label_block' => true,
112
- ]
113
- );
114
 
115
  $this->add_responsive_control('premium_modal_box_font_icon_size',
116
  [
@@ -127,7 +126,6 @@ class Premium_Modalbox extends Widget_Base {
127
  ]
128
  );
129
 
130
- /*Image Icon*/
131
  $this->add_control('premium_modal_box_image_icon',
132
  [
133
  'label' => __('Custom Image', 'premium-addons-for-elementor'),
@@ -144,7 +142,6 @@ class Premium_Modalbox extends Widget_Base {
144
  ]
145
  );
146
 
147
- /*Modal Box Title*/
148
  $this->add_control('premium_modal_box_title',
149
  [
150
  'label' => __('Title', 'premium-addons-for-elementor'),
@@ -159,7 +156,6 @@ class Premium_Modalbox extends Widget_Base {
159
  ]
160
  );
161
 
162
- /*Modal Box Content Heading*/
163
  $this->add_control('premium_modal_box_content_heading',
164
  [
165
  'label' => __('Content', 'premium-addons-for-elementor'),
@@ -167,7 +163,6 @@ class Premium_Modalbox extends Widget_Base {
167
  ]
168
  );
169
 
170
- /*Modal Box Content Type*/
171
  $this->add_control('premium_modal_box_content_type',
172
  [
173
  'label' => __('Content to Show', 'premium-addons-for-elementor'),
@@ -181,7 +176,6 @@ class Premium_Modalbox extends Widget_Base {
181
  ]
182
  );
183
 
184
- /*Modal Box Elementor Template*/
185
  $this->add_control('premium_modal_box_content_temp',
186
  [
187
  'label' => __( 'Content', 'premium-addons-for-elementor' ),
@@ -194,7 +188,6 @@ class Premium_Modalbox extends Widget_Base {
194
  ]
195
  );
196
 
197
- /*Modal Box Content*/
198
  $this->add_control('premium_modal_box_content',
199
  [
200
  'type' => Controls_Manager::WYSIWYG,
@@ -208,7 +201,6 @@ class Premium_Modalbox extends Widget_Base {
208
  ]
209
  );
210
 
211
- /*Upper Close Button*/
212
  $this->add_control('premium_modal_box_upper_close',
213
  [
214
  'label' => __('Upper Close Button', 'premium-addons-for-elementor'),
@@ -220,7 +212,6 @@ class Premium_Modalbox extends Widget_Base {
220
  ]
221
  );
222
 
223
- /*Lower Close Button*/
224
  $this->add_control('premium_modal_box_lower_close',
225
  [
226
  'label' => __('Lower Close Button', 'premium-addons-for-elementor'),
@@ -250,7 +241,6 @@ class Premium_Modalbox extends Widget_Base {
250
  ]
251
  );
252
 
253
- /*Modal Box Display On*/
254
  $this->add_control('premium_modal_box_display_on',
255
  [
256
  'label' => __('Display Style', 'premium-addons-for-elementor'),
@@ -267,7 +257,6 @@ class Premium_Modalbox extends Widget_Base {
267
  ]
268
  );
269
 
270
- /*Button Text*/
271
  $this->add_control('premium_modal_box_button_text',
272
  [
273
  'label' => __('Button Text', 'premium-addons-for-elementor'),
@@ -292,18 +281,22 @@ class Premium_Modalbox extends Widget_Base {
292
  ]
293
  );
294
 
295
- $this->add_control('premium_modal_box_button_icon_selection',
296
- [
297
- 'label' => __('Icon', 'premium-addons-for-elementor'),
298
- 'type' => Controls_Manager::ICON,
299
- 'default' => 'fa fa-bars',
300
- 'condition' => [
301
- 'premium_modal_box_display_on' => 'button',
302
- 'premium_modal_box_icon_switcher' => 'yes'
303
- ],
304
- 'label_block' => true,
305
- ]
306
- );
 
 
 
 
307
 
308
  $this->add_control('premium_modal_box_icon_position',
309
  [
@@ -416,7 +409,6 @@ class Premium_Modalbox extends Widget_Base {
416
  );
417
  }
418
 
419
- /*Button Size*/
420
  $this->add_control('premium_modal_box_button_size',
421
  [
422
  'label' => __('Button Size', 'premium-addons-for-elementor'),
@@ -435,7 +427,6 @@ class Premium_Modalbox extends Widget_Base {
435
  ]
436
  );
437
 
438
- /*Image Source*/
439
  $this->add_control('premium_modal_box_image_src',
440
  [
441
  'label' => __('Image', 'premium-addons-for-elementor'),
@@ -451,7 +442,6 @@ class Premium_Modalbox extends Widget_Base {
451
  ]
452
  );
453
 
454
- /*Text Selector*/
455
  $this->add_control('premium_modal_box_selector_text',
456
  [
457
  'label' => __('Text', 'premium-addons-for-elementor'),
@@ -465,7 +455,6 @@ class Premium_Modalbox extends Widget_Base {
465
  ]
466
  );
467
 
468
- /*On Load Trigger Delay*/
469
  $this->add_control('premium_modal_box_popup_delay',
470
  [
471
  'label' => __('Delay in Popup Display (Sec)','premium-addons-for-elementor'),
@@ -479,24 +468,22 @@ class Premium_Modalbox extends Widget_Base {
479
  ]
480
  );
481
 
482
-
483
- /*Alignment*/
484
  $this->add_responsive_control('premium_modal_box_selector_align',
485
  [
486
  'label' => __( 'Alignment', 'premium-addons-for-elementor' ),
487
  'type' => Controls_Manager::CHOOSE,
488
  'options' => [
489
  'left' => [
490
- 'title' => __( 'Left', 'premium-addons-for-elementor' ),
491
- 'icon' => 'fa fa-align-left',
492
  ],
493
  'center' => [
494
- 'title' => __( 'Center', 'premium-addons-for-elementor' ),
495
- 'icon' => 'fa fa-align-center',
496
  ],
497
  'right' => [
498
- 'title' => __( 'Right', 'premium-addons-for-elementor' ),
499
- 'icon' => 'fa fa-align-right',
500
  ],
501
  ],
502
  'default' => 'center',
@@ -509,10 +496,8 @@ class Premium_Modalbox extends Widget_Base {
509
  ]
510
  );
511
 
512
- /*End Box Content Section*/
513
  $this->end_controls_section();
514
 
515
- /*Selector Style*/
516
  $this->start_controls_section('premium_modal_box_selector_style_section',
517
  [
518
  'label' => __('Trigger', 'premium-addons-for-elementor'),
@@ -523,7 +508,6 @@ class Premium_Modalbox extends Widget_Base {
523
  ]
524
  );
525
 
526
- /*Button Text Color*/
527
  $this->add_control('premium_modal_box_button_text_color',
528
  [
529
  'label' => __('Color', 'premium-addons-for-elementor'),
@@ -592,7 +576,6 @@ class Premium_Modalbox extends Widget_Base {
592
  ]
593
  );
594
 
595
- /*Selector Text Typography*/
596
  $this->add_group_control(
597
  Group_Control_Typography::get_type(),
598
  [
@@ -608,7 +591,6 @@ class Premium_Modalbox extends Widget_Base {
608
 
609
  $this->start_controls_tabs('premium_modal_box_button_style');
610
 
611
- /*Button Color*/
612
  $this->start_controls_tab('premium_modal_box_tab_selector_normal',
613
  [
614
  'label' => __( 'Normal', 'premium-addons-for-elementor' ),
@@ -618,7 +600,6 @@ class Premium_Modalbox extends Widget_Base {
618
  ]
619
  );
620
 
621
- /*Button Background Color*/
622
  $this->add_control('premium_modal_box_selector_background',
623
  [
624
  'label' => __('Background Color', 'premium-addons-for-elementor'),
@@ -636,7 +617,6 @@ class Premium_Modalbox extends Widget_Base {
636
  ]
637
  );
638
 
639
- /*Button Border*/
640
  $this->add_group_control(
641
  Group_Control_Border::get_type(),
642
  [
@@ -648,7 +628,6 @@ class Premium_Modalbox extends Widget_Base {
648
  ]
649
  );
650
 
651
- /*Button Border Radius*/
652
  $this->add_control('premium_modal_box_selector_border_radius',
653
  [
654
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
@@ -667,7 +646,6 @@ class Premium_Modalbox extends Widget_Base {
667
  ]
668
  );
669
 
670
- /*Selector Padding*/
671
  $this->add_responsive_control('premium_modal_box_selector_padding',
672
  [
673
  'label' => __('Padding', 'premium-addons-for-elementor'),
@@ -689,7 +667,6 @@ class Premium_Modalbox extends Widget_Base {
689
  ]
690
  );
691
 
692
- /*Selector Box Shadow*/
693
  $this->add_group_control(
694
  Group_Control_Box_Shadow::get_type(),
695
  [
@@ -702,7 +679,6 @@ class Premium_Modalbox extends Widget_Base {
702
  ]
703
  );
704
 
705
- /*Selector Text Shadow*/
706
  $this->add_group_control(
707
  Group_Control_Text_Shadow::get_type(),
708
  [
@@ -725,7 +701,6 @@ class Premium_Modalbox extends Widget_Base {
725
  ]
726
  );
727
 
728
- /*Button Hover Background Color*/
729
  $this->add_control('premium_modal_box_selector_hover_background',
730
  [
731
  'label' => __('Background Color', 'premium-addons-for-elementor'),
@@ -739,7 +714,6 @@ class Premium_Modalbox extends Widget_Base {
739
  ]
740
  );
741
 
742
- /*Button Border*/
743
  $this->add_group_control(
744
  Group_Control_Border::get_type(),
745
  [
@@ -752,7 +726,6 @@ class Premium_Modalbox extends Widget_Base {
752
  ]
753
  );
754
 
755
- /*Button Border Radius*/
756
  $this->add_control('premium_modal_box_selector_border_radius_hover',
757
  [
758
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
@@ -767,7 +740,6 @@ class Premium_Modalbox extends Widget_Base {
767
  ]
768
  );
769
 
770
- /*Selector Box Shadow*/
771
  $this->add_group_control(
772
  Group_Control_Box_Shadow::get_type(),
773
  [
@@ -786,7 +758,6 @@ class Premium_Modalbox extends Widget_Base {
786
 
787
  $this->end_controls_section();
788
 
789
- /*Start Header Seettings Section*/
790
  $this->start_controls_section('premium_modal_box_header_settings',
791
  [
792
  'label' => __('Heading', 'premium-addons-for-elementor'),
@@ -797,7 +768,6 @@ class Premium_Modalbox extends Widget_Base {
797
  ]
798
  );
799
 
800
- /*Header Text Color*/
801
  $this->add_control('premium_modal_box_header_text_color',
802
  [
803
  'label' => __('Color', 'premium-addons-for-elementor'),
@@ -808,7 +778,6 @@ class Premium_Modalbox extends Widget_Base {
808
  ]
809
  );
810
 
811
- /*Header Text Typography*/
812
  $this->add_group_control(
813
  Group_Control_Typography::get_type(),
814
  [
@@ -819,7 +788,6 @@ class Premium_Modalbox extends Widget_Base {
819
  ]
820
  );
821
 
822
- /*Header Background Color*/
823
  $this->add_control('premium_modal_box_header_background',
824
  [
825
  'label' => __('Background Color', 'premium-addons-for-elementor'),
@@ -830,7 +798,6 @@ class Premium_Modalbox extends Widget_Base {
830
  ]
831
  );
832
 
833
- /*Heading Border*/
834
  $this->add_group_control(
835
  Group_Control_Border::get_type(),
836
  [
@@ -839,11 +806,8 @@ class Premium_Modalbox extends Widget_Base {
839
  ]
840
  );
841
 
842
- /*End Header Settings Section*/
843
  $this->end_controls_section();
844
 
845
-
846
- /*Start Close Button Section*/
847
  $this->start_controls_section('premium_modal_box_upper_close_button_section',
848
  [
849
  'label' => __('Upper Close Button', 'premium-addons-for-elementor'),
@@ -855,7 +819,6 @@ class Premium_Modalbox extends Widget_Base {
855
  ]
856
  );
857
 
858
- /*Close Button Size*/
859
  $this->add_responsive_control('premium_modal_box_upper_close_button_size',
860
  [
861
  'label' => __('Size', 'premium-addons-for-elementor'),
@@ -871,14 +834,12 @@ class Premium_Modalbox extends Widget_Base {
871
 
872
  $this->start_controls_tabs('premium_modal_box_upper_close_button_style');
873
 
874
- /*Button Color*/
875
  $this->start_controls_tab('premium_modal_box_upper_close_button_normal',
876
  [
877
  'label' => __( 'Normal', 'premium-addons-for-elementor' ),
878
  ]
879
  );
880
 
881
- /*Close Button Color*/
882
  $this->add_control('premium_modal_box_upper_close_button_normal_color',
883
  [
884
  'label' => __('Color', 'premium-addons-for-elementor'),
@@ -889,7 +850,6 @@ class Premium_Modalbox extends Widget_Base {
889
  ]
890
  );
891
 
892
- /*Close Button Background Color*/
893
  $this->add_control('premium_modal_box_upper_close_button_background_color',
894
  [
895
  'label' => __('Background Color', 'premium-addons-for-elementor'),
@@ -900,7 +860,6 @@ class Premium_Modalbox extends Widget_Base {
900
  ]
901
  );
902
 
903
- /*Button Border*/
904
  $this->add_group_control(
905
  Group_Control_Border::get_type(),
906
  [
@@ -909,7 +868,6 @@ class Premium_Modalbox extends Widget_Base {
909
  ]
910
  );
911
 
912
- /*Button Border Radius*/
913
  $this->add_control('premium_modal_upper_border_radius',
914
  [
915
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
@@ -930,7 +888,6 @@ class Premium_Modalbox extends Widget_Base {
930
  ]
931
  );
932
 
933
- /*Close Button Color*/
934
  $this->add_control('premium_modal_box_upper_close_button_hover_color',
935
  [
936
  'label' => __('Color', 'premium-addons-for-elementor'),
@@ -941,7 +898,6 @@ class Premium_Modalbox extends Widget_Base {
941
  ]
942
  );
943
 
944
- /*Close Button Background Color*/
945
  $this->add_control('premium_modal_box_upper_close_button_background_color_hover',
946
  [
947
  'label' => __('Background Color', 'premium-addons-for-elementor'),
@@ -952,7 +908,6 @@ class Premium_Modalbox extends Widget_Base {
952
  ]
953
  );
954
 
955
- /*Button Border*/
956
  $this->add_group_control(
957
  Group_Control_Border::get_type(),
958
  [
@@ -961,7 +916,6 @@ class Premium_Modalbox extends Widget_Base {
961
  ]
962
  );
963
 
964
- /*Button Border Radius*/
965
  $this->add_control('premium_modal_upper_border_radius_hover',
966
  [
967
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
@@ -978,7 +932,6 @@ class Premium_Modalbox extends Widget_Base {
978
 
979
  $this->end_controls_tabs();
980
 
981
- /*Upper Close Padding*/
982
  $this->add_responsive_control('premium_modal_box_upper_close_button_padding',
983
  [
984
  'label' => __('Padding', 'premium-addons-for-elementor'),
@@ -990,10 +943,8 @@ class Premium_Modalbox extends Widget_Base {
990
  ]
991
  );
992
 
993
- /*End Upper Close Button Style Section*/
994
  $this->end_controls_section();
995
 
996
- /*Start Close Button Section*/
997
  $this->start_controls_section('premium_modal_box_lower_close_button_section',
998
  [
999
  'label' => __('Lower Close Button', 'premium-addons-for-elementor'),
@@ -1004,7 +955,6 @@ class Premium_Modalbox extends Widget_Base {
1004
  ]
1005
  );
1006
 
1007
- /*Close Button Text Typography*/
1008
  $this->add_group_control(
1009
  Group_Control_Typography::get_type(),
1010
  [
@@ -1015,7 +965,6 @@ class Premium_Modalbox extends Widget_Base {
1015
  ]
1016
  );
1017
 
1018
- /*Close Button Size*/
1019
  $this->add_responsive_control('premium_modal_box_lower_close_button_width',
1020
  [
1021
  'label' => __('Width', 'premium-addons-for-elementor'),
@@ -1040,14 +989,12 @@ class Premium_Modalbox extends Widget_Base {
1040
 
1041
  $this->start_controls_tabs('premium_modal_box_lower_close_button_style');
1042
 
1043
- /*Button Color*/
1044
  $this->start_controls_tab('premium_modal_box_lower_close_button_normal',
1045
  [
1046
  'label' => __( 'Normal', 'premium-addons-for-elementor' ),
1047
  ]
1048
  );
1049
 
1050
- /*Close Button Background Color*/
1051
  $this->add_control('premium_modal_box_lower_close_button_normal_color',
1052
  [
1053
  'label' => __('Color', 'premium-addons-for-elementor'),
@@ -1062,7 +1009,6 @@ class Premium_Modalbox extends Widget_Base {
1062
  ]
1063
  );
1064
 
1065
- /*Close Button Background Color*/
1066
  $this->add_control('premium_modal_box_lower_close_button_background_normal_color',
1067
  [
1068
  'label' => __('Background Color', 'premium-addons-for-elementor'),
@@ -1077,7 +1023,6 @@ class Premium_Modalbox extends Widget_Base {
1077
  ]
1078
  );
1079
 
1080
- /*Lower Close Border*/
1081
  $this->add_group_control(
1082
  Group_Control_Border::get_type(),
1083
  [
@@ -1086,7 +1031,6 @@ class Premium_Modalbox extends Widget_Base {
1086
  ]
1087
  );
1088
 
1089
- /*Lower Close Radius*/
1090
  $this->add_control('premium_modal_box_lower_close_border_radius',
1091
  [
1092
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
@@ -1107,7 +1051,6 @@ class Premium_Modalbox extends Widget_Base {
1107
  ]
1108
  );
1109
 
1110
- /*Close Button Background Color*/
1111
  $this->add_control('premium_modal_box_lower_close_button_hover_color',
1112
  [
1113
  'label' => __('Color', 'premium-addons-for-elementor'),
@@ -1122,7 +1065,6 @@ class Premium_Modalbox extends Widget_Base {
1122
  ]
1123
  );
1124
 
1125
- /*Close Button Background Color*/
1126
  $this->add_control('premium_modal_box_lower_close_button_background_hover_color',
1127
  [
1128
  'label' => __('Background Color', 'premium-addons-for-elementor'),
@@ -1137,7 +1079,6 @@ class Premium_Modalbox extends Widget_Base {
1137
  ]
1138
  );
1139
 
1140
- /*Lower Close Hover Border*/
1141
  $this->add_group_control(
1142
  Group_Control_Border::get_type(),
1143
  [
@@ -1146,7 +1087,6 @@ class Premium_Modalbox extends Widget_Base {
1146
  ]
1147
  );
1148
 
1149
- /*Lower Close Hover Border Radius*/
1150
  $this->add_control('premium_modal_box_lower_close_border_radius_hover',
1151
  [
1152
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
@@ -1163,7 +1103,6 @@ class Premium_Modalbox extends Widget_Base {
1163
 
1164
  $this->end_controls_tabs();
1165
 
1166
- /*Upper Close Padding*/
1167
  $this->add_responsive_control('premium_modal_box_lower_close_button_padding',
1168
  [
1169
  'label' => __('Padding', 'premium-addons-for-elementor'),
@@ -1175,7 +1114,6 @@ class Premium_Modalbox extends Widget_Base {
1175
  ]
1176
  );
1177
 
1178
- /*End Lower Close Button Style Section*/
1179
  $this->end_controls_section();
1180
 
1181
  $this->start_controls_section('premium_modal_box_style',
@@ -1185,7 +1123,6 @@ class Premium_Modalbox extends Widget_Base {
1185
  ]
1186
  );
1187
 
1188
- /*Modal Size*/
1189
  $this->add_control('premium_modal_box_modal_size',
1190
  [
1191
  'label' => __('Width', 'premium-addons-for-elementor'),
@@ -1219,7 +1156,6 @@ class Premium_Modalbox extends Widget_Base {
1219
  ]
1220
  );
1221
 
1222
- /*Modal Background Color*/
1223
  $this->add_group_control(
1224
  Group_Control_Background::get_type(),
1225
  [
@@ -1229,7 +1165,6 @@ class Premium_Modalbox extends Widget_Base {
1229
  ]
1230
  );
1231
 
1232
- /*Content Background Color*/
1233
  $this->add_control('premium_modal_box_content_background',
1234
  [
1235
  'label' => __('Content Background Color', 'premium-addons-for-elementor'),
@@ -1240,7 +1175,6 @@ class Premium_Modalbox extends Widget_Base {
1240
  ]
1241
  );
1242
 
1243
- /*Footer Background Color*/
1244
  $this->add_control('premium_modal_box_footer_background',
1245
  [
1246
  'label' => __('Footer Background Color', 'premium-addons-for-elementor'),
@@ -1251,7 +1185,6 @@ class Premium_Modalbox extends Widget_Base {
1251
  ]
1252
  );
1253
 
1254
- /*Content Box Border*/
1255
  $this->add_group_control(
1256
  Group_Control_Border::get_type(),
1257
  [
@@ -1260,7 +1193,6 @@ class Premium_Modalbox extends Widget_Base {
1260
  ]
1261
  );
1262
 
1263
- /*Border Radius*/
1264
  $this->add_control('premium_modal_box_border_radius',
1265
  [
1266
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
@@ -1272,7 +1204,6 @@ class Premium_Modalbox extends Widget_Base {
1272
  ]
1273
  );
1274
 
1275
- /*Box Shadow */
1276
  $this->add_group_control(
1277
  Group_Control_Box_Shadow::get_type(),
1278
  [
@@ -1281,7 +1212,6 @@ class Premium_Modalbox extends Widget_Base {
1281
  ]
1282
  );
1283
 
1284
- /*Modal Box Margin*/
1285
  $this->add_responsive_control('premium_modal_box_margin',
1286
  [
1287
  'label' => __('Margin', 'premium-addons-for-elementor'),
@@ -1307,6 +1237,24 @@ class Premium_Modalbox extends Widget_Base {
1307
  $this->end_controls_section();
1308
 
1309
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1310
 
1311
  protected function render() {
1312
 
@@ -1316,6 +1264,14 @@ class Premium_Modalbox extends Widget_Base {
1316
 
1317
  $button_icon = $settings['premium_modal_box_button_icon_selection'];
1318
 
 
 
 
 
 
 
 
 
1319
  $template = $settings['premium_modal_box_content_temp'];
1320
 
1321
  $modal_settings = [
@@ -1356,16 +1312,19 @@ class Premium_Modalbox extends Widget_Base {
1356
 
1357
  $this->add_render_attribute('text', 'data-target', '#premium-modal-' . $this->get_id() );
1358
 
1359
- if ( 'fonticon' === $settings['premium_modal_box_icon_selection'] ) {
1360
-
1361
- $this->add_render_attribute('title_icon', 'class', $settings['premium_modal_box_font_icon'] );
1362
-
1363
- } else {
1364
-
1365
- $this->add_render_attribute('title_icon', 'src', $settings['premium_modal_box_image_icon']['url'] );
1366
- $alt = Control_Media::get_image_alt( $settings['premium_modal_box_image_icon'] );
1367
- $this->add_render_attribute('title_icon', 'alt', $alt );
1368
-
 
 
 
1369
  }
1370
 
1371
  ?>
@@ -1375,13 +1334,21 @@ class Premium_Modalbox extends Widget_Base {
1375
  <?php
1376
  if ( $settings['premium_modal_box_display_on'] === 'button' ) : ?>
1377
  <button <?php echo $this->get_render_attribute_string('button'); ?>>
1378
- <?php if( $settings['premium_modal_box_icon_switcher'] && $settings['premium_modal_box_icon_position'] == 'before' && ! empty( $settings['premium_modal_box_button_icon_selection'] ) ) : ?>
1379
- <i class="fa <?php echo esc_attr( $button_icon ); ?>"></i>
1380
- <?php endif; ?>
 
 
 
 
1381
  <span><?php echo $settings['premium_modal_box_button_text']; ?></span>
1382
- <?php if( $settings['premium_modal_box_icon_switcher'] && $settings['premium_modal_box_icon_position'] == 'after' && ! empty( $settings['premium_modal_box_button_icon_selection'] ) ) : ?>
1383
- <i class="fa <?php echo esc_attr( $button_icon ); ?>"></i>
1384
- <?php endif; ?>
 
 
 
 
1385
  </button>
1386
  <?php elseif ( $settings['premium_modal_box_display_on'] === 'image' ) : ?>
1387
  <img <?php echo $this->get_render_attribute_string('image'); ?>>
@@ -1397,11 +1364,7 @@ class Premium_Modalbox extends Widget_Base {
1397
  <div class="premium-modal-box-modal-header">
1398
  <?php if ( ! empty( $settings['premium_modal_box_title'] ) ) : ?>
1399
  <h3 class="premium-modal-box-modal-title">
1400
- <?php if( 'fonticon' === $settings['premium_modal_box_icon_selection'] ) : ?>
1401
- <i <?php echo $this->get_render_attribute_string('title_icon'); ?>></i>
1402
- <?php elseif( 'image' === $settings['premium_modal_box_icon_selection'] ) : ?>
1403
- <img <?php echo $this->get_render_attribute_string('title_icon'); ?>>
1404
- <?php endif;
1405
  echo $settings['premium_modal_box_title']; ?>
1406
  </h3>
1407
  <?php endif; ?>
4
 
5
  use PremiumAddons\Helper_Functions;
6
  use PremiumAddons\Includes;
7
+ use Elementor\Icons_Manager;
8
  use Elementor\Widget_Base;
9
  use Elementor\Utils;
10
  use Elementor\Control_Media;
62
  // Adding the controls fields for the premium modal box
63
  // This will controls the animation, colors and background, dimensions etc
64
  protected function _register_controls() {
 
65
 
66
  $this->start_controls_section('premium_modal_box_selector_content_section',
67
  [
80
  ]
81
  );
82
 
 
83
  $this->add_control('premium_modal_box_icon_selection',
84
  [
85
  'label' => __('Icon', 'premium-addons-for-elementor'),
98
  ]
99
  );
100
 
101
+ $this->add_control('premium_modal_box_font_icon_updated',
102
+ [
103
+ 'label' => __('Font Awesome', 'premium-addons-for-elementor'),
104
+ 'type' => Controls_Manager::ICONS,
105
+ 'fa4compatibility' => 'premium_modal_box_font_icon',
106
+ 'condition' => [
107
+ 'premium_modal_box_icon_selection' => 'fonticon',
108
+ 'premium_modal_box_header_switcher' => 'yes'
109
+ ],
110
+ 'label_block' => true,
111
+ ]
112
+ );
113
 
114
  $this->add_responsive_control('premium_modal_box_font_icon_size',
115
  [
126
  ]
127
  );
128
 
 
129
  $this->add_control('premium_modal_box_image_icon',
130
  [
131
  'label' => __('Custom Image', 'premium-addons-for-elementor'),
142
  ]
143
  );
144
 
 
145
  $this->add_control('premium_modal_box_title',
146
  [
147
  'label' => __('Title', 'premium-addons-for-elementor'),
156
  ]
157
  );
158
 
 
159
  $this->add_control('premium_modal_box_content_heading',
160
  [
161
  'label' => __('Content', 'premium-addons-for-elementor'),
163
  ]
164
  );
165
 
 
166
  $this->add_control('premium_modal_box_content_type',
167
  [
168
  'label' => __('Content to Show', 'premium-addons-for-elementor'),
176
  ]
177
  );
178
 
 
179
  $this->add_control('premium_modal_box_content_temp',
180
  [
181
  'label' => __( 'Content', 'premium-addons-for-elementor' ),
188
  ]
189
  );
190
 
 
191
  $this->add_control('premium_modal_box_content',
192
  [
193
  'type' => Controls_Manager::WYSIWYG,
201
  ]
202
  );
203
 
 
204
  $this->add_control('premium_modal_box_upper_close',
205
  [
206
  'label' => __('Upper Close Button', 'premium-addons-for-elementor'),
212
  ]
213
  );
214
 
 
215
  $this->add_control('premium_modal_box_lower_close',
216
  [
217
  'label' => __('Lower Close Button', 'premium-addons-for-elementor'),
241
  ]
242
  );
243
 
 
244
  $this->add_control('premium_modal_box_display_on',
245
  [
246
  'label' => __('Display Style', 'premium-addons-for-elementor'),
257
  ]
258
  );
259
 
 
260
  $this->add_control('premium_modal_box_button_text',
261
  [
262
  'label' => __('Button Text', 'premium-addons-for-elementor'),
281
  ]
282
  );
283
 
284
+ $this->add_control('premium_modal_box_button_icon_selection_updated',
285
+ [
286
+ 'label' => __('Icon', 'premium-addons-for-elementor'),
287
+ 'type' => Controls_Manager::ICONS,
288
+ 'fa4compatibility' => 'premium_modal_box_button_icon_selection',
289
+ 'default' => [
290
+ 'value' => 'fas fa-bars',
291
+ 'library' => 'fa-solid',
292
+ ],
293
+ 'condition' => [
294
+ 'premium_modal_box_display_on' => 'button',
295
+ 'premium_modal_box_icon_switcher' => 'yes'
296
+ ],
297
+ 'label_block' => true,
298
+ ]
299
+ );
300
 
301
  $this->add_control('premium_modal_box_icon_position',
302
  [
409
  );
410
  }
411
 
 
412
  $this->add_control('premium_modal_box_button_size',
413
  [
414
  'label' => __('Button Size', 'premium-addons-for-elementor'),
427
  ]
428
  );
429
 
 
430
  $this->add_control('premium_modal_box_image_src',
431
  [
432
  'label' => __('Image', 'premium-addons-for-elementor'),
442
  ]
443
  );
444
 
 
445
  $this->add_control('premium_modal_box_selector_text',
446
  [
447
  'label' => __('Text', 'premium-addons-for-elementor'),
455
  ]
456
  );
457
 
 
458
  $this->add_control('premium_modal_box_popup_delay',
459
  [
460
  'label' => __('Delay in Popup Display (Sec)','premium-addons-for-elementor'),
468
  ]
469
  );
470
 
 
 
471
  $this->add_responsive_control('premium_modal_box_selector_align',
472
  [
473
  'label' => __( 'Alignment', 'premium-addons-for-elementor' ),
474
  'type' => Controls_Manager::CHOOSE,
475
  'options' => [
476
  'left' => [
477
+ 'title' => __( 'Left', 'premium-addons-for-elementor' ),
478
+ 'icon' => 'fa fa-align-left',
479
  ],
480
  'center' => [
481
+ 'title' => __( 'Center', 'premium-addons-for-elementor' ),
482
+ 'icon' => 'fa fa-align-center',
483
  ],
484
  'right' => [
485
+ 'title' => __( 'Right', 'premium-addons-for-elementor' ),
486
+ 'icon' => 'fa fa-align-right',
487
  ],
488
  ],
489
  'default' => 'center',
496
  ]
497
  );
498
 
 
499
  $this->end_controls_section();
500
 
 
501
  $this->start_controls_section('premium_modal_box_selector_style_section',
502
  [
503
  'label' => __('Trigger', 'premium-addons-for-elementor'),
508
  ]
509
  );
510
 
 
511
  $this->add_control('premium_modal_box_button_text_color',
512
  [
513
  'label' => __('Color', 'premium-addons-for-elementor'),
576
  ]
577
  );
578
 
 
579
  $this->add_group_control(
580
  Group_Control_Typography::get_type(),
581
  [
591
 
592
  $this->start_controls_tabs('premium_modal_box_button_style');
593
 
 
594
  $this->start_controls_tab('premium_modal_box_tab_selector_normal',
595
  [
596
  'label' => __( 'Normal', 'premium-addons-for-elementor' ),
600
  ]
601
  );
602
 
 
603
  $this->add_control('premium_modal_box_selector_background',
604
  [
605
  'label' => __('Background Color', 'premium-addons-for-elementor'),
617
  ]
618
  );
619
 
 
620
  $this->add_group_control(
621
  Group_Control_Border::get_type(),
622
  [
628
  ]
629
  );
630
 
 
631
  $this->add_control('premium_modal_box_selector_border_radius',
632
  [
633
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
646
  ]
647
  );
648
 
 
649
  $this->add_responsive_control('premium_modal_box_selector_padding',
650
  [
651
  'label' => __('Padding', 'premium-addons-for-elementor'),
667
  ]
668
  );
669
 
 
670
  $this->add_group_control(
671
  Group_Control_Box_Shadow::get_type(),
672
  [
679
  ]
680
  );
681
 
 
682
  $this->add_group_control(
683
  Group_Control_Text_Shadow::get_type(),
684
  [
701
  ]
702
  );
703
 
 
704
  $this->add_control('premium_modal_box_selector_hover_background',
705
  [
706
  'label' => __('Background Color', 'premium-addons-for-elementor'),
714
  ]
715
  );
716
 
 
717
  $this->add_group_control(
718
  Group_Control_Border::get_type(),
719
  [
726
  ]
727
  );
728
 
 
729
  $this->add_control('premium_modal_box_selector_border_radius_hover',
730
  [
731
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
740
  ]
741
  );
742
 
 
743
  $this->add_group_control(
744
  Group_Control_Box_Shadow::get_type(),
745
  [
758
 
759
  $this->end_controls_section();
760
 
 
761
  $this->start_controls_section('premium_modal_box_header_settings',
762
  [
763
  'label' => __('Heading', 'premium-addons-for-elementor'),
768
  ]
769
  );
770
 
 
771
  $this->add_control('premium_modal_box_header_text_color',
772
  [
773
  'label' => __('Color', 'premium-addons-for-elementor'),
778
  ]
779
  );
780
 
 
781
  $this->add_group_control(
782
  Group_Control_Typography::get_type(),
783
  [
788
  ]
789
  );
790
 
 
791
  $this->add_control('premium_modal_box_header_background',
792
  [
793
  'label' => __('Background Color', 'premium-addons-for-elementor'),
798
  ]
799
  );
800
 
 
801
  $this->add_group_control(
802
  Group_Control_Border::get_type(),
803
  [
806
  ]
807
  );
808
 
 
809
  $this->end_controls_section();
810
 
 
 
811
  $this->start_controls_section('premium_modal_box_upper_close_button_section',
812
  [
813
  'label' => __('Upper Close Button', 'premium-addons-for-elementor'),
819
  ]
820
  );
821
 
 
822
  $this->add_responsive_control('premium_modal_box_upper_close_button_size',
823
  [
824
  'label' => __('Size', 'premium-addons-for-elementor'),
834
 
835
  $this->start_controls_tabs('premium_modal_box_upper_close_button_style');
836
 
 
837
  $this->start_controls_tab('premium_modal_box_upper_close_button_normal',
838
  [
839
  'label' => __( 'Normal', 'premium-addons-for-elementor' ),
840
  ]
841
  );
842
 
 
843
  $this->add_control('premium_modal_box_upper_close_button_normal_color',
844
  [
845
  'label' => __('Color', 'premium-addons-for-elementor'),
850
  ]
851
  );
852
 
 
853
  $this->add_control('premium_modal_box_upper_close_button_background_color',
854
  [
855
  'label' => __('Background Color', 'premium-addons-for-elementor'),
860
  ]
861
  );
862
 
 
863
  $this->add_group_control(
864
  Group_Control_Border::get_type(),
865
  [
868
  ]
869
  );
870
 
 
871
  $this->add_control('premium_modal_upper_border_radius',
872
  [
873
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
888
  ]
889
  );
890
 
 
891
  $this->add_control('premium_modal_box_upper_close_button_hover_color',
892
  [
893
  'label' => __('Color', 'premium-addons-for-elementor'),
898
  ]
899
  );
900
 
 
901
  $this->add_control('premium_modal_box_upper_close_button_background_color_hover',
902
  [
903
  'label' => __('Background Color', 'premium-addons-for-elementor'),
908
  ]
909
  );
910
 
 
911
  $this->add_group_control(
912
  Group_Control_Border::get_type(),
913
  [
916
  ]
917
  );
918
 
 
919
  $this->add_control('premium_modal_upper_border_radius_hover',
920
  [
921
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
932
 
933
  $this->end_controls_tabs();
934
 
 
935
  $this->add_responsive_control('premium_modal_box_upper_close_button_padding',
936
  [
937
  'label' => __('Padding', 'premium-addons-for-elementor'),
943
  ]
944
  );
945
 
 
946
  $this->end_controls_section();
947
 
 
948
  $this->start_controls_section('premium_modal_box_lower_close_button_section',
949
  [
950
  'label' => __('Lower Close Button', 'premium-addons-for-elementor'),
955
  ]
956
  );
957
 
 
958
  $this->add_group_control(
959
  Group_Control_Typography::get_type(),
960
  [
965
  ]
966
  );
967
 
 
968
  $this->add_responsive_control('premium_modal_box_lower_close_button_width',
969
  [
970
  'label' => __('Width', 'premium-addons-for-elementor'),
989
 
990
  $this->start_controls_tabs('premium_modal_box_lower_close_button_style');
991
 
 
992
  $this->start_controls_tab('premium_modal_box_lower_close_button_normal',
993
  [
994
  'label' => __( 'Normal', 'premium-addons-for-elementor' ),
995
  ]
996
  );
997
 
 
998
  $this->add_control('premium_modal_box_lower_close_button_normal_color',
999
  [
1000
  'label' => __('Color', 'premium-addons-for-elementor'),
1009
  ]
1010
  );
1011
 
 
1012
  $this->add_control('premium_modal_box_lower_close_button_background_normal_color',
1013
  [
1014
  'label' => __('Background Color', 'premium-addons-for-elementor'),
1023
  ]
1024
  );
1025
 
 
1026
  $this->add_group_control(
1027
  Group_Control_Border::get_type(),
1028
  [
1031
  ]
1032
  );
1033
 
 
1034
  $this->add_control('premium_modal_box_lower_close_border_radius',
1035
  [
1036
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
1051
  ]
1052
  );
1053
 
 
1054
  $this->add_control('premium_modal_box_lower_close_button_hover_color',
1055
  [
1056
  'label' => __('Color', 'premium-addons-for-elementor'),
1065
  ]
1066
  );
1067
 
 
1068
  $this->add_control('premium_modal_box_lower_close_button_background_hover_color',
1069
  [
1070
  'label' => __('Background Color', 'premium-addons-for-elementor'),
1079
  ]
1080
  );
1081
 
 
1082
  $this->add_group_control(
1083
  Group_Control_Border::get_type(),
1084
  [
1087
  ]
1088
  );
1089
 
 
1090
  $this->add_control('premium_modal_box_lower_close_border_radius_hover',
1091
  [
1092
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
1103
 
1104
  $this->end_controls_tabs();
1105
 
 
1106
  $this->add_responsive_control('premium_modal_box_lower_close_button_padding',
1107
  [
1108
  'label' => __('Padding', 'premium-addons-for-elementor'),
1114
  ]
1115
  );
1116
 
 
1117
  $this->end_controls_section();
1118
 
1119
  $this->start_controls_section('premium_modal_box_style',
1123
  ]
1124
  );
1125
 
 
1126
  $this->add_control('premium_modal_box_modal_size',
1127
  [
1128
  'label' => __('Width', 'premium-addons-for-elementor'),
1156
  ]
1157
  );
1158
 
 
1159
  $this->add_group_control(
1160
  Group_Control_Background::get_type(),
1161
  [
1165
  ]
1166
  );
1167
 
 
1168
  $this->add_control('premium_modal_box_content_background',
1169
  [
1170
  'label' => __('Content Background Color', 'premium-addons-for-elementor'),
1175
  ]
1176
  );
1177
 
 
1178
  $this->add_control('premium_modal_box_footer_background',
1179
  [
1180
  'label' => __('Footer Background Color', 'premium-addons-for-elementor'),
1185
  ]
1186
  );
1187
 
 
1188
  $this->add_group_control(
1189
  Group_Control_Border::get_type(),
1190
  [
1193
  ]
1194
  );
1195
 
 
1196
  $this->add_control('premium_modal_box_border_radius',
1197
  [
1198
  'label' => __('Border Radius', 'premium-addons-for-elementor'),
1204
  ]
1205
  );
1206
 
 
1207
  $this->add_group_control(
1208
  Group_Control_Box_Shadow::get_type(),
1209
  [
1212
  ]
1213
  );
1214
 
 
1215
  $this->add_responsive_control('premium_modal_box_margin',
1216
  [
1217
  'label' => __('Margin', 'premium-addons-for-elementor'),
1237
  $this->end_controls_section();
1238
 
1239
  }
1240
+
1241
+
1242
+ protected function render_header_icon( $new, $migrate ) {
1243
+
1244
+ $settings = $this->get_settings_for_display();
1245
+ if( 'fonticon' === $settings['premium_modal_box_icon_selection'] ) {
1246
+ if ( $new || $migrate ) :
1247
+ Icons_Manager::render_icon( $settings['premium_modal_box_font_icon_updated'], [ 'aria-hidden' => 'true' ] );
1248
+ else: ?>
1249
+ <i <?php echo $this->get_render_attribute_string( 'title_icon' ); ?>></i>
1250
+ <?php endif;
1251
+ } elseif( 'image' === $settings['premium_modal_box_icon_selection'] ) {
1252
+ ?>
1253
+ <img <?php echo $this->get_render_attribute_string('title_icon'); ?>>
1254
+ <?php
1255
+ }
1256
+
1257
+ }
1258
 
1259
  protected function render() {
1260
 
1264
 
1265
  $button_icon = $settings['premium_modal_box_button_icon_selection'];
1266
 
1267
+ if ( ! empty ( $button_icon ) ) {
1268
+ $this->add_render_attribute( 'icon', 'class', $settings['premium_modal_box_button_icon_selection'] );
1269
+ $this->add_render_attribute( 'icon', 'aria-hidden', 'true' );
1270
+ }
1271
+
1272
+ $migrated = isset( $settings['__fa4_migrated']['premium_modal_box_button_icon_selection_updated'] );
1273
+ $is_new = empty( $settings['premium_modal_box_button_icon_selection'] ) && Icons_Manager::is_migration_allowed();
1274
+
1275
  $template = $settings['premium_modal_box_content_temp'];
1276
 
1277
  $modal_settings = [
1312
 
1313
  $this->add_render_attribute('text', 'data-target', '#premium-modal-' . $this->get_id() );
1314
 
1315
+ if( 'yes' === $settings['premium_modal_box_header_switcher'] ) {
1316
+ if ( 'fonticon' === $settings['premium_modal_box_icon_selection'] ) {
1317
+ if ( ! empty ( $settings['premium_modal_box_font_icon'] ) ) {
1318
+ $this->add_render_attribute('title_icon', 'class', $settings['premium_modal_box_font_icon'] );
1319
+ $this->add_render_attribute('title_icon', 'aria-hidden', 'true' );
1320
+ }
1321
+ $header_migrated = isset( $settings['__fa4_migrated']['premium_modal_box_font_icon_updated'] );
1322
+ $header_new = empty( $settings['premium_modal_box_font_icon'] ) && Icons_Manager::is_migration_allowed();
1323
+ } else {
1324
+ $this->add_render_attribute('title_icon', 'src', $settings['premium_modal_box_image_icon']['url'] );
1325
+ $alt = Control_Media::get_image_alt( $settings['premium_modal_box_image_icon'] );
1326
+ $this->add_render_attribute('title_icon', 'alt', $alt );
1327
+ }
1328
  }
1329
 
1330
  ?>
1334
  <?php
1335
  if ( $settings['premium_modal_box_display_on'] === 'button' ) : ?>
1336
  <button <?php echo $this->get_render_attribute_string('button'); ?>>
1337
+ <?php if( 'yes' === $settings['premium_modal_box_icon_switcher'] && $settings['premium_modal_box_icon_position'] === 'before' ) :
1338
+ if ( $is_new || $migrated ) :
1339
+ Icons_Manager::render_icon( $settings['premium_modal_box_button_icon_selection_updated'], [ 'aria-hidden' => 'true' ] );
1340
+ else: ?>
1341
+ <i <?php echo $this->get_render_attribute_string( 'icon' ); ?>></i>
1342
+ <?php endif;
1343
+ endif; ?>
1344
  <span><?php echo $settings['premium_modal_box_button_text']; ?></span>
1345
+ <?php if( 'yes' === $settings['premium_modal_box_icon_switcher'] && $settings['premium_modal_box_icon_position'] === 'after' ) :
1346
+ if ( $is_new || $migrated ) :
1347
+ Icons_Manager::render_icon( $settings['premium_modal_box_button_icon_selection_updated'], [ 'aria-hidden' => 'true' ] );
1348
+ else: ?>
1349
+ <i <?php echo $this->get_render_attribute_string( 'icon' ); ?>></i>
1350
+ <?php endif;
1351
+ endif; ?>
1352
  </button>
1353
  <?php elseif ( $settings['premium_modal_box_display_on'] === 'image' ) : ?>
1354
  <img <?php echo $this->get_render_attribute_string('image'); ?>>
1364
  <div class="premium-modal-box-modal-header">
1365
  <?php if ( ! empty( $settings['premium_modal_box_title'] ) ) : ?>
1366
  <h3 class="premium-modal-box-modal-title">
1367
+ <?php $this->render_header_icon( $header_new , $header_migrated );
 
 
 
 
1368
  echo $settings['premium_modal_box_title']; ?>
1369
  </h3>
1370
  <?php endif; ?>
widgets/premium-person.php CHANGED
@@ -596,11 +596,11 @@ class Premium_Person extends Widget_Base {
596
  // get our input from the widget settings.
597
  $settings = $this->get_settings_for_display();
598
 
599
- $this->add_inline_editing_attributes('premium_person_name');
600
 
601
- $this->add_inline_editing_attributes('premium_person_title');
602
 
603
- $this->add_inline_editing_attributes('premium_person_content','advanced');
604
 
605
  $name_heading = $settings['premium_person_name_heading'];
606
 
@@ -617,13 +617,15 @@ class Premium_Person extends Widget_Base {
617
  </div>
618
  <div class="premium-person-info">
619
  <div class="premium-person-info-container">
620
- <?php if( !empty( $settings['premium_person_name'] ) ) : ?><<?php echo $name_heading; ?> class="premium-person-name"><span <?php echo $this->get_render_attribute_string('premium_person_name'); ?>><?php echo $settings['premium_person_name']; ?></span></<?php echo $name_heading; ?>><?php endif; ?>
621
- <?php if( !empty( $settings['premium_person_title'] ) ) : ?><<?php echo $title_heading; ?> class="premium-person-title"><span <?php echo $this->get_render_attribute_string('premium_person_title'); ?>><?php echo $settings['premium_person_title']; ?></span></<?php echo $title_heading; ?>><?php endif; ?>
622
- <div class="premium-person-content">
623
- <div <?php echo $this->get_render_attribute_string('premium_person_content'); ?>>
624
- <?php echo $settings['premium_person_content']; ?>
 
 
625
  </div>
626
- </div>
627
  <ul class="premium-person-social-list">
628
  <?php if( !empty( $settings['premium_person_facebook'] ) ) : ?><li class="premium-person-list-item premium-person-facebook"><a href="<?php echo $settings['premium_person_facebook']; ?>" target="_blank"><i class="fa fa-facebook"></i></a></li><?php endif; ?>
629
  <?php if( !empty( $settings['premium_person_twitter'] ) ) : ?><li class="premium-person-list-item premium-person-twitter"><a href="<?php echo $settings['premium_person_twitter']; ?>" target="_blank"><i class="fa fa-twitter"></i></a></li><?php endif; ?>
@@ -648,11 +650,11 @@ class Premium_Person extends Widget_Base {
648
  ?>
649
  <#
650
 
651
- view.addInlineEditingAttributes('premium_person_name');
652
 
653
- view.addInlineEditingAttributes('premium_person_title');
654
 
655
- view.addInlineEditingAttributes('premium_person_content', 'advanced');
656
 
657
  var nameHeading = settings.premium_person_name_heading,
658
 
@@ -672,21 +674,23 @@ class Premium_Person extends Widget_Base {
672
  <div class="premium-person-info-container">
673
  <# if( '' != settings.premium_person_name ) { #>
674
  <{{{nameHeading}}} class="premium-person-name">
675
- <span {{{ view.getRenderAttributeString('premium_person_name') }}}>
676
  {{{ settings.premium_person_name }}}
677
  </span></{{{nameHeading}}}>
678
- <# } #>
679
- <# if( '' != settings.premium_person_title ) { #>
680
  <{{{titleHeading}}} class="premium-person-title">
681
- <span {{{ view.getRenderAttributeString('premium_person_title') }}}>
682
  {{{ settings.premium_person_title }}}
683
  </span></{{{titleHeading}}}>
684
- <# } #>
685
- <div class="premium-person-content">
686
- <div {{{ view.getRenderAttributeString('premium_person_content') }}}>
687
- {{{ settings.premium_person_content }}}
 
 
688
  </div>
689
- </div>
690
  <ul class="premium-person-social-list">
691
  <# if( '' != settings.premium_person_facebook ) { #>
692
  <li class="premium-person-list-item premium-person-facebook"><a href="{{ settings.premium_person_facebook }}" target="_blank"><i class="fa fa-facebook"></i></a></li>
596
  // get our input from the widget settings.
597
  $settings = $this->get_settings_for_display();
598
 
599
+ $this->add_inline_editing_attributes('name');
600
 
601
+ $this->add_inline_editing_attributes('title');
602
 
603
+ $this->add_inline_editing_attributes('description','advanced');
604
 
605
  $name_heading = $settings['premium_person_name_heading'];
606
 
617
  </div>
618
  <div class="premium-person-info">
619
  <div class="premium-person-info-container">
620
+ <?php if( ! empty( $settings['premium_person_name'] ) ) : ?><<?php echo $name_heading; ?> class="premium-person-name"><span <?php echo $this->get_render_attribute_string('name'); ?>><?php echo $settings['premium_person_name']; ?></span></<?php echo $name_heading; ?>><?php endif; ?>
621
+ <?php if( ! empty( $settings['premium_person_title'] ) ) : ?><<?php echo $title_heading; ?> class="premium-person-title"><span <?php echo $this->get_render_attribute_string('title'); ?>><?php echo $settings['premium_person_title']; ?></span></<?php echo $title_heading; ?>><?php endif; ?>
622
+ <?php if( ! empty( $settings['premium_person_content'] ) ) : ?>
623
+ <div class="premium-person-content">
624
+ <div <?php echo $this->get_render_attribute_string('content'); ?>>
625
+ <?php echo $settings['premium_person_content']; ?>
626
+ </div>
627
  </div>
628
+ <?php endif; ?>
629
  <ul class="premium-person-social-list">
630
  <?php if( !empty( $settings['premium_person_facebook'] ) ) : ?><li class="premium-person-list-item premium-person-facebook"><a href="<?php echo $settings['premium_person_facebook']; ?>" target="_blank"><i class="fa fa-facebook"></i></a></li><?php endif; ?>
631
  <?php if( !empty( $settings['premium_person_twitter'] ) ) : ?><li class="premium-person-list-item premium-person-twitter"><a href="<?php echo $settings['premium_person_twitter']; ?>" target="_blank"><i class="fa fa-twitter"></i></a></li><?php endif; ?>
650
  ?>
651
  <#
652
 
653
+ view.addInlineEditingAttributes('name');
654
 
655
+ view.addInlineEditingAttributes('title');
656
 
657
+ view.addInlineEditingAttributes('content', 'advanced');
658
 
659
  var nameHeading = settings.premium_person_name_heading,
660
 
674
  <div class="premium-person-info-container">
675
  <# if( '' != settings.premium_person_name ) { #>
676
  <{{{nameHeading}}} class="premium-person-name">
677
+ <span {{{ view.getRenderAttributeString('name') }}}>
678
  {{{ settings.premium_person_name }}}
679
  </span></{{{nameHeading}}}>
680
+ <# }
681
+ if( '' != settings.premium_person_title ) { #>
682
  <{{{titleHeading}}} class="premium-person-title">
683
+ <span {{{ view.getRenderAttributeString('title') }}}>
684
  {{{ settings.premium_person_title }}}
685
  </span></{{{titleHeading}}}>
686
+ <# }
687
+ if( '' != settings.premium_person_content ) { #>
688
+ <div class="premium-person-content">
689
+ <div {{{ view.getRenderAttributeString('content') }}}>
690
+ {{{ settings.premium_person_content }}}
691
+ </div>
692
  </div>
693
+ <# } #>
694
  <ul class="premium-person-social-list">
695
  <# if( '' != settings.premium_person_facebook ) { #>
696
  <li class="premium-person-list-item premium-person-facebook"><a href="{{ settings.premium_person_facebook }}" target="_blank"><i class="fa fa-facebook"></i></a></li>
widgets/premium-pricing-table.php CHANGED
@@ -5,6 +5,7 @@ namespace PremiumAddons\Widgets;
5
  use PremiumAddons\Helper_Functions;
6
  use PremiumAddons\Includes;
7
  use Elementor\Modules\DynamicTags\Module as TagsModule;
 
8
  use Elementor\Widget_Base;
9
  use Elementor\Controls_Manager;
10
  use Elementor\Repeater;
@@ -60,13 +61,17 @@ class Premium_Pricing_Table extends Widget_Base {
60
  ]
61
  );
62
 
63
- $this->add_control('premium_pricing_table_icon_selection',
64
- [
65
- 'label' => __('Select an Icon', 'premium-addons-for-elementor'),
66
- 'type' => Controls_Manager::ICON,
67
- 'default' => 'fa fa-check'
68
- ]
69
- );
 
 
 
 
70
 
71
  $this->end_controls_section();
72
 
@@ -200,35 +205,36 @@ class Premium_Pricing_Table extends Widget_Base {
200
  ]
201
  );
202
 
203
- $repeater->add_control('premium_pricing_list_item_icon',
204
  [
205
  'label' => __( 'Icon', 'premium-addons-for-elementor' ),
206
- 'type' => Controls_Manager::ICON,
 
207
  ]
208
  );
209
 
210
  $this->add_control('premium_fancy_text_list_items',
 
 
 
 
211
  [
212
- 'label' => __( 'Features', 'premium-addons-for-elementor' ),
213
- 'type' => Controls_Manager::REPEATER,
214
- 'default' => [
215
- [
216
- 'premium_pricing_list_item_icon' => 'fa fa-check',
217
- 'premium_pricing_list_item_text' => __( 'List Item #1', 'premium-addons-for-elementor' ),
218
- ],
219
- [
220
- 'premium_pricing_list_item_icon' => 'fa fa-check',
221
- 'premium_pricing_list_item_text' => __( 'List Item #2', 'premium-addons-for-elementor' ),
222
- ],
223
- [
224
- 'premium_pricing_list_item_icon' => 'fa fa-check',
225
- 'premium_pricing_list_item_text' => __( 'List Item #3', 'premium-addons-for-elementor' ),
226
- ],
227
- ],
228
- 'fields' => array_values( $repeater->get_controls() ),
229
- 'title_field' => '<i class="{{ premium_pricing_list_item_icon }}" aria-hidden="true"></i> {{{ premium_pricing_list_item_text }}}'
230
- ]
231
- );
232
 
233
  $this->add_responsive_control('premium_pricing_table_list_align',
234
  [
@@ -1869,61 +1875,89 @@ class Premium_Pricing_Table extends Widget_Base {
1869
  } elseif ($link_type == 'url') {
1870
  $link_url = $settings['premium_pricing_table_button_link'];
1871
  }
1872
- ?>
 
 
 
 
 
 
 
 
 
 
 
1873
 
1874
- <div class="premium-pricing-table-container">
1875
- <?php if($settings['premium_pricing_table_badge_switcher']) : ?>
1876
- <div class="premium-pricing-badge-container <?php echo esc_attr($badge_position); ?>">
1877
- <div class="corner"><span><?php echo $settings['premium_pricing_table_badge_text']; ?></span></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1878
  </div>
1879
- <?php endif; ?>
1880
- <?php if($settings['premium_pricing_table_icon_switcher'] == 'yes') : ?>
1881
- <div class="premium-pricing-icon-container"><i class="<?php echo esc_attr( $settings['premium_pricing_table_icon_selection'] ); ?>"></i></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1882
  <?php endif; ?>
1883
- <?php if($settings['premium_pricing_table_title_switcher'] == 'yes') : ?>
1884
- <<?php echo $title_tag;?> class="premium-pricing-table-title"><span <?php echo $this->get_render_attribute_string('title_text'); ?>><?php echo $settings['premium_pricing_table_title_text'];?></span></<?php echo $title_tag;?>><?php endif; ?>
1885
- <?php if($settings['premium_pricing_table_price_switcher'] == 'yes') : ?>
1886
- <div class="premium-pricing-price-container">
1887
- <strike class="premium-pricing-slashed-price-value">
1888
- <?php echo $settings['premium_pricing_table_slashed_price_value']; ?>
1889
- </strike>
1890
- <span class="premium-pricing-price-currency">
1891
- <?php echo $settings['premium_pricing_table_price_currency']; ?>
1892
- </span>
1893
- <span class="premium-pricing-price-value">
1894
- <?php echo $settings['premium_pricing_table_price_value']; ?>
1895
- </span>
1896
- <span class="premium-pricing-price-separator">
1897
- <?php echo $settings['premium_pricing_table_price_separator']; ?>
1898
- </span>
1899
- <span class="premium-pricing-price-duration">
1900
- <?php echo $settings['premium_pricing_table_price_duration']; ?>
1901
- </span>
1902
- </div>
1903
- <?php endif; ?>
1904
- <?php if($settings['premium_pricing_table_list_switcher'] == 'yes') : ?>
1905
- <div class="premium-pricing-list-container">
1906
- <ul class="premium-pricing-list">
1907
- <?php foreach( $settings['premium_fancy_text_list_items'] as $item ): echo '<li>' . '<i class="' . esc_attr( $item['premium_pricing_list_item_icon'] ) . '">' . '</i>' . '<span class="premium-pricing-list-span">' . esc_attr( $item['premium_pricing_list_item_text'] ) . '</span>' . '</li>'; ?>
1908
- <?php endforeach; ?>
1909
- </ul>
1910
- </div>
1911
- <?php endif; ?>
1912
- <?php if($settings['premium_pricing_table_description_switcher'] == 'yes') : ?>
1913
- <div class="premium-pricing-description-container">
1914
- <div <?php echo $this->get_render_attribute_string('description_text'); ?>>
1915
- <?php echo $settings['premium_pricing_table_description_text']; ?>
1916
  </div>
 
 
 
 
 
 
 
 
1917
  </div>
1918
- <?php endif; ?>
1919
- <?php if($settings['premium_pricing_table_button_switcher'] == 'yes') : ?>
1920
- <div class="premium-pricing-button-container">
1921
- <a class="premium-pricing-price-button" target="_<?php echo esc_attr( $settings['premium_pricing_table_button_link_target'] ); ?>" href="<?php echo esc_url( $link_url ); ?>">
1922
- <span <?php echo $this->get_render_attribute_string('button_text'); ?>><?php echo $settings['premium_pricing_table_button_text']; ?></span>
1923
- </a>
1924
- </div>
1925
- <?php endif; ?>
1926
- </div>
1927
 
1928
  <?php
1929
  }
@@ -1942,6 +1976,12 @@ class Premium_Pricing_Table extends Widget_Base {
1942
  linkType = settings.premium_pricing_table_button_url_type,
1943
  badgePosition = 'premium-badge-' + settings.premium_pricing_table_badge_position,
1944
  linkURL = 'link' === linkType ? settings.premium_pricing_table_button_link_existing_content : settings.premium_pricing_table_button_link;
 
 
 
 
 
 
1945
 
1946
  #>
1947
 
@@ -1951,8 +1991,14 @@ class Premium_Pricing_Table extends Widget_Base {
1951
  <div class="corner"><span>{{{ settings.premium_pricing_table_badge_text }}}</span></div>
1952
  </div>
1953
  <# } #>
1954
- <# if('yes' === settings.premium_pricing_table_icon_switcher ) { #>
1955
- <div class="premium-pricing-icon-container"><i class="{{ settings.premium_pricing_table_icon_selection }}"></i></div>
 
 
 
 
 
 
1956
  <# } #>
1957
  <# if('yes' === settings.premium_pricing_table_title_switcher ) { #>
1958
  <{{{titleTag}}} class="premium-pricing-table-title"><span {{{ view.getRenderAttributeString('title_text') }}}>{{{ settings.premium_pricing_table_title_text }}}</span></{{{titleTag}}}>
@@ -1970,9 +2016,18 @@ class Premium_Pricing_Table extends Widget_Base {
1970
  <# if('yes' === settings.premium_pricing_table_list_switcher ) { #>
1971
  <div class="premium-pricing-list-container">
1972
  <ul class="premium-pricing-list">
1973
- <# _.each( settings.premium_fancy_text_list_items, function( item ) { #>
 
 
 
 
 
1974
  <li>
1975
- <i class="{{ item.premium_pricing_list_item_icon }}"></i>
 
 
 
 
1976
  <span class="premium-pricing-list-span">{{{ item.premium_pricing_list_item_text }}}</span>
1977
  </li>
1978
  <# } ); #>
5
  use PremiumAddons\Helper_Functions;
6
  use PremiumAddons\Includes;
7
  use Elementor\Modules\DynamicTags\Module as TagsModule;
8
+ use Elementor\Icons_Manager;
9
  use Elementor\Widget_Base;
10
  use Elementor\Controls_Manager;
11
  use Elementor\Repeater;
61
  ]
62
  );
63
 
64
+ $this->add_control('premium_pricing_table_icon_selection_updated',
65
+ [
66
+ 'label' => __('Select an Icon', 'premium-addons-for-elementor'),
67
+ 'type' => Controls_Manager::ICONS,
68
+ 'fa4compatibility' => 'premium_pricing_table_icon_selection',
69
+ 'default' => [
70
+ 'value' => 'fas fa-bars',
71
+ 'library' => 'fa-solid',
72
+ ],
73
+ ]
74
+ );
75
 
76
  $this->end_controls_section();
77
 
205
  ]
206
  );
207
 
208
+ $repeater->add_control('premium_pricing_list_item_icon_updated',
209
  [
210
  'label' => __( 'Icon', 'premium-addons-for-elementor' ),
211
+ 'type' => Controls_Manager::ICONS,
212
+ 'fa4compatibility' => 'premium_pricing_list_item_icon',
213
  ]
214
  );
215
 
216
  $this->add_control('premium_fancy_text_list_items',
217
+ [
218
+ 'label' => __( 'Features', 'premium-addons-for-elementor' ),
219
+ 'type' => Controls_Manager::REPEATER,
220
+ 'default' => [
221
  [
222
+ 'premium_pricing_list_item_icon' => 'fa fa-check',
223
+ 'premium_pricing_list_item_text' => __( 'List Item #1', 'premium-addons-for-elementor' ),
224
+ ],
225
+ [
226
+ 'premium_pricing_list_item_icon' => 'fa fa-check',
227
+ 'premium_pricing_list_item_text' => __( 'List Item #2', 'premium-addons-for-elementor' ),
228
+ ],
229
+ [
230
+ 'premium_pricing_list_item_icon' => 'fa fa-check',
231
+ 'premium_pricing_list_item_text' => __( 'List Item #3', 'premium-addons-for-elementor' ),
232
+ ],
233
+ ],
234
+ 'fields' => array_values( $repeater->get_controls() ),
235
+ 'title_field' => '<i class="{{ premium_pricing_list_item_icon }}" aria-hidden="true"></i> {{{ premium_pricing_list_item_text }}}'
236
+ ]
237
+ );
 
 
 
 
238
 
239
  $this->add_responsive_control('premium_pricing_table_list_align',
240
  [
1875
  } elseif ($link_type == 'url') {
1876
  $link_url = $settings['premium_pricing_table_button_link'];
1877
  }
1878
+
1879
+ if( 'yes' === $settings['premium_pricing_table_icon_switcher'] ) {
1880
+ if ( ! empty ( $settings['premium_pricing_table_icon_selection'] ) ) {
1881
+ $this->add_render_attribute( 'icon', 'class', $settings['premium_pricing_table_icon_selection'] );
1882
+ $this->add_render_attribute( 'icon', 'aria-hidden', 'true' );
1883
+ }
1884
+
1885
+ $migrated = isset( $settings['__fa4_migrated']['premium_pricing_table_icon_selection_updated'] );
1886
+ $is_new = empty( $settings['premium_pricing_table_icon_selection'] ) && Icons_Manager::is_migration_allowed();
1887
+ }
1888
+
1889
+ ?>
1890
 
1891
+ <div class="premium-pricing-table-container">
1892
+ <?php if($settings['premium_pricing_table_badge_switcher']) : ?>
1893
+ <div class="premium-pricing-badge-container <?php echo esc_attr($badge_position); ?>">
1894
+ <div class="corner"><span><?php echo $settings['premium_pricing_table_badge_text']; ?></span></div>
1895
+ </div>
1896
+ <?php endif;
1897
+ if( $settings['premium_pricing_table_icon_switcher'] == 'yes' ) : ?>
1898
+ <div class="premium-pricing-icon-container">
1899
+ <?php if ( $is_new || $migrated ) :
1900
+ Icons_Manager::render_icon( $settings['premium_pricing_table_icon_selection_updated'], [ 'aria-hidden' => 'true' ] );
1901
+ else: ?>
1902
+ <i <?php echo $this->get_render_attribute_string( 'icon' ); ?>></i>
1903
+ <?php endif; ?>
1904
+ </div>
1905
+ <?php endif;
1906
+ if( $settings['premium_pricing_table_title_switcher'] == 'yes') : ?>
1907
+ <<?php echo $title_tag;?> class="premium-pricing-table-title"><span <?php echo $this->get_render_attribute_string('title_text'); ?>><?php echo $settings['premium_pricing_table_title_text'];?></span></<?php echo $title_tag;?>><?php endif; ?>
1908
+ <?php if($settings['premium_pricing_table_price_switcher'] == 'yes') : ?>
1909
+ <div class="premium-pricing-price-container">
1910
+ <strike class="premium-pricing-slashed-price-value">
1911
+ <?php echo $settings['premium_pricing_table_slashed_price_value']; ?>
1912
+ </strike>
1913
+ <span class="premium-pricing-price-currency">
1914
+ <?php echo $settings['premium_pricing_table_price_currency']; ?>
1915
+ </span>
1916
+ <span class="premium-pricing-price-value">
1917
+ <?php echo $settings['premium_pricing_table_price_value']; ?>
1918
+ </span>
1919
+ <span class="premium-pricing-price-separator">
1920
+ <?php echo $settings['premium_pricing_table_price_separator']; ?>
1921
+ </span>
1922
+ <span class="premium-pricing-price-duration">
1923
+ <?php echo $settings['premium_pricing_table_price_duration']; ?>
1924
+ </span>
1925
  </div>
1926
+ <?php endif;
1927
+ if( 'yes' === $settings['premium_pricing_table_list_switcher'] ) : ?>
1928
+ <div class="premium-pricing-list-container">
1929
+ <ul class="premium-pricing-list">
1930
+ <?php foreach( $settings['premium_fancy_text_list_items'] as $item ):
1931
+ $icon_migrated = isset( $item['__fa4_migrated']['premium_pricing_list_item_icon_updated'] );
1932
+ $icon_new = empty( $item['premium_pricing_list_item_icon'] ) && Icons_Manager::is_migration_allowed();
1933
+ ?>
1934
+ <li>
1935
+ <?php if ( $icon_new || $icon_migrated ) :
1936
+ Icons_Manager::render_icon( $item['premium_pricing_list_item_icon_updated'], [ 'aria-hidden' => 'true' ] );
1937
+ else: ?>
1938
+ <i class="<?php echo $item['premium_pricing_list_item_icon']; ?>"></i>
1939
+ <?php endif; ?>
1940
+ <span class="premium-pricing-list-span"><?php echo esc_html( $item['premium_pricing_list_item_text'] ); ?></span>
1941
+ </li>
1942
+ <?php endforeach; ?>
1943
+ </ul>
1944
+ </div>
1945
  <?php endif; ?>
1946
+ <?php if($settings['premium_pricing_table_description_switcher'] == 'yes') : ?>
1947
+ <div class="premium-pricing-description-container">
1948
+ <div <?php echo $this->get_render_attribute_string('description_text'); ?>>
1949
+ <?php echo $settings['premium_pricing_table_description_text']; ?>
1950
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1951
  </div>
1952
+ <?php endif; ?>
1953
+ <?php if($settings['premium_pricing_table_button_switcher'] == 'yes') : ?>
1954
+ <div class="premium-pricing-button-container">
1955
+ <a class="premium-pricing-price-button" target="_<?php echo esc_attr( $settings['premium_pricing_table_button_link_target'] ); ?>" href="<?php echo esc_url( $link_url ); ?>">
1956
+ <span <?php echo $this->get_render_attribute_string('button_text'); ?>><?php echo $settings['premium_pricing_table_button_text']; ?></span>
1957
+ </a>
1958
+ </div>
1959
+ <?php endif; ?>
1960
  </div>
 
 
 
 
 
 
 
 
 
1961
 
1962
  <?php
1963
  }
1976
  linkType = settings.premium_pricing_table_button_url_type,
1977
  badgePosition = 'premium-badge-' + settings.premium_pricing_table_badge_position,
1978
  linkURL = 'link' === linkType ? settings.premium_pricing_table_button_link_existing_content : settings.premium_pricing_table_button_link;
1979
+
1980
+ if( 'yes' === settings.premium_pricing_table_icon_switcher ) {
1981
+ var iconHTML = elementor.helpers.renderIcon( view, settings.premium_pricing_table_icon_selection_updated, { 'aria-hidden': true }, 'i' , 'object' ),
1982
+ migrated = elementor.helpers.isIconMigrated( settings, 'premium_pricing_table_icon_selection_updated' );
1983
+ }
1984
+
1985
 
1986
  #>
1987
 
1991
  <div class="corner"><span>{{{ settings.premium_pricing_table_badge_text }}}</span></div>
1992
  </div>
1993
  <# } #>
1994
+ <# if( 'yes' === settings.premium_pricing_table_icon_switcher ) { #>
1995
+ <div class="premium-pricing-icon-container">
1996
+ <# if ( iconHTML && iconHTML.rendered && ( ! settings.premium_pricing_table_icon_selection || migrated ) ) { #>
1997
+ {{{ iconHTML.value }}}
1998
+ <# } else { #>
1999
+ <i class="{{ settings.premium_pricing_table_icon_selection }}" aria-hidden="true"></i>
2000
+ <# } #>
2001
+ </div>
2002
  <# } #>
2003
  <# if('yes' === settings.premium_pricing_table_title_switcher ) { #>
2004
  <{{{titleTag}}} class="premium-pricing-table-title"><span {{{ view.getRenderAttributeString('title_text') }}}>{{{ settings.premium_pricing_table_title_text }}}</span></{{{titleTag}}}>
2016
  <# if('yes' === settings.premium_pricing_table_list_switcher ) { #>
2017
  <div class="premium-pricing-list-container">
2018
  <ul class="premium-pricing-list">
2019
+ <# _.each( settings.premium_fancy_text_list_items, function( item ) {
2020
+
2021
+ var listIconHTML = elementor.helpers.renderIcon( view, item.premium_pricing_list_item_icon_updated, { 'aria-hidden': true }, 'i' , 'object' ),
2022
+ listIconMigrated = elementor.helpers.isIconMigrated( item, 'premium_pricing_list_item_icon_updated' );
2023
+
2024
+ #>
2025
  <li>
2026
+ <# if ( listIconHTML && listIconHTML.rendered && ( ! item.premium_pricing_list_item_icon || listIconMigrated ) ) { #>
2027
+ {{{ listIconHTML.value }}}
2028
+ <# } else { #>
2029
+ <i class="{{ item.premium_pricing_list_item_icon }}" aria-hidden="true"></i>
2030
+ <# } #>
2031
  <span class="premium-pricing-list-span">{{{ item.premium_pricing_list_item_text }}}</span>
2032
  </li>
2033
  <# } ); #>
widgets/premium-title.php CHANGED
@@ -4,6 +4,7 @@ namespace PremiumAddons\Widgets;
4
 
5
  use PremiumAddons\Helper_Functions;
6
  use Elementor\Widget_Base;
 
7
  use Elementor\Controls_Manager;
8
  use Elementor\Scheme_Color;
9
  use Elementor\Scheme_Typography;
@@ -79,7 +80,6 @@ class Premium_Title extends Widget_Base {
79
  ]
80
  );
81
 
82
- /*Icon Switcher*/
83
  $this->add_control('premium_title_icon_switcher',
84
  [
85
  'label' => __('Icon', 'premium-addons-for-elementor'),
@@ -87,11 +87,15 @@ class Premium_Title extends Widget_Base {
87
  ]
88
  );
89
 
90
- /*Icon*/
91
- $this->add_control('premium_title_icon',
92
  [
93
  'label' => __('Font Awesome Icon', 'premium-addons-for-elementor'),
94
- 'type' => Controls_Manager::ICON,
 
 
 
 
 
95
  'label_block' => true,
96
  'condition' => [
97
  'premium_title_icon_switcher' => 'yes',
@@ -99,7 +103,6 @@ class Premium_Title extends Widget_Base {
99
  ]
100
  );
101
 
102
- /*Title HTML TAG*/
103
  $this->add_control('premium_title_tag',
104
  [
105
  'label' => __('HTML Tag', 'premium-addons-for-elementor'),
@@ -166,8 +169,7 @@ class Premium_Title extends Widget_Base {
166
  ]
167
  );
168
 
169
- /*Stripe Height*/
170
- $this->add_control('premium_title_style7_strip_height',
171
  [
172
  'label' => __('Stripe Height (PX)', 'premium-addons-for-elementor'),
173
  'type' => Controls_Manager::SLIDER,
@@ -186,8 +188,7 @@ class Premium_Title extends Widget_Base {
186
  ]
187
  );
188
 
189
- /*Stripe Top Spacing*/
190
- $this->add_control('premium_title_style7_strip_top_spacing',
191
  [
192
  'label' => __('Stripe Top Spacing (PX)', 'premium-addons-for-elementor'),
193
  'type' => Controls_Manager::SLIDER,
@@ -202,8 +203,7 @@ class Premium_Title extends Widget_Base {
202
  ]
203
  );
204
 
205
- /*Stripe Bottom Spacing*/
206
- $this->add_control('premium_title_style7_strip_bottom_spacing',
207
  [
208
  'label' => __('Stripe Bottom Spacing (PX)', 'premium-addons-for-elementor'),
209
  'type' => Controls_Manager::SLIDER,
@@ -572,6 +572,16 @@ class Premium_Title extends Widget_Base {
572
  $this->add_render_attribute( 'container', 'class', [ 'premium-title-container', $selected_style ] );
573
 
574
  $this->add_render_attribute( 'title', 'class', [ 'premium-title-header', 'premium-title-' . $selected_style ] );
 
 
 
 
 
 
 
 
 
 
575
  ?>
576
 
577
  <div <?php echo $this->get_render_attribute_string('container'); ?>>
@@ -581,9 +591,13 @@ class Premium_Title extends Widget_Base {
581
  <span class="premium-title-style7-stripe"></span>
582
  </span>
583
  <?php endif; ?>
584
- <?php if( ! empty( $settings['premium_title_icon'] ) ) : ?>
585
- <i class="premium-title-icon <?php echo $settings['premium_title_icon'];?>"></i>
586
- <?php endif; ?>
 
 
 
 
587
  <span <?php echo $this->get_render_attribute_string('premium_title_text'); ?>>
588
  <?php echo esc_html( $settings['premium_title_text'] ); ?>
589
  </span>
@@ -613,7 +627,12 @@ class Premium_Title extends Widget_Base {
613
 
614
  view.addRenderAttribute( 'premium_title', 'class', [ 'premium-title-header', 'premium-title-' + selectedStyle ] );
615
 
616
- view.addRenderAttribute( 'premium_title_icon', 'class', [ 'premium-title-icon', titleIcon ] );
 
 
 
 
 
617
 
618
  #>
619
  <div {{{ view.getRenderAttributeString('premium_title_container') }}}>
@@ -623,9 +642,13 @@ class Premium_Title extends Widget_Base {
623
  <span class="premium-title-style7-stripe"></span>
624
  </span>
625
  <# }
626
- if( '' != settings.premium_title_icon && 'yes' == settings.premium_title_icon_switcher ) { #>
627
- <i {{{ view.getRenderAttributeString('premium_title_icon') }}}></i>
628
- <# } #>
 
 
 
 
629
  <span {{{ view.getRenderAttributeString('premium_title_text') }}}>{{{ titleText }}}</span>
630
  </{{{titleTag}}}>
631
  </div>
4
 
5
  use PremiumAddons\Helper_Functions;
6
  use Elementor\Widget_Base;
7
+ use Elementor\Icons_Manager;
8
  use Elementor\Controls_Manager;
9
  use Elementor\Scheme_Color;
10
  use Elementor\Scheme_Typography;
80
  ]
81
  );
82
 
 
83
  $this->add_control('premium_title_icon_switcher',
84
  [
85
  'label' => __('Icon', 'premium-addons-for-elementor'),
87
  ]
88
  );
89
 
90
+ $this->add_control('premium_title_icon_updated',
 
91
  [
92
  'label' => __('Font Awesome Icon', 'premium-addons-for-elementor'),
93
+ 'type' => Controls_Manager::ICONS,
94
+ 'fa4compatibility' => 'premium_title_icon',
95
+ 'default' => [
96
+ 'value' => 'fas fa-bars',
97
+ 'library' => 'fa-solid',
98
+ ],
99
  'label_block' => true,
100
  'condition' => [
101
  'premium_title_icon_switcher' => 'yes',
103
  ]
104
  );
105
 
 
106
  $this->add_control('premium_title_tag',
107
  [
108
  'label' => __('HTML Tag', 'premium-addons-for-elementor'),
169
  ]
170
  );
171
 
172
+ $this->add_responsive_control('premium_title_style7_strip_height',
 
173
  [
174
  'label' => __('Stripe Height (PX)', 'premium-addons-for-elementor'),
175
  'type' => Controls_Manager::SLIDER,
188
  ]
189
  );
190
 
191
+ $this->add_responsive_control('premium_title_style7_strip_top_spacing',
 
192
  [
193
  'label' => __('Stripe Top Spacing (PX)', 'premium-addons-for-elementor'),
194
  'type' => Controls_Manager::SLIDER,
203
  ]
204
  );
205
 
206
+ $this->add_responsive_control('premium_title_style7_strip_bottom_spacing',
 
207
  [
208
  'label' => __('Stripe Bottom Spacing (PX)', 'premium-addons-for-elementor'),
209
  'type' => Controls_Manager::SLIDER,
572
  $this->add_render_attribute( 'container', 'class', [ 'premium-title-container', $selected_style ] );
573
 
574
  $this->add_render_attribute( 'title', 'class', [ 'premium-title-header', 'premium-title-' . $selected_style ] );
575
+
576
+ if( 'yes' === $settings['premium_title_icon_switcher'] ) {
577
+ if ( ! empty ( $settings['premium_title_icon'] ) ) {
578
+ $this->add_render_attribute( 'icon', 'class', $settings['premium_title_icon'] );
579
+ $this->add_render_attribute( 'icon', 'aria-hidden', 'true' );
580
+ }
581
+
582
+ $migrated = isset( $settings['__fa4_migrated']['premium_title_icon_updated'] );
583
+ $is_new = empty( $settings['premium_title_icon'] ) && Icons_Manager::is_migration_allowed();
584
+ }
585
  ?>
586
 
587
  <div <?php echo $this->get_render_attribute_string('container'); ?>>
591
  <span class="premium-title-style7-stripe"></span>
592
  </span>
593
  <?php endif; ?>
594
+ <?php if( 'yes' === $settings['premium_title_icon_switcher'] ) :
595
+ if ( $is_new || $migrated ) :
596
+ Icons_Manager::render_icon( $settings['premium_title_icon_updated'], [ 'class' => 'premium-title-icon', 'aria-hidden' => 'true' ] );
597
+ else: ?>
598
+ <i <?php echo $this->get_render_attribute_string( 'icon' ); ?>></i>
599
+ <?php endif;
600
+ endif; ?>
601
  <span <?php echo $this->get_render_attribute_string('premium_title_text'); ?>>
602
  <?php echo esc_html( $settings['premium_title_text'] ); ?>
603
  </span>
627
 
628
  view.addRenderAttribute( 'premium_title', 'class', [ 'premium-title-header', 'premium-title-' + selectedStyle ] );
629
 
630
+ view.addRenderAttribute( 'icon', 'class', [ 'premium-title-icon', titleIcon ] );
631
+
632
+ if( 'yes' === settings.premium_title_icon_switcher ) {
633
+ var iconHTML = elementor.helpers.renderIcon( view, settings.premium_title_icon_updated, { 'class': 'premium-title-icon', 'aria-hidden': true }, 'i' , 'object' ),
634
+ migrated = elementor.helpers.isIconMigrated( settings, 'premium_title_icon_updated' );
635
+ }
636
 
637
  #>
638
  <div {{{ view.getRenderAttributeString('premium_title_container') }}}>
642
  <span class="premium-title-style7-stripe"></span>
643
  </span>
644
  <# }
645
+ if( 'yes' === settings.premium_title_icon_switcher ) {
646
+ if ( iconHTML && iconHTML.rendered && ( ! settings.premium_title_icon || migrated ) ) { #>
647
+ {{{ iconHTML.value }}}
648
+ <# } else { #>
649
+ <i {{{ view.getRenderAttributeString( 'icon' ) }}}></i>
650
+ <# }
651
+ } #>
652
  <span {{{ view.getRenderAttributeString('premium_title_text') }}}>{{{ titleText }}}</span>
653
  </{{{titleTag}}}>
654
  </div>
widgets/premium-vscroll.php CHANGED
@@ -329,6 +329,16 @@ class Premium_Vscroll extends Widget_Base {
329
  ]
330
  );
331
 
 
 
 
 
 
 
 
 
 
 
332
  $this->end_controls_section();
333
 
334
  $this->start_controls_section('navigation_style',
@@ -786,6 +796,7 @@ class Premium_Vscroll extends Widget_Base {
786
  'dotsVPos' => $settings['navigation_dots_v_pos'],
787
  'fullSection' => 'yes' == $settings['full_section'] ? true : false,
788
  'fullTouch' => 'yes' == $settings['full_section_touch'] ? true : false,
 
789
  'addToHistory' => 'yes' == $settings['save_state'] ? true : false
790
  ];
791
 
329
  ]
330
  );
331
 
332
+ $this->add_control('overflow_touch',
333
+ [
334
+ 'label' => __('Show overflow content', 'premium-addons-for-elementor'),
335
+ 'type' => Controls_Manager::SWITCHER,
336
+ 'condition' => [
337
+ 'full_section_touch' => 'yes'
338
+ ]
339
+ ]
340
+ );
341
+
342
  $this->end_controls_section();
343
 
344
  $this->start_controls_section('navigation_style',
796
  'dotsVPos' => $settings['navigation_dots_v_pos'],
797
  'fullSection' => 'yes' == $settings['full_section'] ? true : false,
798
  'fullTouch' => 'yes' == $settings['full_section_touch'] ? true : false,
799
+ 'showOverflow' => 'yes' == $settings['overflow_touch'] ? true : false,
800
  'addToHistory' => 'yes' == $settings['save_state'] ? true : false
801
  ];
802