Premium Addons for Elementor - Version 2.5.6

Version Description

  • Tweak: Added marker clustering and latitude/longitude finder options to Premium Maps widget.
  • Tweak: Added button option to Premium Banner widget.
  • Fixed: 'Undefined index: premium_dual_header_second_header_tag' in Premium Dual Heading widget.
Download this release

Release Info

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

Code changes from version 2.5.5 to 2.5.6

admin/settings/version-control.php CHANGED
@@ -80,7 +80,7 @@ class PA_Version_Control {
80
  <tr class="pa-roll-row">
81
  <th>Rollback Version</th>
82
  <td>
83
- <div><?php echo sprintf( '<a target="_blank" href="%s" class="button pa-btn pa-rollback-button elementor-button-spinner">Reinstall Version 2.5.4</a>', wp_nonce_url( admin_url( 'admin-post.php?action=premium_addons_rollback' ), 'premium_addons_rollback' ) ); ?> </div>
84
  <p class="pa-roll-desc"><span>Warning: Please backup your database before making the rollback.</span></p>
85
  </td>
86
  </tr>
80
  <tr class="pa-roll-row">
81
  <th>Rollback Version</th>
82
  <td>
83
+ <div><?php echo sprintf( '<a target="_blank" href="%s" class="button pa-btn pa-rollback-button elementor-button-spinner">Reinstall Version 2.5.5</a>', wp_nonce_url( admin_url( 'admin-post.php?action=premium_addons_rollback' ), 'premium_addons_rollback' ) ); ?> </div>
84
  <p class="pa-roll-desc"><span>Warning: Please backup your database before making the rollback.</span></p>
85
  </td>
86
  </tr>
assets/css/premium-addons.css CHANGED
@@ -28,6 +28,9 @@
28
  -moz-box-sizing: border-box;
29
  box-sizing: border-box;
30
  }
 
 
 
31
  .premium_addons-banner-ib,
32
  .wpb_column>.wpb_wrapper .premium_addons-banner-ib {
33
  margin-bottom: 0px
@@ -55,14 +58,14 @@
55
  box-sizing: border-box;
56
  }
57
  .premium_addons-banner-ib .premium_addons-banner-ib-desc,
58
- .premium_addons-banner-ib a {
59
  position: absolute;
60
  top: 0;
61
  left: 0;
62
  width: 100%;
63
  height: 100%;
64
  }
65
- .premium_addons-banner-ib a {
66
  z-index: 1000;
67
  text-indent: 200%;
68
  white-space: nowrap;
@@ -97,7 +100,8 @@
97
  text-align: left;
98
  }
99
  .premium_banner_animation1 .premium_addons-banner-ib-content,
100
- .premium_banner_animation1 .premium_addons-banner-ib-title {
 
101
  -webkit-transform: translate3d(0, 40px, 0);
102
  transform: translate3d(0, 40px, 0);
103
  -webkit-transition-delay: .05s;
@@ -111,7 +115,8 @@
111
  transition: transform .35s;
112
  transition: transform .35s, -webkit-transform .35s;
113
  }
114
- .premium_banner_animation1 .premium_addons-banner-ib-content {
 
115
  margin-top: 10px;
116
  opacity: 0;
117
  -webkit-transition: opacity .2s, -webkit-transform .35s;
@@ -120,7 +125,9 @@
120
  transition: opacity .2s, transform .35s, -webkit-transform .35s;
121
  }
122
  .premium_banner_animation1:hover .premium_addons-banner-ib-content,
123
- .premium_banner_animation1.active .premium_addons-banner-ib-content {
 
 
124
  opacity: 1;
125
  -webkit-transition-delay: .05s;
126
  transition-delay: .05s;
@@ -129,6 +136,8 @@
129
  }
130
  .premium_banner_animation1:hover .premium_addons-banner-ib-content,
131
  .premium_banner_animation1.active .premium_addons-banner-ib-content,
 
 
132
  .premium_banner_animation1:hover .premium_addons-banner-ib-title,
133
  .premium_banner_animation1.active .premium_addons-banner-ib-title,
134
  .premium_banner_animation1:hover img,
@@ -197,13 +206,15 @@
197
  transform: translate3d(0, -50%, 0);
198
  }
199
  .premium_banner_animation2 .premium_addons-banner-ib-content,
 
200
  .premium_banner_animation2 .premium_addons-banner-ib-desc::before {
201
  -webkit-transition: opacity .35s, -webkit-transform .35s;
202
  transition: opacity .35s, -webkit-transform .35s;
203
  transition: opacity .35s, transform .35s;
204
  transition: opacity .35s, transform .35s, -webkit-transform .35s;
205
  }
206
- .premium_banner_animation2 .premium_addons-banner-ib-content {
 
207
  position: absolute;
208
  bottom: 0;
209
  left: 0;
@@ -222,11 +233,18 @@
222
  }
223
  .premium_banner_animation2:hover .premium_addons-banner-ib-content,
224
  .premium_banner_animation2.active .premium_addons-banner-ib-content,
 
 
225
  .premium_banner_animation2:hover .premium_addons-banner-ib-desc::before,
226
  .premium_banner_animation2.active .premium_addons-banner-ib-desc::before {
227
  opacity: 1;
228
  -webkit-transform: translate3d(0, 0, 0);
229
- transform: translate3d(0, 0, 0);;
 
 
 
 
 
230
  }
231
  .premium_banner_animation3 .premium_addons-banner-ib-title {
232
  position: absolute;
@@ -308,7 +326,8 @@
308
  transition: transform .35s;
309
  transition: transform .35s, -webkit-transform .35s;
310
  }
311
- .premium_banner_animation4 .premium_addons-banner-ib-content {
 
312
  padding: 10px 30px;
313
  opacity: 0;
314
  overflow: hidden;
@@ -326,6 +345,7 @@
326
  transform: translate3d(-30px, 0, 0) scale(1.1);
327
  }
328
  .premium_banner_animation4 .premium_addons-banner-ib-content,
 
329
  .premium_banner_animation4 .premium_addons-banner-ib-desc::after,
330
  .premium_banner_animation4 .premium_addons-banner-ib-desc::before,
331
  .premium_banner_animation4 img {
@@ -350,6 +370,8 @@
350
  }
351
  .premium_banner_animation4:hover .premium_addons-banner-ib-content,
352
  .premium_banner_animation4.active .premium_addons-banner-ib-content,
 
 
353
  .premium_banner_animation4:hover .premium_addons-banner-ib-title,
