Premium Addons for Elementor - Version 3.10.8

Version Description

  • Tweak: Added Carousel options in Persons widget.
  • Fixed: $ is not a function in Maps widget.
Download this release

Release Info

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

Code changes from version 3.10.7 to 3.10.8

assets/editor/js/premium-maps-address.js CHANGED
@@ -1,81 +1,68 @@
1
- function getAddress(ob) {
2
- var address = $(ob)
3
- .parent()
4
- .find("input")
5
- .attr("value");
6
- if (address != "") {
7
- geocoder = new google.maps.Geocoder();
8
- geocoder.geocode({ address: address }, function(results, status) {
9
- if (status == google.maps.GeocoderStatus.OK) {
10
- var output = $(ob)
11
- .parent()
12
- .find(".premium-address-result"),
13
- latiude = results[0].geometry.location.lat(),
14
- longitude = results[0].geometry.location.lng();
15
16
- $(output).html(
17
- "Latitude: " +
18
- latiude +
19
- "<br>Longitude: " +
20
- longitude +
21
- "<br>(Copy and Paste your Latitude & Longitude value below)"
22
- );
23
- $(ob)
24
- .parents(".elementor-control-premium_map_notice")
25
- .nextAll(".elementor-control-premium_maps_center_lat")
26
- .find("input")
27
- .val(latiude)
28
- .trigger("input");
29
- $(ob)
30
- .parents(".elementor-control-premium_map_notice")
31
- .nextAll(".elementor-control-premium_maps_center_long")
32
- .find("input")
33
- .val(longitude)
34
- .trigger("input");
35
- } else {
36
- alert("Geocode was not successful for the following reason: " + status);
37
- }
38
- });
39
- }
40
}
41
42
function getPinAddress(ob) {
43
- var address = $(ob)
44
- .parent()
45
- .find("input")
46
- .attr("value");
47
- if (address != "") {
48
- geocoder = new google.maps.Geocoder();
49
- geocoder.geocode({ address: address }, function(results, status) {
50
- if (status == google.maps.GeocoderStatus.OK) {
51
- var output = $(ob)
52
- .parent()
53
- .find(".premium-address-result"),
54
- latiude = results[0].geometry.location.lat(),
55
- longitude = results[0].geometry.location.lng();
56
-
57
- $(output).html(
58
- "Latitude: " +
59
- latiude +
60
- "<br>Longitude: " +
61
- longitude +
62
- "<br>(Copy and Paste your Latitude & Longitude value below)"
63
- );
64
- $(ob)
65
- .parents(".elementor-control-premium_map_pin_notice")
66
- .nextAll(".elementor-control-map_latitude")
67
- .find("input")
68
- .val(latiude)
69
- .trigger("input");
70
- $(ob)
71
- .parents(".elementor-control-premium_map_pin_notice")
72
- .nextAll(".elementor-control-map_longitude")
73
- .find("input")
74
- .val(longitude)
75
- .trigger("input");
76
- } else {
77
- alert("Geocode was not successful for the following reason: " + status);
78
- }
79
- });
80
- }
81
- }
1
2
+ var $ = jQuery;
3
+
4
+ function getAddress(ob) {
5
+
6
+ var address = $(ob).parent().find("input").attr("value");
7
+
8
+ if ( address !== "" ) {
9
+
10
+ geocoder = new google.maps.Geocoder();
11
+
12
+ geocoder.geocode({
13
+ address: address
14
+ }, function(results, status) {
15
+
16
+ if (status == google.maps.GeocoderStatus.OK) {
17
+
18
+ var output = $(ob).parent().find(".premium-address-result"),
19
+ latiude = results[0].geometry.location.lat(),
20
+ longitude = results[0].geometry.location.lng();
21
+
22
+ $(output).html("Latitude: " + latiude + "<br>Longitude: " + longitude + "<br>(Copy and Paste your Latitude & Longitude value below)");
23
+
24
+ $(ob).parents(".elementor-control-premium_map_notice").nextAll(".elementor-control-premium_maps_center_lat").find("input").val(latiude).trigger("input");
25
+
26
+ $(ob).parents(".elementor-control-premium_map_notice").nextAll(".elementor-control-premium_maps_center_long").find("input").val(longitude).trigger("input");
27
+
28
+ } else {
29
+
30
+ alert("Geocode was not successful for the following reason: " + status);
31
+
32
+ }
33
+ });
34
+ }
35
}
36
37
function getPinAddress(ob) {
38
+
39
+ var address = $(ob).parent().find("input").attr("value");
40
+
41
+ if (address !== "") {
42
+
43
+ geocoder = new google.maps.Geocoder();
44
+
45
+ geocoder.geocode({
46
+ address: address
47
+ }, function(results, status) {
48
+
49
+ if (status == google.maps.GeocoderStatus.OK) {
50
+
51
+ var output = $(ob).parent().find(".premium-address-result"),
52
+ latiude = results[0].geometry.location.lat(),
53
+ longitude = results[0].geometry.location.lng();
54
+
55
+ $(output).html("Latitude: " + latiude + "<br>Longitude: " + longitude + "<br>(Copy and Paste your Latitude & Longitude value below)");
56
+
57
+ $(ob).parents(".elementor-control-premium_map_pin_notice").nextAll(".elementor-control-map_latitude").find("input").val(latiude).trigger("input");
58
+
59
+ $(ob).parents(".elementor-control-premium_map_pin_notice").nextAll(".elementor-control-map_longitude").find("input").val(longitude).trigger("input");
60
+
61
+ } else {
62
+
63
+ alert("Geocode was not successful for the following reason: " + status);
64
+
65
+ }
66
+ });
67
+ }
68
+ }
assets/frontend/css/premium-addons.css CHANGED
@@ -718,7 +718,7 @@
718
}
719
/**************** Premium Carousel **************/
720
/************************************************/
721
- .premium-carousel-wrapper a.carousel-arrow, .premium-carousel-wrapper a.ver-carousel-arrow, .premium-fb-rev-container a.carousel-arrow, .premium-blog-wrap a.carousel-arrow, .premium-hscroll-wrap a.carousel-arrow, .premium-twitter-feed-wrapper a.carousel-arrow {
722
display: -ms-flexbox;
723
display: -webkit-flex;
724
display: -moz-flex;
@@ -753,7 +753,7 @@ div[class^="premium-"] .slick-arrow i {
753
.premium-carousel-wrapper .premium-carousel-content-hidden {
754
visibility: hidden;
755
}
756
- .premium-carousel-wrapper a.carousel-arrow, .premium-fb-rev-container a.carousel-arrow, .premium-blog-wrap a.carousel-arrow, .premium-hscroll-wrap a.carousel-arrow, .premium-twitter-feed-wrapper a.carousel-arrow {
757
top: 50%;
758
}
759
.premium-carousel-wrapper a.ver-carousel-arrow {
@@ -2359,6 +2359,16 @@ button.premium-modal-box-modal-close {
2359
-ms-flex-align: flex-start;
2360
align-items: flex-start;
2361
}
2362
.premium-person-widget-style1 .multiple-persons[data-persons-equal="yes"] .premium-person-image-container,
2363
.premium-person-widget-style1 .multiple-persons[data-persons-equal="yes"] .premium-person-image-wrap {
2364
height: 100%;
718
}
719
/**************** Premium Carousel **************/
720
/************************************************/
721
+ .premium-carousel-wrapper a.carousel-arrow, .premium-carousel-wrapper a.ver-carousel-arrow, .premium-fb-rev-container a.carousel-arrow, .premium-blog-wrap a.carousel-arrow, .premium-hscroll-wrap a.carousel-arrow, .premium-twitter-feed-wrapper a.carousel-arrow, .premium-persons-container a.carousel-arrow {
722
display: -ms-flexbox;
723
display: -webkit-flex;
724
display: -moz-flex;
753
.premium-carousel-wrapper .premium-carousel-content-hidden {
754
visibility: hidden;
755
}
756
+ .premium-carousel-wrapper a.carousel-arrow, .premium-fb-rev-container a.carousel-arrow, .premium-blog-wrap a.carousel-arrow, .premium-hscroll-wrap a.carousel-arrow, .premium-twitter-feed-wrapper a.carousel-arrow, .premium-persons-container a.carousel-arrow {
757
top: 50%;
758
}
759
.premium-carousel-wrapper a.ver-carousel-arrow {
2359
-ms-flex-align: flex-start;
2360
align-items: flex-start;
2361
}
2362
+ .premium-person-widget-style1 .slick-track {
2363
+ display: -ms-flexbox;
2364
+ display: -webkit-flex;
2365
+ display: -moz-flex;
2366
+ display: -ms-flex;
2367
+ display: flex;
2368
+ }
2369
+ .premium-person-widget-style1 .slick-slide {
2370
+ height: inherit !important;
2371
+ }
2372
.premium-person-widget-style1 .multiple-persons[data-persons-equal="yes"] .premium-person-image-container,
2373
.premium-person-widget-style1 .multiple-persons[data-persons-equal="yes"] .premium-person-image-wrap {
2374
height: 100%;
assets/frontend/js/premium-addons.js CHANGED
@@ -952,14 +952,44 @@
952
953
var PremiumPersonsHandler = function($scope, $) {
954
955
- if( ! $scope.hasClass("premium-person-widget-style2") )
956
- return;
957
-
958
var $persons = $scope.find(".multiple-persons");
959
960
if( ! $persons.length )
961
return;
962
963
if( "yes" !== $persons.data("persons-equal") )
964
return;
965
952
953
var PremiumPersonsHandler = function($scope, $) {
954
955
var $persons = $scope.find(".multiple-persons");
956
957
if( ! $persons.length )
958
return;
959
960
+ var carousel = $persons.data("carousel");
961
+
962
+ if( carousel ) {
963
+
964
+ var autoPlay = $persons.data("play"),
965
+ speed = $persons.data("speed"),
966
+ rtl = $persons.data("rtl"),
967
+ colsNumber = $persons.data("col"),
968
+ 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>',
969
+ 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>';
970
+
971
+ $persons.slick({
972
+ infinite: true,
973
+ slidesToShow: colsNumber,
974
+ slidesToScroll: colsNumber,
975
+ responsive: [
976
+ { breakpoint: 769, settings: { slidesToShow: 1, slidesToScroll: 1 } },
977
+ { breakpoint: 481, settings: { slidesToShow: 1, slidesToScroll: 1 } }
978
+ ],
979
+ autoplay: autoPlay,
980
+ autoplaySpeed: speed,
981
+ rtl: rtl,
982
+ nextArrow: nextArrow,
983
+ prevArrow: prevArrow,
984
+ draggable: true,
985
+ pauseOnHover: true
986
+ });
987
+ }
988
+
989
+ if( ! $scope.hasClass("premium-person-widget-style2") )
990
+ return;
991
+
992
+
993
if( "yes" !== $persons.data("persons-equal") )
994
return;
995
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.10.7
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.10.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.10.6');
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.10.8
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.10.8');
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.10.7');
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.3
7
Requires PHP: 5.4
8
- Stable Tag: 3.10.7
9
License: GPL v3.0
10
License URI: https://opensource.org/licenses/GPL-3.0
11
@@ -175,6 +175,11 @@ Premium Addons for Elementor is 100% Ads Free, Ads can only be detected from You
175
176
== Changelog ==
177
178
= 3.10.7 =
179
180
- Tweak: Added `Size` option for social icons in Persons widget.
5
Requires at Least: 4.5
6
Tested Up To: 5.3
7
Requires PHP: 5.4
8
+ Stable Tag: 3.10.8
9
License: GPL v3.0
10
License URI: https://opensource.org/licenses/GPL-3.0
11
175
176
== Changelog ==
177
178
+ = 3.10.8 =
179
+
180
+ - Tweak: Added Carousel options in Persons widget.
181
+ - Fixed: `$ is not a function` in Maps widget.
182
+
183
= 3.10.7 =
184
185
- Tweak: Added `Size` option for social icons in Persons widget.
widgets/premium-person.php CHANGED
@@ -42,6 +42,7 @@ class Premium_Person extends Widget_Base {
42
public function get_script_depends() {
43
return [
44
'imagesloaded',
45
'premium-addons-js'
46
];
47
}
@@ -757,6 +758,61 @@ class Premium_Person extends Widget_Base {
757
]
758
);
759
760
$this->end_controls_section();
761
762
/*Start Image Style Section*/
@@ -1153,6 +1209,79 @@ class Premium_Person extends Widget_Base {
1153
1154
$this->end_controls_section();
1155
1156
}
1157
1158
/**
@@ -1201,6 +1330,28 @@ class Premium_Person extends Widget_Base {
1201
$this->add_render_attribute( 'persons_container', 'class', 'multiple-persons' );
1202
$this->add_render_attribute( 'persons_container', 'data-persons-equal', $settings['multiple_equal_height'] );
1203
}
1204
1205
1206
?>
@@ -1451,6 +1602,25 @@ class Premium_Person extends Widget_Base {
1451
view.addRenderAttribute( 'persons_container', 'class', 'multiple-persons' );
1452
view.addRenderAttribute( 'persons_container', 'data-persons-equal', settings.multiple_equal_height );
1453
}
1454
1455
1456
function getSocialIcons( person = null ) {
42
public function get_script_depends() {
43
return [
44
'imagesloaded',
45
+ 'jquery-slick',
46
'premium-addons-js'
47
];
48
}
758
]
759
);
760
761
+ $this->add_control('carousel',
762
+ [
763
+ 'label' => __('Carousel', 'premium-addons-pro'),
764
+ 'type' => Controls_Manager::SWITCHER
765
+ ]
766
+ );
767
+
768
+ $this->add_control('carousel_play',
769
+ [
770
+ 'label' => __('Auto Play', 'premium-addons-pro'),
771
+ 'type' => Controls_Manager::SWITCHER,
772
+ 'condition' => [
773
+ 'carousel' => 'yes'
774
+ ]
775
+ ]
776
+ );
777
+
778
+ $this->add_control('carousel_autoplay_speed',
779
+ [
780
+ 'label' => __( 'Autoplay Speed', 'premium-addons-pro' ),
781
+ 'description' => __( 'Autoplay Speed means at which time the next slide should come. Set a value in milliseconds (ms)', 'premium-addons-pro' ),
782
+ 'type' => Controls_Manager::NUMBER,
783
+ 'default' => 5000,
784
+ 'condition' => [
785
+ 'carousel' => 'yes',
786
+ 'carousel_play' => 'yes',
787
+ ],
788
+ ]
789
+ );
790
+
791
+ $this->add_responsive_control('carousel_arrows_pos',
792
+ [
793
+ 'label' => __('Arrows Position', 'premium-addons-pro'),
794
+ 'type' => Controls_Manager::SLIDER,
795
+ 'size_units' => ['px', "em"],
796
+ 'range' => [
797
+ 'px' => [
798
+ 'min' => -100,
799
+ 'max' => 100,
800
+ ],
801
+ 'em' => [
802
+ 'min' => -10,
803
+ 'max' => 10,
804
+ ],
805
+ ],
806
+ 'condition' => [
807
+ 'carousel' => 'yes'
808
+ ],
809
+ 'selectors' => [
810
+ '{{WRAPPER}} .premium-persons-container a.carousel-arrow.carousel-next' => 'right: {{SIZE}}{{UNIT}};',
811
+ '{{WRAPPER}} .premium-persons-container a.carousel-arrow.carousel-prev' => 'left: {{SIZE}}{{UNIT}};',
812
+ ]
813
+ ]
814
+ );
815
+
816
$this->end_controls_section();
817
818
/*Start Image Style Section*/
1209
1210
$this->end_controls_section();
1211
1212
+ $this->start_controls_section('carousel_style',
1213
+ [
1214
+ 'label' => __('Carousel', 'premium-addons-pro'),
1215
+ 'tab' => Controls_Manager::TAB_STYLE,
1216
+ 'condition' => [
1217
+ 'carousel' => 'yes'
1218
+ ]
1219
+ ]
1220
+ );
1221
+
1222
+ $this->add_control('arrow_color',
1223
+ [
1224
+ 'label' => __('Color', 'premium-addons-pro'),
1225
+ 'type' => Controls_Manager::COLOR,
1226
+ 'scheme' => [
1227
+ 'type' => Scheme_Color::get_type(),
1228
+ 'value' => Scheme_Color::COLOR_1,
1229
+ ],
1230
+ 'selectors' => [
1231
+ '{{WRAPPER}} .premium-persons-container .slick-arrow' => 'color: {{VALUE}};',
1232
+ ]
1233
+ ]
1234
+ );
1235
+
1236
+ $this->add_responsive_control('arrow_size',
1237
+ [
1238
+ 'label' => __('Size', 'premium-addons-pro'),
1239
+ 'type' => Controls_Manager::SLIDER,
1240
+ 'size_units' => ['px', '%' ,'em'],
1241
+ 'selectors' => [
1242
+ '{{WRAPPER}} .premium-persons-container .slick-arrow i' => 'font-size: {{SIZE}}{{UNIT}};'
1243
+ ]
1244
+ ]
1245
+ );
1246
+
1247
+ $this->add_control('arrow_background',
1248
+ [
1249
+ 'label' => __('Background Color', 'premium-addons-pro'),
1250
+ 'type' => Controls_Manager::COLOR,
1251
+ 'scheme' => [
1252
+ 'type' => Scheme_Color::get_type(),
1253
+ 'value' => Scheme_Color::COLOR_2,
1254
+ ],
1255
+ 'selectors' => [
1256
+ '{{WRAPPER}} .premium-persons-container .slick-arrow' => 'background-color: {{VALUE}};',
1257
+ ]
1258
+ ]
1259
+ );
1260
+
1261
+ $this->add_control('arrow_border_radius',
1262
+ [
1263
+ 'label' => __('Border Radius', 'premium-addons-pro'),
1264
+ 'type' => Controls_Manager::SLIDER,
1265
+ 'size_units' => ['px', '%' ,'em'],
1266
+ 'selectors' => [
1267
+ '{{WRAPPER}} .premium-persons-container .slick-arrow' => 'border-radius: {{SIZE}}{{UNIT}};'
1268
+ ]
1269
+ ]
1270
+ );
1271
+
1272
+ $this->add_control('arrow_padding',
1273
+ [
1274
+ 'label' => __('Padding', 'premium-addons-pro'),
1275
+ 'type' => Controls_Manager::SLIDER,
1276
+ 'size_units' => ['px', '%' ,'em'],
1277
+ 'selectors' => [
1278
+ '{{WRAPPER}} .premium-persons-container .slick-arrow' => 'padding: {{SIZE}}{{UNIT}};'
1279
+ ]
1280
+ ]
1281
+ );
1282
+
1283
+ $this->end_controls_section();
1284
+
1285
}
1286
1287
/**
1330
$this->add_render_attribute( 'persons_container', 'class', 'multiple-persons' );
1331
$this->add_render_attribute( 'persons_container', 'data-persons-equal', $settings['multiple_equal_height'] );
1332
}
1333
+
1334
+ $carousel = 'yes' === $settings['carousel'] ? true : false;
1335
+
1336
+ if( $carousel ) {
1337
+
1338
+ $this->add_render_attribute('persons_container', 'data-carousel', $carousel );
1339
+
1340
+ $columns = intval ( 100 / substr( $settings['persons_per_row'], 0, strpos( $settings['persons_per_row'], '%') ) );
1341
+
1342
+ $this->add_render_attribute('persons_container', 'data-col', $columns );
1343
+
1344
+ $play = 'yes' === $settings['carousel_play'] ? true : false;
1345
+
1346
+ $speed = ! empty( $settings['carousel_autoplay_speed'] ) ? $settings['carousel_autoplay_speed'] : 5000;
1347
+
1348
+ $this->add_render_attribute('persons_container', 'data-play', $play );
1349
+
1350
+ $this->add_render_attribute('persons_container', 'data-speed', $speed );
1351
+
1352
+ $this->add_render_attribute('persons_container', 'data-rtl', is_rtl() );
1353
+
1354
+ }
1355
1356
1357
?>
1602
view.addRenderAttribute( 'persons_container', 'class', 'multiple-persons' );
1603
view.addRenderAttribute( 'persons_container', 'data-persons-equal', settings.multiple_equal_height );
1604
}
1605
+
1606
+ var carousel = 'yes' === settings.carousel ? true : false;
1607
+
1608
+ if( carousel ) {
1609
+
1610
+ view.addRenderAttribute('persons_container', 'data-carousel', carousel );
1611
+
1612
+ var play = 'yes' === settings.carousel_play ? true : false,
1613
+ speed = '' !== settings.carousel_autoplay_speed ? settings.carousel_autoplay_speed : 5000;
1614
+
1615
+ var columns = parseInt( 100 / settings.persons_per_row.substr( 0, settings.persons_per_row.indexOf('%') ) );
1616
+
1617
+ view.addRenderAttribute('persons_container', 'data-col', columns );
1618
+
1619
+ view.addRenderAttribute('persons_container', 'data-play', play );
1620
+
1621
+ view.addRenderAttribute('persons_container', 'data-speed', speed );
1622
+
1623
+ }
1624
1625
1626
function getSocialIcons( person = null ) {