Premium Addons for Elementor - Version 3.5.5

Version Description

  • Tweak: Even layout enhanced for more usability in Grid widget.
  • Fixed: Load More button loads images from All category even when not on All filter tab in Grid widget.
  • Fixed: Transparent Stroke Fill Color option issue in Dual Heading widget.
Download this release

Release Info

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

Code changes from version 3.5.4 to 3.5.5

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.5.3', '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.5.4', '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
@@ -2303,8 +2303,8 @@ button.premium-modal-box-modal-close {
2303
  .premium-dual-header-first-clip.stroke .premium-dual-header-first-span,
2304
  .premium-dual-header-second-clip.stroke {
2305
  -webkit-text-stroke-color: transparent;
2306
- -webkit-text-fill-color: #fff;
2307
- -webkit-text-stroke-width: 4px;
2308
  }
2309
 
2310
  @media (max-width: 500px) {
@@ -3243,6 +3243,7 @@ button.premium-modal-box-modal-close {
3243
  }
3244
  .pa-gallery-img-container img {
3245
  display: block;
 
3246
  -webkit-transition: all 0.3s ease-in-out;
3247
  -moz-transition: all 0.3s ease-in-out;
3248
  -ms-transition: all 0.3s ease-in-out;
2303
  .premium-dual-header-first-clip.stroke .premium-dual-header-first-span,
2304
  .premium-dual-header-second-clip.stroke {
2305
  -webkit-text-stroke-color: transparent;
2306
+ -webkit-text-fill-color: #fafafa;
2307
+ -webkit-text-stroke-width: 2px;
2308
  }
2309
 
2310
  @media (max-width: 500px) {
3243
  }
3244
  .pa-gallery-img-container img {
3245
  display: block;
3246
+ width: 100%;
3247
  -webkit-transition: all 0.3s ease-in-out;
3248
  -moz-transition: all 0.3s ease-in-out;
3249
  -ms-transition: all 0.3s ease-in-out;
assets/frontend/js/premium-addons.js CHANGED
@@ -119,28 +119,32 @@
119
 
120
  if ( loadMore ) {
121
 
122
- var minimum = gridSettings['minimum'],
123
- imageToShow = gridSettings['click_images'];
124
 
125
  galleryElement.parent().find('.premium-gallery-load-more div').hide();
126
  if ( galleryElement.find(".premium-gallery-item").length > minimum ) {
127
  galleryElement.parent().find('.premium-gallery-load-more').removeClass('premium-gallery-btn-hidden');
128
  galleryElement.find(".premium-gallery-item:gt(" + ( minimum - 1 ) + ")").hide();
129
- function appendItems() {
130
- var itemsToShow = galleryElement.find(".premium-gallery-item").filter(':hidden').slice( 0, imageToShow );
 
 
131
  if ( itemsToShow.length > 0 ) {
132
  itemsToShow.show();
133
  galleryElement.isotope('layout');
134
  }
 
135
  }
136
  galleryElement.parent().on('click', '.premium-gallery-load-more-btn', function() {
 
137
  $.ajax({
138
- url: appendItems(),
139
  beforeSend: function() {
140
  galleryElement.parent().find('.premium-gallery-load-more div').show();
141
  },
142
  success: function() {
143
- var itemsLeft = galleryElement.find(".premium-gallery-item").filter(':hidden').slice( 0, imageToShow );
144
  if ( itemsLeft.length > 0 ) {
145
  galleryElement.parent().find('.premium-gallery-load-more div').hide();
146
  } else {
@@ -154,9 +158,8 @@
154
 
155
  $scope.find(".premium-gallery-cats-container li a").click(function(e) {
156
  e.preventDefault();
157
- $scope
158
- .find(".premium-gallery-cats-container li .active")
159
- .removeClass("active");
160
  $(this).addClass("active");
161
  var selector = $(this).attr("data-filter");
162
  galleryElement.isotope({ filter: selector });
119
 
120
  if ( loadMore ) {
121
 
122
+ var minimum = gridSettings['minimum'],
123
+ imageToShow = gridSettings['click_images'];
124
 
125
  galleryElement.parent().find('.premium-gallery-load-more div').hide();
126
  if ( galleryElement.find(".premium-gallery-item").length > minimum ) {
127
  galleryElement.parent().find('.premium-gallery-load-more').removeClass('premium-gallery-btn-hidden');
128
  galleryElement.find(".premium-gallery-item:gt(" + ( minimum - 1 ) + ")").hide();
129
+ function appendItems( currentItems ) {
130
+
131
+ var itemsToShow = $( currentItems ).filter(':hidden').slice( 0, imageToShow );
132
+
133
  if ( itemsToShow.length > 0 ) {
134
  itemsToShow.show();
135
  galleryElement.isotope('layout');
136
  }
137
+
138
  }
139
  galleryElement.parent().on('click', '.premium-gallery-load-more-btn', function() {
140
+ var currentFilterItems = galleryElement.isotope('getFilteredItemElements');
141
  $.ajax({
142
+ url: appendItems( currentFilterItems ),
143
  beforeSend: function() {
144
  galleryElement.parent().find('.premium-gallery-load-more div').show();
145
  },
146
  success: function() {
147
+ var itemsLeft = $( currentFilterItems ).filter(':hidden').slice( 0, imageToShow );
148
  if ( itemsLeft.length > 0 ) {
149
  galleryElement.parent().find('.premium-gallery-load-more div').hide();
150
  } else {
158
 
159
  $scope.find(".premium-gallery-cats-container li a").click(function(e) {
160
  e.preventDefault();
161
+ //Showing all images of category
162
+ $scope.find(".premium-gallery-cats-container li .active").removeClass("active");
 
163
  $(this).addClass("active");
164
  var selector = $(this).attr("data-filter");
165
  galleryElement.isotope({ filter: selector });
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.5.4
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.5.4');
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.5.3');
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.5.5
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.5.5');
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.5.4');
23
 
24
  if( ! class_exists('Premium_Addons_Elementor') ) {
25
 
readme.txt CHANGED
@@ -5,7 +5,7 @@ Donate link: http://premiumaddons.com
5
  Requires at least: 4.5
6
  Tested up to: 5.2.2
7
  Requires PHP: 5.4
8
- Stable tag: 3.5.4
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
@@ -141,6 +141,12 @@ Premium Addons for Elementor is 100% Ads Free, Ads can only be detected from You
141
 
142
  == Changelog ==
143
 
 
 
 
 
 
 
144
  = 3.5.4 =
145
 
146
  - Tweak: Added `Stroke` option for First/Second heading in Dual Heading widget.
5
  Requires at least: 4.5
6
  Tested up to: 5.2.2
7
  Requires PHP: 5.4
8
+ Stable tag: 3.5.5
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
141
 
142
  == Changelog ==
143
 
144
+ = 3.5.5 =
145
+
146
+ - Tweak: `Even` layout enhanced for more usability in Grid widget.
147
+ - Fixed: `Load More` button loads images from `All` category even when not on `All` filter tab in Grid widget.
148
+ - Fixed: Transparent `Stroke Fill Color` option issue in Dual Heading widget.
149
+
150
  = 3.5.4 =
151
 
152
  - Tweak: Added `Stroke` option for First/Second heading in Dual Heading widget.
widgets/premium-dual-header.php CHANGED
@@ -271,26 +271,27 @@ class Premium_Dual_Header extends Widget_Base {
271
  ]
272
  );
273
 
274
- /*First Clip*/
275
- $this->add_group_control(
276
- Group_Control_Background::get_type(),
277
  [
278
- 'name' => 'premium_dual_header_first_clipped_background',
279
- 'types' => [ 'classic' , 'gradient' ],
280
  'condition' => [
281
  'premium_dual_header_first_back_clip' => 'clipped'
282
  ],
283
- 'selector' => '{{WRAPPER}} .premium-dual-header-first-span'
284
  ]
285
  );
286
 
287
- $this->add_control('premium_dual_header_first_stroke',
288
  [
289
- 'label' => __('Stroke', 'premium-addons-for-elementor'),
290
- 'type' => Controls_Manager::SWITCHER,
291
- 'condition' => [
292
- 'premium_dual_header_first_back_clip' => 'clipped'
 
293
  ],
 
 
 
294
  ]
295
  );
296
 
@@ -322,6 +323,20 @@ class Premium_Dual_Header extends Widget_Base {
322
  ]
323
  );
324
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
325
  /*First Border*/
326
  $this->add_group_control(
327
  Group_Control_Border::get_type(),
@@ -453,26 +468,27 @@ class Premium_Dual_Header extends Widget_Base {
453
  ]
454
  );
455
 
456
- /*Second Clip*/
457
- $this->add_group_control(
458
- Group_Control_Background::get_type(),
459
  [
460
- 'name' => 'premium_dual_header_second_clipped_background',
461
- 'types' => [ 'classic' , 'gradient' ],
462
  'condition' => [
463
  'premium_dual_header_second_back_clip' => 'clipped'
464
  ],
465
- 'selector' => '{{WRAPPER}} .premium-dual-header-second-header'
466
  ]
467
  );
468
 
469
- $this->add_control('premium_dual_header_second_stroke',
470
  [
471
- 'label' => __('Stroke', 'premium-addons-for-elementor'),
472
- 'type' => Controls_Manager::SWITCHER,
473
- 'condition' => [
474
- 'premium_dual_header_second_back_clip' => 'clipped'
 
475
  ],
 
 
 
476
  ]
477
  );
478
 
@@ -504,6 +520,20 @@ class Premium_Dual_Header extends Widget_Base {
504
  ]
505
  );
506
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
507
  /*Second Border*/
508
  $this->add_group_control(
509
  Group_Control_Border::get_type(),
271
  ]
272
  );
273
 
274
+ $this->add_control('premium_dual_header_first_stroke',
 
 
275
  [
276
+ 'label' => __('Stroke', 'premium-addons-for-elementor'),
277
+ 'type' => Controls_Manager::SWITCHER,
278
  'condition' => [
279
  'premium_dual_header_first_back_clip' => 'clipped'
280
  ],
 
281
  ]
282
  );
283
 
284
+ $this->add_control('premium_dual_header_first_stroke_text_color',
285
  [
286
+ 'label' => __('Stroke Text Color', 'premium-addons-for-elementor'),
287
+ 'type' => Controls_Manager::COLOR,
288
+ 'condition' => [
289
+ 'premium_dual_header_first_back_clip' => 'clipped',
290
+ 'premium_dual_header_first_stroke' => 'yes'
291
  ],
292
+ 'selectors' => [
293
+ '{{WRAPPER}} .premium-dual-header-first-clip.stroke .premium-dual-header-first-span' => '-webkit-text-stroke-color: {{VALUE}};'
294
+ ]
295
  ]
296
  );
297
 
323
  ]
324
  );
325
 
326
+ /*First Clip*/
327
+ $this->add_group_control(
328
+ Group_Control_Background::get_type(),
329
+ [
330
+ 'name' => 'premium_dual_header_first_clipped_background',
331
+ 'types' => [ 'classic' , 'gradient' ],
332
+ 'condition' => [
333
+ 'premium_dual_header_first_back_clip' => 'clipped',
334
+ 'premium_dual_header_first_stroke!' => 'yes'
335
+ ],
336
+ 'selector' => '{{WRAPPER}} .premium-dual-header-first-span'
337
+ ]
338
+ );
339
+
340
  /*First Border*/
341
  $this->add_group_control(
342
  Group_Control_Border::get_type(),
468
  ]
469
  );
470
 
471
+ $this->add_control('premium_dual_header_second_stroke',
 
 
472
  [
473
+ 'label' => __('Stroke', 'premium-addons-for-elementor'),
474
+ 'type' => Controls_Manager::SWITCHER,
475
  'condition' => [
476
  'premium_dual_header_second_back_clip' => 'clipped'
477
  ],
 
478
  ]
479
  );
480
 
481
+ $this->add_control('premium_dual_header_second_stroke_text_color',
482
  [
483
+ 'label' => __('Stroke Text Color', 'premium-addons-for-elementor'),
484
+ 'type' => Controls_Manager::COLOR,
485
+ 'condition' => [
486
+ 'premium_dual_header_second_back_clip' => 'clipped',
487
+ 'premium_dual_header_second_stroke' => 'yes'
488
  ],
489
+ 'selectors' => [
490
+ '{{WRAPPER}} .premium-dual-header-second-clip.stroke' => '-webkit-text-stroke-color: {{VALUE}};'
491
+ ]
492
  ]
493
  );
494
 
520
  ]
521
  );
522
 
523
+ /*Second Clip*/
524
+ $this->add_group_control(
525
+ Group_Control_Background::get_type(),
526
+ [
527
+ 'name' => 'premium_dual_header_second_clipped_background',
528
+ 'types' => [ 'classic' , 'gradient' ],
529
+ 'condition' => [
530
+ 'premium_dual_header_second_back_clip' => 'clipped',
531
+ 'premium_dual_header_second_stroke!' => 'yes'
532
+ ],
533
+ 'selector' => '{{WRAPPER}} .premium-dual-header-second-header'
534
+ ]
535
+ );
536
+
537
  /*Second Border*/
538
  $this->add_group_control(
539
  Group_Control_Border::get_type(),
widgets/premium-grid.php CHANGED
@@ -82,8 +82,35 @@ class Premium_Grid extends Widget_Base {
82
  'default' => 'fitRows',
83
  ]
84
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
 
86
- $this->add_control('premium_gallery_metro_fit',
87
  [
88
  'label' => __('Images Fit', 'premium-addons-for-elementor'),
89
  'type' => Controls_Manager::SELECT,
@@ -93,10 +120,10 @@ class Premium_Grid extends Widget_Base {
93
  ],
94
  'default' => 'fill',
95
  'selectors' => [
96
- '{{WRAPPER}} .premium-img-gallery-metro .pa-gallery-image' => 'object-fit: {{VALUE}}'
97
  ],
98
  'condition' => [
99
- 'premium_gallery_img_size_select' => 'metro'
100
  ]
101
  ]
102
  );
82
  'default' => 'fitRows',
83
  ]
84
  );
85
+
86
+ $this->add_responsive_control('pemium_gallery_even_img_height',
87
+ [
88
+ 'label' => __( 'Maximum Height', 'premium-addons-for-elementor' ),
89
+ 'label_block' => true,
90
+ 'size_units' => ['px', 'em', 'vh'],
91
+ 'description' => __('You may need to click `Apply` button after settings this option', 'premium-addons-for-elementor'),
92
+ 'type' => Controls_Manager::SLIDER,
93
+ 'range' => [
94
+ 'px' => [
95
+ 'min' => 1,
96
+ 'max' => 500,
97
+ ],
98
+ 'em' => [
99
+ 'min' => 1,
100
+ 'max' => 50,
101
+ ],
102
+ ],
103
+ 'render_type' => 'template',
104
+ 'condition' => [
105
+ 'premium_gallery_img_size_select' => 'fitRows'
106
+ ],
107
+ 'selectors' => [
108
+ '{{WRAPPER}} .premium-gallery-item .pa-gallery-image' => 'max-height: {{SIZE}}{{UNIT}}'
109
+ ]
110
+ ]
111
+ );
112
 
113
+ $this->add_control('premium_gallery_images_fit',
114
  [
115
  'label' => __('Images Fit', 'premium-addons-for-elementor'),
116
  'type' => Controls_Manager::SELECT,
120
  ],
121
  'default' => 'fill',
122
  'selectors' => [
123
+ '{{WRAPPER}} .premium-gallery-item .pa-gallery-image' => 'object-fit: {{VALUE}}'
124
  ],
125
  'condition' => [
126
+ 'premium_gallery_img_size_select' => [ 'metro', 'fitRows' ]
127
  ]
128
  ]
129
  );