354
  .premium_banner_animation4.active .premium_addons-banner-ib-title {
355
  opacity: 1;
@@ -388,7 +410,8 @@
388
  -webkit-transition: opacity .35s;
389
  transition: opacity .35s;
390
  }
391
- .premium_banner_animation5 .premium_addons-banner-ib-title {
 
392
  -webkit-transition: -webkit-transform .35s;
393
  transition: -webkit-transform .35s;
394
  transition: transform .35s;
@@ -404,15 +427,17 @@
404
  .premium_banner_animation5.active .premium_addons-banner-ib-content,
405
  .premium_banner_animation5:hover .premium_addons-banner-ib-content *,
406
  .premium_banner_animation5.active .premium_addons-banner-ib-content * {
407
- opacity: 1!important;
408
- z-index: 99!important;
409
- -webkit-backface-visibility: hidden!important;
410
- backface-visibility: hidden!important;
411
  }
412
  .premium_banner_animation5:hover .premium_addons-banner-ib-desc,
413
  .premium_banner_animation5.active .premium_addons-banner-ib-desc,
414
  .premium_banner_animation5:hover .premium_addons-banner-ib-title,
415
- .premium_banner_animation5.active .premium_addons-banner-ib-title {
 
 
416
  -webkit-transform: translateY(0);
417
  -ms-transform: translateY(0);
418
  transform: translateY(0);
@@ -491,6 +516,7 @@
491
  transform: translate3d(0, 100%, 0);
492
  }
493
  .premium_banner_animation6 .premium_addons-banner-ib-content,
 
494
  .premium_banner_animation6 .premium_addons-banner-ib-desc::before {
495
  opacity: 0;
496
  -webkit-transition: opacity .35s, -webkit-transform .35s;
@@ -501,6 +527,9 @@
501
  -ms-transform: scale(0);
502
  transform: scale(0);
503
  }
 
 
 
504
  .premium_banner_animation6:hover .premium_addons-banner-ib-title,
505
  .premium_banner_animation6.active .premium_addons-banner-ib-title {
506
  -webkit-transform: translate3d(0, 0, 0);
@@ -508,6 +537,8 @@
508
  }
509
  .premium_banner_animation6:hover .premium_addons-banner-ib-content,
510
  .premium_banner_animation6.active .premium_addons-banner-ib-content,
 
 
511
  .premium_banner_animation6:hover .premium_addons-banner-ib-desc::before,
512
  .premium_banner_animation6.active .premium_addons-banner-ib-desc::before {
513
  opacity: 1;
@@ -693,7 +724,8 @@
693
  -webkit-transform: translate3d(0, 0, 0);
694
  transform: translate3d(0, 0, 0);
695
  }
696
- .premium_banner_animation13 .premium_addons-banner-ib-content {
 
697
  padding: 15px 0;
698
  opacity: 0;
699
  -webkit-transition: opacity .35s, -webkit-transform .35s;
@@ -704,7 +736,9 @@
704
  transform: translate3d(100%, 0, 0);
705
  }
706
  .premium_banner_animation13:hover .premium_addons-banner-ib-content,
707
- .premium_banner_animation13.active .premium_addons-banner-ib-content {
 
 
708
  opacity: 1;
709
  -webkit-transform: translate3d(0, 0, 0);
710
  transform: translate3d(0, 0, 0);
28
  -moz-box-sizing: border-box;
29
  box-sizing: border-box;
30
  }
31
+ .premium_addons-banner-ib-desc .premium-banner-read-more {
32
+ z-index: 100;
33
+ }
34
  .premium_addons-banner-ib,
35
  .wpb_column>.wpb_wrapper .premium_addons-banner-ib {
36
  margin-bottom: 0px
58
  box-sizing: border-box;
59
  }
60
  .premium_addons-banner-ib .premium_addons-banner-ib-desc,
61
+ .premium_addons-banner-ib .premium_addons-banner-ib-link {
62
  position: absolute;
63
  top: 0;
64
  left: 0;
65
  width: 100%;
66
  height: 100%;
67
  }
68
+ .premium_addons-banner-ib .premium_addons-banner-ib-link {
69
  z-index: 1000;
70
  text-indent: 200%;
71
  white-space: nowrap;
100
  text-align: left;
101
  }
102
  .premium_banner_animation1 .premium_addons-banner-ib-content,
103
+ .premium_banner_animation1 .premium_addons-banner-ib-title,
104
+ .premium_banner_animation1 .premium-banner-read-more {
105
  -webkit-transform: translate3d(0, 40px, 0);
106
  transform: translate3d(0, 40px, 0);
107
  -webkit-transition-delay: .05s;
115
  transition: transform .35s;
116
  transition: transform .35s, -webkit-transform .35s;
117
  }
118
+ .premium_banner_animation1 .premium_addons-banner-ib-content,
119
+ .premium_banner_animation1 .premium-banner-read-more {
120
  margin-top: 10px;
121
  opacity: 0;
122
  -webkit-transition: opacity .2s, -webkit-transform .35s;
125
  transition: opacity .2s, transform .35s, -webkit-transform .35s;
126
  }
127
  .premium_banner_animation1:hover .premium_addons-banner-ib-content,
128
+ .premium_banner_animation1.active .premium_addons-banner-ib-content,
129
+ .premium_banner_animation1:hover .premium-banner-read-more,
130
+ .premium_banner_animation1.active .premium-banner-read-more {
131
  opacity: 1;
132
  -webkit-transition-delay: .05s;
133
  transition-delay: .05s;
136
  }
137
  .premium_banner_animation1:hover .premium_addons-banner-ib-content,
138
  .premium_banner_animation1.active .premium_addons-banner-ib-content,
139
+ .premium_banner_animation1:hover .premium-banner-read-more,
140
+ .premium_banner_animation1.active .premium-banner-read-more,
141
  .premium_banner_animation1:hover .premium_addons-banner-ib-title,
142
  .premium_banner_animation1.active .premium_addons-banner-ib-title,
143
  .premium_banner_animation1:hover img,
206
  transform: translate3d(0, -50%, 0);
207
  }
208
  .premium_banner_animation2 .premium_addons-banner-ib-content,
209
+ .premium_banner_animation2 .premium-banner-read-more,
210
  .premium_banner_animation2 .premium_addons-banner-ib-desc::before {
211
  -webkit-transition: opacity .35s, -webkit-transform .35s;
212
  transition: opacity .35s, -webkit-transform .35s;
213
  transition: opacity .35s, transform .35s;
214
  transition: opacity .35s, transform .35s, -webkit-transform .35s;
215
  }
216
+ .premium_banner_animation2 .premium_addons-banner-ib-content,
217
+ .premium_banner_animation2 .premium-banner-read-more {
218
  position: absolute;
219
  bottom: 0;
220
  left: 0;
233
  }
234
  .premium_banner_animation2:hover .premium_addons-banner-ib-content,
235
  .premium_banner_animation2.active .premium_addons-banner-ib-content,
236
+ .premium_banner_animation2:hover .premium-banner-read-more,
237
+ .premium_banner_animation2.active .premium-banner-read-more,
238
  .premium_banner_animation2:hover .premium_addons-banner-ib-desc::before,
239
  .premium_banner_animation2.active .premium_addons-banner-ib-desc::before {
240
  opacity: 1;
241
  -webkit-transform: translate3d(0, 0, 0);
242
+ transform: translate3d(0, 0, 0);
243
+ }
244
+ .premium_banner_animation2:hover .premium_addons-banner-ib-content,
245
+ .premium_banner_animation2.active .premium_addons-banner-ib-content {
246
+ -webkit-transform: translate3d(0, -30px, 0);
247
+ transform: translate3d(0, -30px, 0);
248
  }
249
  .premium_banner_animation3 .premium_addons-banner-ib-title {
250
  position: absolute;
326
  transition: transform .35s;
327
  transition: transform .35s, -webkit-transform .35s;
328
  }
329
+ .premium_banner_animation4 .premium_addons-banner-ib-content,
330
+ .premium_banner_animation4 .premium-banner-read-more {
331
  padding: 10px 30px;
332
  opacity: 0;
333
  overflow: hidden;
345
  transform: translate3d(-30px, 0, 0) scale(1.1);
346
  }
347
  .premium_banner_animation4 .premium_addons-banner-ib-content,
348
+ .premium_banner_animation4 .premium-banner-read-more,
349
  .premium_banner_animation4 .premium_addons-banner-ib-desc::after,
350
  .premium_banner_animation4 .premium_addons-banner-ib-desc::before,
351
  .premium_banner_animation4 img {
370
  }
371
  .premium_banner_animation4:hover .premium_addons-banner-ib-content,
372
  .premium_banner_animation4.active .premium_addons-banner-ib-content,
373
+ .premium_banner_animation4:hover .premium-banner-read-more,
374
+ .premium_banner_animation4.active .premium-banner-read-more,
375
  .premium_banner_animation4:hover .premium_addons-banner-ib-title,
376
  .premium_banner_animation4.active .premium_addons-banner-ib-title {
377
  opacity: 1;
410
  -webkit-transition: opacity .35s;
411
  transition: opacity .35s;
412
  }
413
+ .premium_banner_animation5 .premium_addons-banner-ib-title,
414
+ .premium_banner_animation5 .premium-banner-read-more {
415
  -webkit-transition: -webkit-transform .35s;
416
  transition: -webkit-transform .35s;
417
  transition: transform .35s;
427
  .premium_banner_animation5.active .premium_addons-banner-ib-content,
428
  .premium_banner_animation5:hover .premium_addons-banner-ib-content *,
429
  .premium_banner_animation5.active .premium_addons-banner-ib-content * {
430
+ opacity: 1 !important;
431
+ z-index: 99 !important;
432
+ -webkit-backface-visibility: hidden !important;
433
+ backface-visibility: hidden !important;
434
  }
435
  .premium_banner_animation5:hover .premium_addons-banner-ib-desc,
436
  .premium_banner_animation5.active .premium_addons-banner-ib-desc,
437
  .premium_banner_animation5:hover .premium_addons-banner-ib-title,
438
+ .premium_banner_animation5.active .premium_addons-banner-ib-title,
439
+ .premium_banner_animation5:hover .premium-banner-read-more,
440
+ .premium_banner_animation5.active .premium-banner-read-more {
441
  -webkit-transform: translateY(0);
442
  -ms-transform: translateY(0);
443
  transform: translateY(0);
516
  transform: translate3d(0, 100%, 0);
517
  }
518
  .premium_banner_animation6 .premium_addons-banner-ib-content,
519
+ .premium_banner_animation6 .premium-banner-read-more,
520
  .premium_banner_animation6 .premium_addons-banner-ib-desc::before {
521
  opacity: 0;
522
  -webkit-transition: opacity .35s, -webkit-transform .35s;
527
  -ms-transform: scale(0);
528
  transform: scale(0);
529
  }
530
+ .premium_banner_animation6 .premium-banner-read-more {
531
+ margin-top: 10px;
532
+ }
533
  .premium_banner_animation6:hover .premium_addons-banner-ib-title,
534
  .premium_banner_animation6.active .premium_addons-banner-ib-title {
535
  -webkit-transform: translate3d(0, 0, 0);
537
  }
538
  .premium_banner_animation6:hover .premium_addons-banner-ib-content,
539
  .premium_banner_animation6.active .premium_addons-banner-ib-content,
540
+ .premium_banner_animation6:hover .premium-banner-read-more,
541
+ .premium_banner_animation6.active .premium-banner-read-more,
542
  .premium_banner_animation6:hover .premium_addons-banner-ib-desc::before,
543
  .premium_banner_animation6.active .premium_addons-banner-ib-desc::before {
544
  opacity: 1;
724
  -webkit-transform: translate3d(0, 0, 0);
725
  transform: translate3d(0, 0, 0);
726
  }
727
+ .premium_banner_animation13 .premium_addons-banner-ib-content,
728
+ .premium_banner_animation13 .premium-banner-read-more {
729
  padding: 15px 0;
730
  opacity: 0;
731
  -webkit-transition: opacity .35s, -webkit-transform .35s;
736
  transform: translate3d(100%, 0, 0);
737
  }
738
  .premium_banner_animation13:hover .premium_addons-banner-ib-content,
739
+ .premium_banner_animation13.active .premium_addons-banner-ib-content,
740
+ .premium_banner_animation13:hover .premium-banner-read-more,
741
+ .premium_banner_animation13.active .premium-banner-read-more {
742
  opacity: 1;
743
  -webkit-transform: translate3d(0, 0, 0);
744
  transform: translate3d(0, 0, 0);
assets/js/premium-maps-address.js ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ function getAddress(ob) {
2
+ var address = $(ob).parent().find('input').attr('value');
3
+ if(address!=''){
4
+ geocoder = new google.maps.Geocoder();
5
+ geocoder.geocode({ 'address': address }, function(results, status) {
6
+ if (status == google.maps.GeocoderStatus.OK) {
7
+ var output = $(ob).parent().find('.premium-address-result'),
8
+ latiude = results[0].geometry.location.lat(),
9
+ longitude = results[0].geometry.location.lng();
10
+
11
+ $(output).html("Latitude: " + latiude + "<br>Longitude: " + longitude + "<br>(Copy and Paste your Latitude & Longitude value below)");
12
+ $(ob).parents('.elementor-control-premium_map_notice').nextAll('.elementor-control-premium_maps_center_lat').find("input").val(latiude).trigger("input");
13
+ $(ob).parents('.elementor-control-premium_map_notice').nextAll('.elementor-control-premium_maps_center_long').find("input").val(longitude).trigger("input");
14
+ } else {
15
+ alert("Geocode was not successful for the following reason: " + status);
16
+ }
17
+ });
18
+ }
19
+ }
20
+
21
+ function getPinAddress(ob) {
22
+ var address = $(ob).parent().find('input').attr('value');
23
+ if(address!=''){
24
+ geocoder = new google.maps.Geocoder();
25
+ geocoder.geocode({ 'address': address }, function(results, status) {
26
+ if (status == google.maps.GeocoderStatus.OK) {
27
+ var output = $(ob).parent().find('.premium-address-result'),
28
+ latiude = results[0].geometry.location.lat(),
29
+ longitude = results[0].geometry.location.lng();
30
+
31
+ $(output).html("Latitude: " + latiude + "<br>Longitude: " + longitude + "<br>(Copy and Paste your Latitude & Longitude value below)");
32
+ $(ob).parents('.elementor-control-premium_map_pin_notice').nextAll('.elementor-control-map_latitude').find("input").val(latiude).trigger("input");
33
+ $(ob).parents('.elementor-control-premium_map_pin_notice').nextAll('.elementor-control-map_longitude').find("input").val(longitude).trigger("input");
34
+ } else {
35
+ alert("Geocode was not successful for the following reason: " + status);
36
+ }
37
+ });
38
+ }
39
+ }
assets/js/premium-maps.js CHANGED
@@ -8,7 +8,11 @@ jQuery(window).on('elementor/frontend/init',function(){
8
 
9
  var mapStyle = mapElement.data('style');
10
 
 
 
11
  premiumMap = newMap(mapElement,mapSettings,mapStyle);
 
 
12
 
13
  function newMap(map,settings,mapStyle){
14
 
@@ -36,8 +40,6 @@ jQuery(window).on('elementor/frontend/init',function(){
36
 
37
  var markers = map.find(".premium-pin");
38
 
39
- // var labels = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
40
-
41
  var map = new google.maps.Map( map[0], args);
42
 
43
  map.markers = [];
@@ -45,13 +47,13 @@ jQuery(window).on('elementor/frontend/init',function(){
45
  markers.each(function(){
46
  add_marker( jQuery(this), map, autoOpen, hoverOpen, hoverClose );
47
  });
48
- // var markerCluster = new MarkerClusterer(map, markers,
49
- // {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
50
  return map;
51
  }
52
 
 
53
  function add_marker( pin, map ,autoOpen, hoverOpen, hoverClose ) {
54
-
55
  var latlng = new google.maps.LatLng( pin.attr('data-lat'), pin.attr('data-lng') );
56
 
57
  icon_img = pin.attr('data-icon');
@@ -68,10 +70,11 @@ jQuery(window).on('elementor/frontend/init',function(){
68
  icon : icon
69
  });
70
 
71
-
72
  // add to array
73
  map.markers.push( marker );
74
-
 
 
75
  // if marker contains HTML, add it to an infoWindow
76
 
77
  if( pin.find('.premium-maps-info-title').html() || pin.find('.premium-maps-info-desc').html() )
@@ -98,6 +101,14 @@ jQuery(window).on('elementor/frontend/init',function(){
98
  infowindow.open( map, marker );
99
  });
100
  }
 
101
  }
 
 
 
 
 
 
102
  });
 
103
  });
8
 
9
  var mapStyle = mapElement.data('style');
10
 
11
+ var premiumMapMarkers = [];
12
+
13
  premiumMap = newMap(mapElement,mapSettings,mapStyle);
14
+
15
+ var markerCluster = JSON.parse(mapSettings['cluster']);
16
 
17
  function newMap(map,settings,mapStyle){
18
 
40
 
41
  var markers = map.find(".premium-pin");
42
 
 
 
43
  var map = new google.maps.Map( map[0], args);
44
 
45
  map.markers = [];
47
  markers.each(function(){
48
  add_marker( jQuery(this), map, autoOpen, hoverOpen, hoverClose );
49
  });
50
+
 
51
  return map;
52
  }
53
 
54
+
55
  function add_marker( pin, map ,autoOpen, hoverOpen, hoverClose ) {
56
+
57
  var latlng = new google.maps.LatLng( pin.attr('data-lat'), pin.attr('data-lng') );
58
 
59
  icon_img = pin.attr('data-icon');
70
  icon : icon
71
  });
72
 
 
73
  // add to array
74
  map.markers.push( marker );
75
+
76
+ premiumMapMarkers.push( marker );
77
+
78
  // if marker contains HTML, add it to an infoWindow
79
 
80
  if( pin.find('.premium-maps-info-title').html() || pin.find('.premium-maps-info-desc').html() )
101
  infowindow.open( map, marker );
102
  });
103
  }
104
+
105
  }
106
+
107
+ if(markerCluster){
108
+ var markerCluster = new MarkerClusterer(premiumMap, premiumMapMarkers,
109
+ {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
110
+ }
111
+
112
  });
113
+
114
  });
premium-addons-for-elementor.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Premium Addons for Elementor
4
  Description: Premium Addons Plugin Includes 20 premium widgets for Elementor Page Builder.
5
  Plugin URI: https://premiumaddons.com
6
- Version: 2.5.5
7
  Author: Leap13
8
  Author URI: http://leap13.com/
9
  Text Domain: premium-addons-for-elementor
@@ -22,12 +22,12 @@ if (!function_exists('add_action')) {
22
  if (!defined('ABSPATH')) exit; // No access of directly access
23
 
24
 
25
- define('PREMIUM_ADDONS_VERSION', '2.5.5');
26
  define('PREMIUM_ADDONS_URL', plugins_url('/', __FILE__));
27
  define('PREMIUM_ADDONS_PATH', plugin_dir_path(__FILE__));
28
  define('PREMIUM_ADDONS_FILE', __FILE__);
29
  define('PREMIUM_ADDONS_BASENAME', plugin_basename(__FILE__));
30
- define('PREMIUM_ADDONS_STABLE_VERSION', '2.5.4');
31
 
32
  /**
33
  * Loading text domain, Including required files
@@ -113,6 +113,7 @@ class premium_Addon_Elementor {
113
  add_action('elementor/widgets/widgets_registered', array($this, 'premium_addons_widget_register'));
114
  add_action('elementor/frontend/after_register_scripts', array($this, 'premium_addons_register_scripts'));
115
  add_action('elementor/frontend/after_register_styles', array($this, 'premium_addons_register_styles'));
 
116
  add_action('elementor/frontend/after_enqueue_styles', array($this, 'premium_addons_enqueue_styles'));
117
  add_action('wp_enqueue_scripts', array($this, 'premium_maps_required_script'));
118
  add_action('admin_post_premium_addons_rollback', 'post_premium_addons_rollback');
@@ -275,6 +276,18 @@ class premium_Addon_Elementor {
275
  }
276
  }
277
 
 
 
 
 
 
 
 
 
 
 
 
 
278
  /**
279
  * Load only the required javascript files
280
  */
3
  Plugin Name: Premium Addons for Elementor
4
  Description: Premium Addons Plugin Includes 20 premium widgets for Elementor Page Builder.
5
  Plugin URI: https://premiumaddons.com
6
+ Version: 2.5.6
7
  Author: Leap13
8
  Author URI: http://leap13.com/
9
  Text Domain: premium-addons-for-elementor
22
  if (!defined('ABSPATH')) exit; // No access of directly access
23
 
24
 
25
+ define('PREMIUM_ADDONS_VERSION', '2.5.6');
26
  define('PREMIUM_ADDONS_URL', plugins_url('/', __FILE__));
27
  define('PREMIUM_ADDONS_PATH', plugin_dir_path(__FILE__));
28
  define('PREMIUM_ADDONS_FILE', __FILE__);
29
  define('PREMIUM_ADDONS_BASENAME', plugin_basename(__FILE__));
30
+ define('PREMIUM_ADDONS_STABLE_VERSION', '2.5.5');
31
 
32
  /**
33
  * Loading text domain, Including required files
113
  add_action('elementor/widgets/widgets_registered', array($this, 'premium_addons_widget_register'));
114
  add_action('elementor/frontend/after_register_scripts', array($this, 'premium_addons_register_scripts'));
115
  add_action('elementor/frontend/after_register_styles', array($this, 'premium_addons_register_styles'));
116
+ add_action('elementor/editor/before_enqueue_scripts', array($this,'premium_maps_get_address'));
117
  add_action('elementor/frontend/after_enqueue_styles', array($this, 'premium_addons_enqueue_styles'));
118
  add_action('wp_enqueue_scripts', array($this, 'premium_maps_required_script'));
119
  add_action('admin_post_premium_addons_rollback', 'post_premium_addons_rollback');
276
  }
277
  }
278
 
279
+ public function premium_maps_get_address() {
280
+
281
+ $map_enabled = get_option('pa_save_settings')['premium-maps'];
282
+
283
+ $premium_maps_enabled = isset( $map_enabled ) ? $map_enabled : 1;
284
+
285
+ if( $premium_maps_enabled ) {
286
+ wp_enqueue_script('premium-maps-address', PREMIUM_ADDONS_URL . 'assets/js/premium-maps-address.js', array('jquery'), PREMIUM_ADDONS_VERSION, true);
287
+ }
288
+
289
+ }
290
+
291
  /**
292
  * Load only the required javascript files
293
  */
readme.txt CHANGED
@@ -5,7 +5,7 @@ Donate link: http://premiumaddons.com
5
  Requires at least: 4.5
6
  Tested up to: 4.9.8
7
  Requires PHP: 5.4
8
- Stable tag: 2.5.5
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
@@ -137,6 +137,12 @@ Premium Addons for Elementor is 100% Ads Free, Ads can only be detected from You
137
 
138
  == Changelog ==
139
 
 
 
 
 
 
 
140
  = 2.5.5 =
141
 
142
  - Tweak: Enhanced HTML structure for Dual Heading widget.
5
  Requires at least: 4.5
6
  Tested up to: 4.9.8
7
  Requires PHP: 5.4
8
+ Stable tag: 2.5.6
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
137
 
138
  == Changelog ==
139
 
140
+ = 2.5.6 =
141
+
142
+ - Tweak: Added marker clustering and latitude/longitude finder options to Premium Maps widget.
143
+ - Tweak: Added button option to Premium Banner widget.
144
+ - Fixed: 'Undefined index: premium_dual_header_second_header_tag' in Premium Dual Heading widget.
145
+
146
  = 2.5.5 =
147
 
148
  - Tweak: Enhanced HTML structure for Dual Heading widget.
widgets/premium-banner.php CHANGED
@@ -301,6 +301,85 @@ class Premium_Banner_Widget extends Widget_Base {
301
  ]
302
  );
303
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
304
  $this->add_control('premium_banner_title_text_align',
305
  [
306
  'label' => esc_html__('Alignment', 'premium-addons-for-elementor'),
@@ -319,8 +398,10 @@ class Premium_Banner_Widget extends Widget_Base {
319
  'icon' => 'fa fa-align-right'
320
  ],
321
  ],
 
 
322
  'selectors' => [
323
- '{{WRAPPER}} .premium_addons-banner-ib-title, {{WRAPPER}} .premium_addons-banner-ib-content' => 'text-align: {{VALUE}};',
324
  ]
325
  ]
326
  );
@@ -528,6 +609,119 @@ class Premium_Banner_Widget extends Widget_Base {
528
  );
529
 
530
  $this->end_controls_section();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
531
 
532
  }
533
 
@@ -555,7 +749,10 @@ class Premium_Banner_Widget extends Widget_Base {
555
  $full_class = $animation_class.$hover_class.$extra_class.$active;
556
  $min_size = $settings['premium_banner_min_range'].'px';
557
  $max_size = $settings['premium_banner_max_range'].'px';
558
-
 
 
 
559
  ob_start();
560
  ?>
561
  <div class="premium_banner" id="premium-banner-<?php echo esc_attr($this->get_id()); ?>">
@@ -569,11 +766,18 @@ class Premium_Banner_Widget extends Widget_Base {
569
  </div>
570
  <?php endif; ?>
571
  <?php endif; ?>
572
- <div class="premium_addons-banner-ib-desc" style="">
573
  <?php echo $full_title; ?>
574
  <div class="premium_addons-banner-ib-content premium_banner_content">
575
  <div <?php echo $this->get_render_attribute_string('premium_banner_description'); ?>><?php echo $settings[ 'premium_banner_description' ]; ?></div>
576
  </div>
 
 
 
 
 
 
 
577
  </div>
578
  <?php
579
  if( $settings['premium_banner_link_url_switch'] == 'yes' && (!empty( $settings['premium_banner_image_custom_link']['url'] ) || !empty($settings['premium_banner_image_existing_page_link'] )) ) {
301
  ]
302
  );
303
 
304
+ $this->add_control(
305
+ 'premium_banner_link_switcher',
306
+ [
307
+ 'label' => esc_html__('Button', 'premium-addons-for-elementor'),
308
+ 'type' => Controls_Manager::SWITCHER,
309
+ 'condition' => [
310
+ 'premium_banner_link_url_switch!' => 'yes'
311
+ ]
312
+ ]
313
+ );
314
+
315
+
316
+ $this->add_control(
317
+ 'premium_banner_more_text',
318
+ [
319
+ 'label' => esc_html__('Text','premium-addons-for-elementor'),
320
+ 'type' => Controls_Manager::TEXT,
321
+ 'dynamic' => [ 'active' => true ],
322
+ 'default' => 'Click Here',
323
+ 'condition' => [
324
+ 'premium_banner_link_switcher' => 'yes',
325
+ 'premium_banner_link_url_switch!' => 'yes'
326
+ ]
327
+ ]
328
+ );
329
+
330
+ $this->add_control(
331
+ 'premium_banner_link_selection',
332
+ [
333
+ 'label' => esc_html__('Link Type', 'premium-addons-for-elementor'),
334
+ 'type' => Controls_Manager::SELECT,
335
+ 'options' => [
336
+ 'url' => esc_html__('URL', 'premium-addons-for-elementor'),
337
+ 'link' => esc_html__('Existing Page', 'premium-addons-for-elementor'),
338
+ ],
339
+ 'default' => 'url',
340
+ 'label_block' => true,
341
+ 'condition' => [
342
+ 'premium_banner_link_switcher' => 'yes',
343
+ 'premium_banner_link_url_switch!' => 'yes'
344
+ ]
345
+ ]
346
+ );
347
+
348
+ $this->add_control(
349
+ 'premium_banner_link',
350
+ [
351
+ 'label' => esc_html__('Link', 'premium-addons-for-elementor'),
352
+ 'type' => Controls_Manager::URL,
353
+ 'default' => [
354
+ 'url' => '#',
355
+ ],
356
+ 'placeholder' => 'https://premiumaddons.com/',
357
+ 'label_block' => true,
358
+ 'condition' => [
359
+ 'premium_banner_link_selection' => 'url',
360
+ 'premium_banner_link_switcher' => 'yes',
361
+ 'premium_banner_link_url_switch!' => 'yes'
362
+ ]
363
+ ]
364
+ );
365
+
366
+ $this->add_control(
367
+ 'premium_banner_existing_link',
368
+ [
369
+ 'label' => esc_html__('Existing Page', 'premium-addons-for-elementor'),
370
+ 'type' => Controls_Manager::SELECT2,
371
+ 'options' => $this->getTemplateInstance()->get_all_post(),
372
+ 'multiple' => false,
373
+ 'condition' => [
374
+ 'premium_banner_link_selection' => 'link',
375
+ 'premium_banner_link_switcher' => 'yes',
376
+ 'premium_banner_link_url_switch!' => 'yes'
377
+ ],
378
+ 'label_block' => true,
379
+ ]
380
+ );
381
+
382
+
383
  $this->add_control('premium_banner_title_text_align',
384
  [
385
  'label' => esc_html__('Alignment', 'premium-addons-for-elementor'),
398
  'icon' => 'fa fa-align-right'
399
  ],
400
  ],
401
+ 'default' => 'left',
402
+ 'toggle' => false,
403
  'selectors' => [
404
+ '{{WRAPPER}} .premium_addons-banner-ib-title, {{WRAPPER}} .premium_addons-banner-ib-content, {{WRAPPER}} .premium-banner-read-more' => 'text-align: {{VALUE}};',
405
  ]
406
  ]
407
  );
609
  );
610
 
611
  $this->end_controls_section();
612
+
613
+ $this->start_controls_section(
614
+ 'premium_banner_styles_of_button',
615
+ [
616
+ 'label' => esc_html__( 'Button', 'premium-addons-for-elementor' ),
617
+ 'tab' => Controls_Manager::TAB_STYLE,
618
+ 'condition' => [
619
+ 'premium_banner_link_switcher' => 'yes',
620
+ 'premium_banner_link_url_switch!' => 'yes'
621
+ ]
622
+ ]
623
+ );
624
+
625
+ $this->add_control(
626
+ 'premium_banner_color_of_button',
627
+ [
628
+ 'label' => esc_html__( 'Color', 'premium-addons-for-elementor' ),
629
+ 'type' => Controls_Manager::COLOR,
630
+ 'scheme' => [
631
+ 'type' => Scheme_Color::get_type(),
632
+ 'value' => Scheme_Color::COLOR_3,
633
+ ],
634
+ 'selectors' => [
635
+ '{{WRAPPER}} .premium_banner .premium-banner-link' => 'color: {{VALUE}};'
636
+ ],
637
+ ]
638
+ );
639
+
640
+ $this->add_control(
641
+ 'premium_banner_hover_color_of_button',
642
+ [
643
+ 'label' => esc_html__( 'Hover Color', 'premium-addons-for-elementor' ),
644
+ 'type' => Controls_Manager::COLOR,
645
+ 'scheme' => [
646
+ 'type' => Scheme_Color::get_type(),
647
+ 'value' => Scheme_Color::COLOR_3,
648
+ ],
649
+ 'selectors' => [
650
+ '{{WRAPPER}} .premium_banner .premium-banner-link:hover' => 'color: {{VALUE}};'
651
+ ],
652
+ ]
653
+ );
654
+
655
+ $this->add_group_control(
656
+ Group_Control_Typography::get_type(),
657
+ [
658
+ 'name' => 'premium_banner_button_typhography',
659
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
660
+ 'selector' => '{{WRAPPER}} .premium_banner .premium-banner-link',
661
+ ]
662
+ );
663
+
664
+ $this->add_control(
665
+ 'premium_banner_backcolor_of_button',
666
+ [
667
+ 'label' => esc_html__( 'Background Color', 'premium-addons-for-elementor' ),
668
+ 'type' => Controls_Manager::COLOR,
669
+ 'selectors' => [
670
+ '{{WRAPPER}} .premium_banner .premium-banner-link' => 'background-color: {{VALUE}};'
671
+ ],
672
+ ]
673
+ );
674
+
675
+ $this->add_control(
676
+ 'premium_banner_hover_backcolor_of_buttin',
677
+ [
678
+ 'label' => esc_html__( 'Hover Background Color', 'premium-addons-for-elementor' ),
679
+ 'type' => Controls_Manager::COLOR,
680
+ 'selectors' => [
681
+ '{{WRAPPER}} .premium_banner .premium-banner-link:hover' => 'background-color: {{VALUE}};'
682
+ ],
683
+ ]
684
+ );
685
+
686
+ $this->add_group_control(
687
+ Group_Control_Border::get_type(),
688
+ [
689
+ 'name' => 'premium_banner_button_border',
690
+ 'selector' => '{{WRAPPER}} .premium_banner .premium-banner-link',
691
+ ]
692
+ );
693
+
694
+ $this->add_control('premium_banner_button_border_radius',
695
+ [
696
+ 'label' => esc_html__('Border Radius', 'premium-addons-for-elementor'),
697
+ 'type' => Controls_Manager::SLIDER,
698
+ 'size_units' => ['px', '%' ,'em'],
699
+ 'selectors' => [
700
+ '{{WRAPPER}} .premium_banner .premium-banner-link' => 'border-radius: {{SIZE}}{{UNIT}};'
701
+ ]
702
+ ]
703
+ );
704
+
705
+ $this->add_group_control(
706
+ Group_Control_Text_Shadow::get_type(),
707
+ [
708
+ 'label' => esc_html__('Shadow','premium-addons-for-elementor'),
709
+ 'name' => 'premium_banner_button_shadow',
710
+ 'selector' => '{{WRAPPER}} .premium_banner .premium-banner-link',
711
+ ]
712
+ );
713
+
714
+ $this->add_responsive_control('premium_banner_button_padding',
715
+ [
716
+ 'label' => esc_html__('Padding', 'premium-addons-for-elementor'),
717
+ 'type' => Controls_Manager::DIMENSIONS,
718
+ 'size_units' => ['px', 'em', '%'],
719
+ 'selectors' => [
720
+ '{{WRAPPER}} .premium_banner .premium-banner-link' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};'
721
+ ]
722
+ ]);
723
+
724
+ $this->end_controls_section();
725
 
726
  }
727
 
749
  $full_class = $animation_class.$hover_class.$extra_class.$active;
750
  $min_size = $settings['premium_banner_min_range'].'px';
751
  $max_size = $settings['premium_banner_max_range'].'px';
752
+
753
+
754
+ $banner_url = 'url' == $settings['premium_banner_link_selection'] ? $settings['premium_banner_link']['url'] : get_permalink($settings['premium_banner_existing_link']);
755
+
756
  ob_start();
757
  ?>
758
  <div class="premium_banner" id="premium-banner-<?php echo esc_attr($this->get_id()); ?>">
766
  </div>
767
  <?php endif; ?>
768
  <?php endif; ?>
769
+ <div class="premium_addons-banner-ib-desc">
770
  <?php echo $full_title; ?>
771
  <div class="premium_addons-banner-ib-content premium_banner_content">
772
  <div <?php echo $this->get_render_attribute_string('premium_banner_description'); ?>><?php echo $settings[ 'premium_banner_description' ]; ?></div>
773
  </div>
774
+ <?php if( 'yes' == $settings['premium_banner_link_switcher'] && !empty( $settings['premium_banner_more_text'] ) ) : ?>
775
+
776
+ <div class ="premium-banner-read-more">
777
+ <a class = "premium-banner-link" <?php if( !empty( $banner_url ) ) : ?> href="<?php echo esc_url( $banner_url ); ?>"<?php endif;?><?php if( !empty( $settings['premium_banner_link']['is_external'] ) ) : ?> target="_blank" <?php endif; ?><?php if( !empty($settings['premium_banner_link']['nofollow'] ) ) : ?> rel="nofollow" <?php endif; ?>><?php echo esc_html( $settings['premium_banner_more_text'] ); ?></a>
778
+ </div>
779
+
780
+ <?php endif; ?>
781
  </div>
782
  <?php
783
  if( $settings['premium_banner_link_url_switch'] == 'yes' && (!empty( $settings['premium_banner_image_custom_link']['url'] ) || !empty($settings['premium_banner_image_existing_page_link'] )) ) {
widgets/premium-dual-header.php CHANGED
@@ -487,18 +487,27 @@ class Premium_Dual_Header_Widget extends Widget_Base
487
  {
488
  // get our input from the widget settings.
489
  $settings = $this->get_settings_for_display();
 
490
  $this->add_inline_editing_attributes('premium_dual_header_first_header_text');
 
491
  $this->add_inline_editing_attributes('premium_dual_header_second_header_text');
 
492
  $first_title_tag = $settings['premium_dual_header_first_header_tag'];
493
- $second_title_tag = $settings['premium_dual_header_second_header_tag'];
494
  $first_title_text = $settings['premium_dual_header_first_header_text'] . ' ';
 
495
  $second_title_text = $settings['premium_dual_header_second_header_text'];
 
496
  $first_clip = '';
 
497
  $second_clip = '';
 
498
  if( $settings['premium_dual_header_first_back_clip'] === 'clipped' ) : $first_clip = "premium-dual-header-first-clip"; endif;
 
499
  if( $settings['premium_dual_header_second_back_clip'] === 'clipped' ) : $second_clip = "premium-dual-header-second-clip"; endif;
500
 
501
  $first_grad = $settings['premium_dual_header_first_animated'] === 'yes' ? ' gradient' : '';
 
502
  $second_grad = $settings['premium_dual_header_second_animated'] === 'yes' ? ' gradient' : '';
503
 
504
  $full_first_title_tag = '<' . $first_title_tag . ' class="premium-dual-header-first-header ' . $first_clip . $first_grad . '"><span class="premium-dual-header-first-span">'. $first_title_text . '</span><span class="premium-dual-header-second-header ' . $second_clip . $second_grad . '">'. $second_title_text . '</span></' . $settings['premium_dual_header_first_header_tag'] . '> ';
487
  {
488
  // get our input from the widget settings.
489
  $settings = $this->get_settings_for_display();
490
+
491
  $this->add_inline_editing_attributes('premium_dual_header_first_header_text');
492
+
493
  $this->add_inline_editing_attributes('premium_dual_header_second_header_text');
494
+
495
  $first_title_tag = $settings['premium_dual_header_first_header_tag'];
496
+
497
  $first_title_text = $settings['premium_dual_header_first_header_text'] . ' ';
498
+
499
  $second_title_text = $settings['premium_dual_header_second_header_text'];
500
+
501
  $first_clip = '';
502
+
503
  $second_clip = '';
504
+
505
  if( $settings['premium_dual_header_first_back_clip'] === 'clipped' ) : $first_clip = "premium-dual-header-first-clip"; endif;
506
+
507
  if( $settings['premium_dual_header_second_back_clip'] === 'clipped' ) : $second_clip = "premium-dual-header-second-clip"; endif;
508
 
509
  $first_grad = $settings['premium_dual_header_first_animated'] === 'yes' ? ' gradient' : '';
510
+
511
  $second_grad = $settings['premium_dual_header_second_animated'] === 'yes' ? ' gradient' : '';
512
 
513
  $full_first_title_tag = '<' . $first_title_tag . ' class="premium-dual-header-first-header ' . $first_clip . $first_grad . '"><span class="premium-dual-header-first-span">'. $first_title_text . '</span><span class="premium-dual-header-second-header ' . $second_clip . $second_grad . '">'. $second_title_text . '</span></' . $settings['premium_dual_header_first_header_tag'] . '> ';
widgets/premium-maps.php CHANGED
@@ -52,6 +52,15 @@ class Premium_Maps_Widget extends Widget_Base
52
  );
53
  }
54
 
 
 
 
 
 
 
 
 
 
55
 
56
  $this->add_control('premium_maps_center_lat',
57
  [
@@ -83,6 +92,15 @@ class Premium_Maps_Widget extends Widget_Base
83
 
84
  $repeater = new REPEATER();
85
 
 
 
 
 
 
 
 
 
 
86
  $repeater->add_control('map_latitude',
87
  [
88
  'label' => esc_html__('Latitude', 'premium-addons-for-elementor'),
@@ -256,6 +274,13 @@ class Premium_Maps_Widget extends Widget_Base
256
  ]
257
  ]
258
  );
 
 
 
 
 
 
 
259
 
260
  $this->end_controls_section();
261
 
@@ -571,6 +596,12 @@ class Premium_Maps_Widget extends Widget_Base
571
  } else {
572
  $hover_close = 'false';
573
  }
 
 
 
 
 
 
574
 
575
  $centerlat = !empty($settings['premium_maps_center_lat']) ? $settings['premium_maps_center_lat'] : 18.591212;
576
  $centerlong = !empty($settings['premium_maps_center_long']) ? $settings['premium_maps_center_long'] : 73.741261;
@@ -588,6 +619,7 @@ class Premium_Maps_Widget extends Widget_Base
588
  'automaticOpen' => $automatic_open,
589
  'hoverOpen' => $hover_open,
590
  'hoverClose' => $hover_close,
 
591
  ];
592
 
593
  $this->add_render_attribute('style_wrapper', 'data-style', $settings['premium_maps_custom_styling']);
52
  );
53
  }
54
 
55
+ $this->add_control('premium_map_notice',
56
+ [
57
+ 'label' => __( 'Find Latitude & Longitude', 'elementor' ),
58
+ 'type' => Controls_Manager::RAW_HTML,
59
+ 'raw' => '<form onsubmit="getAddress(this);" action="javascript:void(0);"><input type="text" id="premium-map-get-address" class="premium-map-get-address" style="margin-top:10px; margin-bottom:10px;"><input type="submit" value="Search" class="elementor-button elementor-button-default" onclick="getAddress(this)"></form><div class="premium-address-result" style="margin-top:10px; line-height: 1.3; font-size: 12px;"></div>',
60
+ 'label_block' => true,
61
+ ]
62
+ );
63
+
64
 
65
  $this->add_control('premium_maps_center_lat',
66
  [
92
 
93
  $repeater = new REPEATER();
94
 
95
+ $repeater->add_control('premium_map_pin_notice',
96
+ [
97
+ 'label' => __( 'Find Latitude & Longitude', 'elementor' ),
98
+ 'type' => Controls_Manager::RAW_HTML,
99
+ 'raw' => '<form onsubmit="getPinAddress(this);" action="javascript:void(0);"><input type="text" id="premium-map-get-address" class="premium-map-get-address" style="margin-top:10px; margin-bottom:10px;"><input type="submit" value="Search" class="elementor-button elementor-button-default" onclick="getPinAddress(this)"></form><div class="premium-address-result" style="margin-top:10px; line-height: 1.3; font-size: 12px;"></div>',
100
+ 'label_block' => true,
101
+ ]
102
+ );
103
+
104
  $repeater->add_control('map_latitude',
105
  [
106
  'label' => esc_html__('Latitude', 'premium-addons-for-elementor'),
274
  ]
275
  ]
276
  );
277
+
278
+ $this->add_control('premium_maps_map_option_cluster',
279
+ [
280
+ 'label' => esc_html__( 'Marker Clustering', 'premium-addons-for-elementor' ),
281
+ 'type' => Controls_Manager::SWITCHER,
282
+ ]
283
+ );
284
 
285
  $this->end_controls_section();
286
 
596
  } else {
597
  $hover_close = 'false';
598
  }
599
+
600
+ if($settings['premium_maps_map_option_cluster'] == 'yes') {
601
+ $marker_cluster = 'true';
602
+ } else {
603
+ $marker_cluster = 'false';
604
+ }
605
 
606
  $centerlat = !empty($settings['premium_maps_center_lat']) ? $settings['premium_maps_center_lat'] : 18.591212;
607
  $centerlong = !empty($settings['premium_maps_center_long']) ? $settings['premium_maps_center_long'] : 73.741261;
619
  'automaticOpen' => $automatic_open,
620
  'hoverOpen' => $hover_open,
621
  'hoverClose' => $hover_close,
622
+ 'cluster' => $marker_cluster
623
  ];
624
 
625
  $this->add_render_attribute('style_wrapper', 'data-style', $settings['premium_maps_custom_styling']);