Premium Addons for Elementor - Version 3.9.9

Version Description

  • Tweak: Added Image Size option for featured image in Blog widget.
  • Tweak: Added Tooltips option for Feature List in Pricing Table widget.
  • Tweak: Select between Image/Icon in Image Separator widget.
  • Tweak: Added responsive controls for Gutter option in Image Separator widget.
Download this release

Release Info

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

Code changes from version 3.9.8 to 3.9.9

assets/frontend/css/premium-addons.css CHANGED
@@ -963,6 +963,13 @@ a.premium-image-separator-link:hover, a.premium-image-separator-link:visited, a.
963
  .premium-image-separator-container .img-responsive {
964
  display: inline-block;
965
  }
 
 
 
 
 
 
 
966
  /**************** Premium Modal Box ****************/
967
  /***************************************************/
968
  .premium-modal-box-button-selector, .premium-modal-box-modal-lower-close {
@@ -2491,6 +2498,31 @@ ul.premium-person-social-list {
2491
  -ms-flex-align: center;
2492
  align-items: center;
2493
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2494
  .premium-pricing-slashed-price-value {
2495
  display: inline-block;
2496
  font-size: 20px;
963
  .premium-image-separator-container .img-responsive {
964
  display: inline-block;
965
  }
966
+ .premium-image-separator-container i {
967
+ padding: 0.1em;
968
+ -webkit-transition: all 0.3s ease-in-out;
969
+ -moz-transition: all 0.3s ease-in-out;
970
+ -ms-transition: all 0.3s ease-in-out;
971
+ transition: all 0.3s ease-in-out;
972
+ }
973
  /**************** Premium Modal Box ****************/
974
  /***************************************************/
975
  .premium-modal-box-button-selector, .premium-modal-box-modal-lower-close {
2498
  -ms-flex-align: center;
2499
  align-items: center;
2500
  }
2501
+ .premium-pricing-list .premium-pricing-list-span {
2502
+ position: relative;
2503
+ }
2504
+ .premium-pricing-list .list-item-tooltip {
2505
+ border-bottom: 1px dotted;
2506
+ }
2507
+ .premium-pricing-list .premium-pricing-list-tooltip {
2508
+ position: absolute;
2509
+ top: calc(100% + 1px);
2510
+ left: 0;
2511
+ visibility: hidden;
2512
+ padding: 15px 20px;
2513
+ border-radius: 5px;
2514
+ min-width: 200px;
2515
+ overflow: hidden;
2516
+ text-align: left;
2517
+ font-size: .8rem;
2518
+ color: #fff;
2519
+ background-color: #aaa;
2520
+ }
2521
+ .premium-pricing-list-span:hover .premium-pricing-list-tooltip {
2522
+ z-index: 99;
2523
+ visibility: visible;
2524
+ opacity: 1;
2525
+ }
2526
  .premium-pricing-slashed-price-value {
2527
  display: inline-block;
2528
  font-size: 20px;
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.9.8
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.9.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.9.7');
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.9.9
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.9.9');
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.9.8');
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.9.8
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
@@ -175,6 +175,13 @@ Premium Addons for Elementor is 100% Ads Free, Ads can only be detected from You
175
 
176
  == Changelog ==
177
 
 
 
 
 
 
 
 
178
  = 3.9.8 =
179
 
180
  - Tweak: Added `Margin` option for title, description and button in Banner widget.
5
  Requires at Least: 4.5
6
  Tested Up To: 5.3
7
  Requires PHP: 5.4
8
+ Stable Tag: 3.9.9
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
175
 
176
  == Changelog ==
177
 
178
+ = 3.9.9 =
179
+
180
+ - Tweak: Added `Image Size` option for featured image in Blog widget.
181
+ - Tweak: Added `Tooltips` option for Feature List in Pricing Table widget.
182
+ - Tweak: Select between Image/Icon in Image Separator widget.
183
+ - Tweak: Added responsive controls for `Gutter` option in Image Separator widget.
184
+
185
  = 3.9.8 =
186
 
187
  - Tweak: Added `Margin` option for title, description and button in Banner widget.
widgets/premium-blog.php CHANGED
@@ -5,6 +5,7 @@ namespace PremiumAddons\Widgets;
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;
10
  use Elementor\Group_Control_Border;
@@ -65,10 +66,18 @@ class Premium_Blog extends Widget_Base {
65
 
66
  $this->start_controls_section('premium_blog_general_settings',
67
  [
68
- 'label' => __('Image', 'premium-addons-for-elementor'),
69
  ]
70
  );
71
 
 
 
 
 
 
 
 
 
72
  $this->add_control('premium_blog_hover_image_effect',
73
  [
74
  'label' => __('Hover Effect', 'premium-addons-for-elementor'),
@@ -1780,10 +1789,19 @@ class Premium_Blog extends Widget_Base {
1780
 
1781
  $skin = $settings['premium_blog_skin'];
1782
 
 
 
 
 
 
 
 
 
 
1783
  if( 'classic' !== $skin ): ?>
1784
  <a href="<?php the_permalink(); ?>" target="<?php echo esc_attr( $target ); ?>">
1785
  <?php endif;
1786
- the_post_thumbnail( 'full' );
1787
  if( 'classic' !== $skin ): ?>
1788
  </a>
1789
  <?php endif;
5
  use PremiumAddons\Helper_Functions;
6
  use Elementor\Widget_Base;
7
  use Elementor\Controls_Manager;
8
+ use Elementor\Group_Control_Image_Size;
9
  use Elementor\Scheme_Color;
10
  use Elementor\Scheme_Typography;
11
  use Elementor\Group_Control_Border;
66
 
67
  $this->start_controls_section('premium_blog_general_settings',
68
  [
69
+ 'label' => __('Featured Image', 'premium-addons-for-elementor'),
70
  ]
71
  );
72
 
73
+ $this->add_group_control(
74
+ Group_Control_Image_Size::get_type(),
75
+ [
76
+ 'name' => 'featured_image',
77
+ 'default' => 'full'
78
+ ]
79
+ );
80
+
81
  $this->add_control('premium_blog_hover_image_effect',
82
  [
83
  'label' => __('Hover Effect', 'premium-addons-for-elementor'),
1789
 
1790
  $skin = $settings['premium_blog_skin'];
1791
 
1792
+ $settings['featured_image'] = [
1793
+ 'id' => get_post_thumbnail_id(),
1794
+ ];
1795
+
1796
+ $thumbnail_html = Group_Control_Image_Size::get_attachment_image_html( $settings, 'featured_image' );
1797
+
1798
+ if( empty( $thumbnail_html ) )
1799
+ return;
1800
+
1801
  if( 'classic' !== $skin ): ?>
1802
  <a href="<?php the_permalink(); ?>" target="<?php echo esc_attr( $target ); ?>">
1803
  <?php endif;
1804
+ echo $thumbnail_html;
1805
  if( 'classic' !== $skin ): ?>
1806
  </a>
1807
  <?php endif;
widgets/premium-image-separator.php CHANGED
@@ -9,7 +9,10 @@ use Elementor\Widget_Base;
9
  use Elementor\Utils;
10
  use Elementor\Control_Media;
11
  use Elementor\Controls_Manager;
 
 
12
  use Elementor\Group_Control_Css_Filter;
 
13
 
14
  if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
15
 
@@ -57,59 +60,90 @@ class Premium_Image_Separator extends Widget_Base {
57
  ]
58
  );
59
 
60
- /*Separator Image*/
 
 
 
 
 
 
 
 
 
 
 
61
  $this->add_control('premium_image_separator_image',
62
- [
63
- 'label' => __('Image', 'premium-addons-for-elementor'),
64
- 'type' => Controls_Manager::MEDIA,
65
- 'dynamic' => [ 'active' => true ],
66
- 'default' => [
67
- 'url' => Utils::get_placeholder_image_src(),
68
- ],
69
- 'description' => __('Choose the separator image', 'premium-addons-for-elementor' ),
70
- 'label_block' => true
71
- ]
72
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
 
74
- /*Separator Image Size*/
75
  $this->add_responsive_control('premium_image_separator_image_size',
76
- [
77
- 'label' => __('Image Size', 'premium-addons-for-elementor'),
78
- 'type' => Controls_Manager::SLIDER,
79
- 'size_units' => ['px', '%', "em"],
80
- 'default' => [
81
- 'unit' => 'px',
82
- 'size' => 200,
 
 
 
 
 
83
  ],
84
- 'range' => [
85
- 'px' => [
86
- 'min' => 1,
87
- 'max' => 800,
88
- ],
89
  ],
90
- 'selectors' => [
91
- '{{WRAPPER}} .premium-image-separator-container img' => 'width: {{SIZE}}{{UNIT}};'
92
- ]
93
- ]
94
- );
 
 
 
95
 
96
- /*Separator Image Gutter*/
97
- $this->add_control('premium_image_separator_image_gutter',
98
- [
99
- 'label' => __('Image Gutter (%)', 'premium-addons-for-elementor'),
100
- 'type' => Controls_Manager::NUMBER,
101
- 'default' => -50,
102
- 'description' => __('-50% is default. Increase to push the image outside or decrease to pull the image inside.','premium-addons-for-elementor'),
103
- 'selectors' => [
104
- '{{WRAPPER}} .premium-image-separator-container' => 'transform: translateY( {{VALUE}}% );'
105
-
106
- ]
107
- ]
108
- );
109
 
110
  $this->add_control('premium_image_separator_image_align',
111
  [
112
- 'label' => __('Image Alignment', 'premium-addons-for-elementor'),
113
  'type' => Controls_Manager::CHOOSE,
114
  'options' => [
115
  'left' => [
@@ -228,7 +262,7 @@ class Premium_Image_Separator extends Widget_Base {
228
  /*Start Style Section*/
229
  $this->start_controls_section('premium_image_separator_style',
230
  [
231
- 'label' => __('Image', 'premium-addons-for-elementor'),
232
  'tab' => Controls_Manager::TAB_STYLE,
233
  ]
234
  );
@@ -237,11 +271,117 @@ class Premium_Image_Separator extends Widget_Base {
237
  Group_Control_Css_Filter::get_type(),
238
  [
239
  'name' => 'css_filters',
240
- 'selector' => '{{WRAPPER}} .premium-image-separator-container img',
 
 
 
241
  ]
242
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
243
 
244
- /*End Style Section*/
245
  $this->end_controls_section();
246
 
247
  }
@@ -254,16 +394,20 @@ class Premium_Image_Separator extends Widget_Base {
254
 
255
  $link_url = ( 'url' == $link_type ) ? $settings['premium_image_separator_image_link'] : get_permalink( $settings['premium_image_separator_existing_page'] );
256
 
257
- $alt = esc_attr( Control_Media::get_image_alt( $settings['premium_image_separator_image'] ) );
 
258
  ?>
259
 
260
  <div class="premium-image-separator-container">
261
-
262
- <img class="img-responsive" src="<?php echo $settings['premium_image_separator_image']['url']; ?>" alt="<?php echo $alt; ?>">
263
- <?php if ( $settings['premium_image_separator_link_switcher'] == 'yes' ) : ?>
264
- <a class="premium-image-separator-link" href="<?php echo $link_url; ?>" target="_<?php echo $settings['premium_image_separator_link_target']; ?>" title="<?php echo $settings['premium_image_separator_image_link_text']; ?>">
265
- </a>
266
- <?php endif;?>
 
 
 
267
  </div>
268
  <?php
269
  }
@@ -273,8 +417,6 @@ class Premium_Image_Separator extends Widget_Base {
273
  <#
274
  var linkType = settings.premium_image_separator_link_type,
275
 
276
- imgUrl = settings.premium_image_separator_image.url,
277
-
278
  linkSwitch = settings.premium_image_separator_link_switcher,
279
 
280
  linkTarget = settings.premium_image_separator_link_target,
@@ -282,17 +424,24 @@ class Premium_Image_Separator extends Widget_Base {
282
  linkTitle = settings.premium_image_separator_image_link_text,
283
 
284
  linkUrl = ( 'url' == linkType ) ? settings.premium_image_separator_image_link : settings.premium_image_separator_existing_page;
 
 
 
 
 
 
 
285
  #>
286
 
287
  <div class="premium-image-separator-container">
288
- <img alt="image separator" class="img-responsive" src="{{ imgUrl }}">
289
- <#
290
- if( 'yes' == linkSwitch ) { #>
291
-
 
 
292
  <a class="premium-image-separator-link" href="{{ linkUrl }}" target="_{{ linkTarget }}" title="{{ linkTitle }}"></a>
293
-
294
- <# }
295
- #>
296
  </div>
297
 
298
  <?php
9
  use Elementor\Utils;
10
  use Elementor\Control_Media;
11
  use Elementor\Controls_Manager;
12
+ use Elementor\Scheme_Color;
13
+ use Elementor\Icons_Manager;
14
  use Elementor\Group_Control_Css_Filter;
15
+ use Elementor\Group_Control_Text_Shadow;
16
 
17
  if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
18
 
60
  ]
61
  );
62
 
63
+ $this->add_control('separator_type',
64
+ [
65
+ 'label' => __( 'Separator Type', 'premium-addons-for-elementor' ),
66
+ 'type' => Controls_Manager::SELECT,
67
+ 'options' => [
68
+ 'image' => __( 'Image', 'premium-addons-for-elementor'),
69
+ 'icon' => __('Icon', 'premium-addons-for-elementor')
70
+ ],
71
+ 'default' => 'image'
72
+ ]
73
+ );
74
+
75
  $this->add_control('premium_image_separator_image',
76
+ [
77
+ 'label' => __('Image', 'premium-addons-for-elementor'),
78
+ 'description' => __('Choose the separator image', 'premium-addons-for-elementor' ),
79
+ 'type' => Controls_Manager::MEDIA,
80
+ 'dynamic' => [ 'active' => true ],
81
+ 'default' => [
82
+ 'url' => Utils::get_placeholder_image_src(),
83
+ ],
84
+ 'label_block' => true,
85
+ 'condition' => [
86
+ 'separator_type' => 'image'
87
+ ]
88
+ ]
89
+ );
90
+
91
+ $this->add_control('separator_icon',
92
+ [
93
+ 'label' => __( 'Select an Icon', 'premium-addons-for-elementor' ),
94
+ 'type' => Controls_Manager::ICONS,
95
+ 'default' => [
96
+ 'value' => 'fas fa-grip-lines',
97
+ 'library' => 'fa-solid',
98
+ ],
99
+ 'condition' => [
100
+ 'separator_type' => 'icon'
101
+ ]
102
+ ]
103
+ );
104
 
 
105
  $this->add_responsive_control('premium_image_separator_image_size',
106
+ [
107
+ 'label' => __('Size', 'premium-addons-for-elementor'),
108
+ 'type' => Controls_Manager::SLIDER,
109
+ 'size_units' => ['px', 'em', '%'],
110
+ 'default' => [
111
+ 'unit' => 'px',
112
+ 'size' => 200,
113
+ ],
114
+ 'range' => [
115
+ 'px' => [
116
+ 'min' => 1,
117
+ 'max' => 800,
118
  ],
119
+ 'em' => [
120
+ 'min' => 1,
121
+ 'max' => 30,
 
 
122
  ],
123
+ ],
124
+ 'selectors' => [
125
+ '{{WRAPPER}} .premium-image-separator-container img' => 'width: {{SIZE}}{{UNIT}}',
126
+ '{{WRAPPER}} .premium-image-separator-container i' => 'font-size: {{SIZE}}{{UNIT}}',
127
+ '{{WRAPPER}} .premium-image-separator-container svg' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}}'
128
+ ]
129
+ ]
130
+ );
131
 
132
+ $this->add_responsive_control('premium_image_separator_image_gutter',
133
+ [
134
+ 'label' => __('Gutter (%)', 'premium-addons-for-elementor'),
135
+ 'type' => Controls_Manager::NUMBER,
136
+ 'default' => -50,
137
+ 'description' => __('-50% is default. Increase to push the image outside or decrease to pull the image inside.','premium-addons-for-elementor'),
138
+ 'selectors' => [
139
+ '{{WRAPPER}} .premium-image-separator-container' => 'transform: translateY( {{VALUE}}% );'
140
+ ]
141
+ ]
142
+ );
 
 
143
 
144
  $this->add_control('premium_image_separator_image_align',
145
  [
146
+ 'label' => __('Alignment', 'premium-addons-for-elementor'),
147
  'type' => Controls_Manager::CHOOSE,
148
  'options' => [
149
  'left' => [
262
  /*Start Style Section*/
263
  $this->start_controls_section('premium_image_separator_style',
264
  [
265
+ 'label' => __('Separator', 'premium-addons-for-elementor'),
266
  'tab' => Controls_Manager::TAB_STYLE,
267
  ]
268
  );
271
  Group_Control_Css_Filter::get_type(),
272
  [
273
  'name' => 'css_filters',
274
+ 'selector' => '{{WRAPPER}} .premium-image-separator-container img',
275
+ 'condition' => [
276
+ 'separator_type' => 'image'
277
+ ]
278
  ]
279
+ );
280
+
281
+ $this->add_control('icon_color',
282
+ [
283
+ 'label' => __( 'Color', 'premium-addons-for-elementor' ),
284
+ 'type' => Controls_Manager::COLOR,
285
+ 'scheme' => [
286
+ 'type' => Scheme_Color::get_type(),
287
+ 'value' => Scheme_Color::COLOR_1,
288
+ ],
289
+ 'selectors' => [
290
+ '{{WRAPPER}} .premium-image-separator-container i' => 'color: {{VALUE}}'
291
+ ],
292
+ 'condition' => [
293
+ 'separator_type' => 'icon'
294
+ ]
295
+ ]
296
+ );
297
+
298
+ $this->add_control('icon_hover_color',
299
+ [
300
+ 'label' => __( 'Hover Color', 'premium-addons-for-elementor' ),
301
+ 'type' => Controls_Manager::COLOR,
302
+ 'scheme' => [
303
+ 'type' => Scheme_Color::get_type(),
304
+ 'value' => Scheme_Color::COLOR_1,
305
+ ],
306
+ 'selectors' => [
307
+ '{{WRAPPER}} .premium-image-separator-container i:hover' => 'color: {{VALUE}}'
308
+ ],
309
+ 'condition' => [
310
+ 'separator_type' => 'icon'
311
+ ]
312
+ ]
313
+ );
314
+
315
+ $this->add_control('icon_background_color',
316
+ [
317
+ 'label' => __( 'Background Color', 'premium-addons-for-elementor' ),
318
+ 'type' => Controls_Manager::COLOR,
319
+ 'scheme' => [
320
+ 'type' => Scheme_Color::get_type(),
321
+ 'value' => Scheme_Color::COLOR_2,
322
+ ],
323
+ 'selectors' => [
324
+ '{{WRAPPER}} .premium-image-separator-container i' => 'background-color: {{VALUE}}'
325
+ ],
326
+ 'condition' => [
327
+ 'separator_type' => 'icon'
328
+ ]
329
+ ]
330
+ );
331
+
332
+ $this->add_control('icon_hover_background_color',
333
+ [
334
+ 'label' => __( 'Hover Background Color', 'premium-addons-for-elementor' ),
335
+ 'type' => Controls_Manager::COLOR,
336
+ 'scheme' => [
337
+ 'type' => Scheme_Color::get_type(),
338
+ 'value' => Scheme_Color::COLOR_2,
339
+ ],
340
+ 'selectors' => [
341
+ '{{WRAPPER}} .premium-image-separator-container i:hover' => 'background-color: {{VALUE}}'
342
+ ],
343
+ 'condition' => [
344
+ 'separator_type' => 'icon'
345
+ ]
346
+ ]
347
+ );
348
+
349
+ $this->add_responsive_control('separator_border_radius',
350
+ [
351
+ 'label' => __('Border Radius', 'premium-addons-for-elementor'),
352
+ 'type' => Controls_Manager::DIMENSIONS,
353
+ 'size_units' => ['px', 'em', '%'],
354
+ 'selectors' => [
355
+ '{{WRAPPER}} .premium-image-separator-container i, {{WRAPPER}} .premium-image-separator-container img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}'
356
+ ],
357
+ ]
358
+ );
359
+
360
+ $this->add_group_control(
361
+ Group_Control_Text_Shadow::get_type(),
362
+ [
363
+ 'name' => 'separator_shadow',
364
+ 'selector' => '{{WRAPPER}} .premium-image-separator-container i',
365
+ 'condition' => [
366
+ 'separator_type' => 'icon'
367
+ ]
368
+ ]
369
+ );
370
+
371
+ $this->add_responsive_control('icon_padding',
372
+ [
373
+ 'label' => __('Padding', 'premium-addons-for-elementor'),
374
+ 'type' => Controls_Manager::DIMENSIONS,
375
+ 'size_units' => ['px', 'em', '%'],
376
+ 'selectors' => [
377
+ '{{WRAPPER}} .premium-image-separator-container i' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}'
378
+ ],
379
+ 'condition' => [
380
+ 'separator_type' => 'icon'
381
+ ]
382
+ ]
383
+ );
384
 
 
385
  $this->end_controls_section();
386
 
387
  }
394
 
395
  $link_url = ( 'url' == $link_type ) ? $settings['premium_image_separator_image_link'] : get_permalink( $settings['premium_image_separator_existing_page'] );
396
 
397
+ if( 'image' === $settings['separator_type'] )
398
+ $alt = esc_attr( Control_Media::get_image_alt( $settings['premium_image_separator_image'] ) );
399
  ?>
400
 
401
  <div class="premium-image-separator-container">
402
+ <?php if( 'image' === $settings['separator_type'] ) : ?>
403
+ <img class="img-responsive" src="<?php echo $settings['premium_image_separator_image']['url']; ?>" alt="<?php echo $alt; ?>">
404
+ <?php else:
405
+ Icons_Manager::render_icon( $settings['separator_icon'], [ 'aria-hidden' => 'true' ] );
406
+ endif;
407
+ if ( $settings['premium_image_separator_link_switcher'] == 'yes' ) : ?>
408
+ <a class="premium-image-separator-link" href="<?php echo $link_url; ?>" target="_<?php echo $settings['premium_image_separator_link_target']; ?>" title="<?php echo $settings['premium_image_separator_image_link_text']; ?>">
409
+ </a>
410
+ <?php endif; ?>
411
  </div>
412
  <?php
413
  }
417
  <#
418
  var linkType = settings.premium_image_separator_link_type,
419
 
 
 
420
  linkSwitch = settings.premium_image_separator_link_switcher,
421
 
422
  linkTarget = settings.premium_image_separator_link_target,
424
  linkTitle = settings.premium_image_separator_image_link_text,
425
 
426
  linkUrl = ( 'url' == linkType ) ? settings.premium_image_separator_image_link : settings.premium_image_separator_existing_page;
427
+
428
+ if( 'image' === settings.separator_type ) {
429
+ var imgUrl = settings.premium_image_separator_image.url;
430
+ } else {
431
+ var iconHTML = elementor.helpers.renderIcon( view, settings.separator_icon, { 'aria-hidden': true }, 'i' , 'object' );
432
+ }
433
+
434
  #>
435
 
436
  <div class="premium-image-separator-container">
437
+ <# if( 'image' === settings.separator_type ) { #>
438
+ <img alt="image separator" class="img-responsive" src="{{ imgUrl }}">
439
+ <# } else { #>
440
+ {{{ iconHTML.value }}}
441
+ <# }
442
+ if( 'yes' == linkSwitch ) { #>
443
  <a class="premium-image-separator-link" href="{{ linkUrl }}" target="_{{ linkTarget }}" title="{{ linkTitle }}"></a>
444
+ <# } #>
 
 
445
  </div>
446
 
447
  <?php
widgets/premium-modalbox.php CHANGED
@@ -674,26 +674,26 @@ class Premium_Modalbox extends Widget_Base {
674
 
675
  $this->add_group_control(
676
  Group_Control_Box_Shadow::get_type(),
677
- [
678
- 'label' => __('Shadow','premium-addons-for-elementor'),
679
- 'name' => 'premium_modal_box_selector_box_shadow',
680
- 'selector' => '{{WRAPPER}} .premium-modal-box-button-selector, {{WRAPPER}} .premium-modal-box-img-selector',
681
- 'condition' => [
682
- 'premium_modal_box_display_on' => [ 'button', 'image' ],
683
- ]
684
  ]
685
- );
 
686
 
687
  $this->add_group_control(
688
  Group_Control_Text_Shadow::get_type(),
689
- [
690
- 'name' => 'premium_modal_box_selector_text_shadow',
691
- 'selector' => '{{WRAPPER}} .premium-modal-box-text-selector',
692
- 'condition' => [
693
- 'premium_modal_box_display_on' => 'text',
694
- ]
695
  ]
696
- );
 
697
 
698
  $this->end_controls_tab();
699
 
674
 
675
  $this->add_group_control(
676
  Group_Control_Box_Shadow::get_type(),
677
+ [
678
+ 'label' => __('Shadow','premium-addons-for-elementor'),
679
+ 'name' => 'premium_modal_box_selector_box_shadow',
680
+ 'selector' => '{{WRAPPER}} .premium-modal-box-button-selector, {{WRAPPER}} .premium-modal-box-img-selector',
681
+ 'condition' => [
682
+ 'premium_modal_box_display_on' => [ 'button', 'image' ],
 
683
  ]
684
+ ]
685
+ );
686
 
687
  $this->add_group_control(
688
  Group_Control_Text_Shadow::get_type(),
689
+ [
690
+ 'name' => 'premium_modal_box_selector_text_shadow',
691
+ 'selector' => '{{WRAPPER}} .premium-modal-box-text-selector',
692
+ 'condition' => [
693
+ 'premium_modal_box_display_on' => 'text',
 
694
  ]
695
+ ]
696
+ );
697
 
698
  $this->end_controls_tab();
699
 
widgets/premium-pricing-table.php CHANGED
@@ -187,15 +187,14 @@ class Premium_Pricing_Table extends Widget_Base {
187
 
188
  $this->end_controls_section();
189
 
190
- /*Icon List Content Section*/
191
  $this->start_controls_section('premium_pricing_table_list_section',
192
- [
193
- 'label' => __('Feature List', 'premium-addons-for-elementor'),
194
- 'condition' => [
195
- 'premium_pricing_table_list_switcher' => 'yes',
196
- ]
197
- ]
198
- );
199
 
200
  $repeater = new REPEATER();
201
 
@@ -220,6 +219,25 @@ class Premium_Pricing_Table extends Widget_Base {
220
  ],
221
  ]
222
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
 
224
  $this->add_control('premium_fancy_text_list_items',
225
  [
@@ -479,11 +497,11 @@ class Premium_Pricing_Table extends Widget_Base {
479
  );
480
 
481
  $this->add_control('premium_pricing_table_icon_switcher',
482
- [
483
- 'label' => __('Icon', 'premium-addons-for-elementor'),
484
- 'type' => Controls_Manager::SWITCHER,
485
- ]
486
- );
487
 
488
  $this->add_control('premium_pricing_table_title_switcher',
489
  [
@@ -1112,10 +1130,8 @@ class Premium_Pricing_Table extends Widget_Base {
1112
  ]
1113
  );
1114
 
1115
- /*End Price Style Settings */
1116
  $this->end_controls_section();
1117
 
1118
- /*Start List Style Settings*/
1119
  $this->start_controls_section('premium_pricing_list_style_settings',
1120
  [
1121
  'label' => __('Features', 'premium-addons-for-elementor'),
@@ -1279,6 +1295,97 @@ class Premium_Pricing_Table extends Widget_Base {
1279
  ]);
1280
 
1281
  $this->end_controls_section();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1282
 
1283
  /*Start Description Style Settings */
1284
  $this->start_controls_section('premium_pricing_description_style_settings',
@@ -1963,8 +2070,16 @@ class Premium_Pricing_Table extends Widget_Base {
1963
  Icons_Manager::render_icon( $item['premium_pricing_list_item_icon_updated'], [ 'aria-hidden' => 'true' ] );
1964
  else: ?>
1965
  <i class="<?php echo $item['premium_pricing_list_item_icon']; ?>"></i>
 
 
 
 
 
 
 
 
 
1966
  <?php endif; ?>
1967
- <span class="premium-pricing-list-span"><?php echo esc_html( $item['premium_pricing_list_item_text'] ); ?></span>
1968
  </li>
1969
  <?php endforeach; ?>
1970
  </ul>
@@ -2054,8 +2169,16 @@ class Premium_Pricing_Table extends Widget_Base {
2054
  {{{ listIconHTML.value }}}
2055
  <# } else { #>
2056
  <i class="{{ item.premium_pricing_list_item_icon }}" aria-hidden="true"></i>
 
 
 
 
 
 
 
 
 
2057
  <# } #>
2058
- <span class="premium-pricing-list-span">{{{ item.premium_pricing_list_item_text }}}</span>
2059
  </li>
2060
  <# } ); #>
2061
  </ul>
187
 
188
  $this->end_controls_section();
189
 
 
190
  $this->start_controls_section('premium_pricing_table_list_section',
191
+ [
192
+ 'label' => __('Feature List', 'premium-addons-for-elementor'),
193
+ 'condition' => [
194
+ 'premium_pricing_table_list_switcher' => 'yes',
195
+ ]
196
+ ]
197
+ );
198
 
199
  $repeater = new REPEATER();
200
 
219
  ],
220
  ]
221
  );
222
+
223
+ $repeater->add_control('premium_pricing_table_item_tooltip',
224
+ [
225
+ 'label' => __('Tooltip', 'premium-addons-for-elementor'),
226
+ 'type' => Controls_Manager::SWITCHER,
227
+ ]
228
+ );
229
+
230
+ $repeater->add_control('premium_pricing_table_item_tooltip_text',
231
+ [
232
+ 'label' => __('Tooltip Text', 'premium-addons-for-elementor'),
233
+ 'type' => Controls_Manager::TEXTAREA,
234
+ 'dynamic' => [ 'active' => true ],
235
+ 'default' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
236
+ 'condition' => [
237
+ 'premium_pricing_table_item_tooltip' => 'yes'
238
+ ]
239
+ ]
240
+ );
241
 
242
  $this->add_control('premium_fancy_text_list_items',
243
  [
497
  );
498
 
499
  $this->add_control('premium_pricing_table_icon_switcher',
500
+ [
501
+ 'label' => __('Icon', 'premium-addons-for-elementor'),
502
+ 'type' => Controls_Manager::SWITCHER,
503
+ ]
504
+ );
505
 
506
  $this->add_control('premium_pricing_table_title_switcher',
507
  [
1130
  ]
1131
  );
1132
 
 
1133
  $this->end_controls_section();
1134
 
 
1135
  $this->start_controls_section('premium_pricing_list_style_settings',
1136
  [
1137
  'label' => __('Features', 'premium-addons-for-elementor'),
1295
  ]);
1296
 
1297
  $this->end_controls_section();
1298
+
1299
+ $this->start_controls_section('tooltips_style',
1300
+ [
1301
+ 'label' => __('Tooltips', 'premium-addons-for-elementor'),
1302
+ 'tab' => Controls_Manager::TAB_STYLE,
1303
+ 'condition' => [
1304
+ 'premium_pricing_table_list_switcher' => 'yes',
1305
+ ]
1306
+ ]
1307
+ );
1308
+
1309
+ $this->add_responsive_control('tooltips_align',
1310
+ [
1311
+ 'label' => __( 'Alignment', 'premium-addons-for-elementor' ),
1312
+ 'type' => Controls_Manager::CHOOSE,
1313
+ 'options' => [
1314
+ 'left' => [
1315
+ 'title' => __( 'Left', 'premium-addons-for-elementor' ),
1316
+ 'icon' => 'fa fa-align-left',
1317
+ ],
1318
+ 'center' => [
1319
+ 'title' => __( 'Center', 'premium-addons-for-elementor' ),
1320
+ 'icon' => 'fa fa-align-center',
1321
+ ],
1322
+ 'right' => [
1323
+ 'title' => __( 'Right', 'premium-addons-for-elementor' ),
1324
+ 'icon' => 'fa fa-align-right',
1325
+ ],
1326
+ ],
1327
+ 'selectors' => [
1328
+ '{{WRAPPER}} .premium-pricing-list-tooltip' => 'text-align: {{VALUE}}',
1329
+ ],
1330
+ ]
1331
+ );
1332
+
1333
+ $this->add_responsive_control('tooltips_width',
1334
+ [
1335
+ 'label' => __('Width', 'premium-addons-for-elementor'),
1336
+ 'type' => Controls_Manager::SLIDER,
1337
+ 'range' => [
1338
+ 'px' => [
1339
+ 'min' => 1,
1340
+ 'min' => 400,
1341
+ ]
1342
+ ],
1343
+ 'selectors' => [
1344
+ '{{WRAPPER}} .premium-pricing-list-tooltip' => 'min-width: {{SIZE}}px;'
1345
+ ]
1346
+ ]
1347
+ );
1348
+
1349
+ $this->add_control('tooltips_color',
1350
+ [
1351
+ 'label' => __('Color', 'premium-addons-for-elementor'),
1352
+ 'type' => Controls_Manager::COLOR,
1353
+ 'selectors' => [
1354
+ '{{WRAPPER}} .premium-pricing-list-tooltip' => 'color: {{VALUE}};'
1355
+ ]
1356
+ ]
1357
+ );
1358
+
1359
+ $this->add_group_control(
1360
+ Group_Control_Typography::get_type(),
1361
+ [
1362
+ 'name' => 'tooltips_typo',
1363
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_1,
1364
+ 'selector' => '{{WRAPPER}} .premium-pricing-list-tooltip',
1365
+ ]
1366
+ );
1367
+
1368
+ $this->add_control('tooltips_background_color',
1369
+ [
1370
+ 'label' => __('Background Color', 'premium-addons-for-elementor'),
1371
+ 'type' => Controls_Manager::COLOR,
1372
+ 'selectors' => [
1373
+ '{{WRAPPER}} .premium-pricing-list-tooltip' => 'background-color: {{VALUE}};'
1374
+ ]
1375
+ ]
1376
+ );
1377
+
1378
+ $this->add_control('tooltips_border_color',
1379
+ [
1380
+ 'label' => __('Border Color', 'premium-addons-for-elementor'),
1381
+ 'type' => Controls_Manager::COLOR,
1382
+ 'selectors' => [
1383
+ '{{WRAPPER}} .list-item-tooltip' => 'border-color: {{VALUE}};'
1384
+ ]
1385
+ ]
1386
+ );
1387
+
1388
+ $this->end_controls_section();
1389
 
1390
  /*Start Description Style Settings */
1391
  $this->start_controls_section('premium_pricing_description_style_settings',
2070
  Icons_Manager::render_icon( $item['premium_pricing_list_item_icon_updated'], [ 'aria-hidden' => 'true' ] );
2071
  else: ?>
2072
  <i class="<?php echo $item['premium_pricing_list_item_icon']; ?>"></i>
2073
+ <?php endif;
2074
+ if ( ! empty( $item['premium_pricing_list_item_text'] ) ) :
2075
+ $item_class = 'yes' === $item['premium_pricing_table_item_tooltip'] ? 'list-item-tooltip' : '';
2076
+ ?>
2077
+ <span class="premium-pricing-list-span <?php echo $item_class; ?>"><?php echo esc_html( $item['premium_pricing_list_item_text'] );
2078
+ if ( 'yes' === $item['premium_pricing_table_item_tooltip'] && ! empty( $item['premium_pricing_table_item_tooltip_text'] ) ) : ?>
2079
+ <span class="premium-pricing-list-tooltip"><?php echo esc_html( $item['premium_pricing_table_item_tooltip_text'] ); ?></span>
2080
+ <?php endif; ?>
2081
+ </span>
2082
  <?php endif; ?>
 
2083
  </li>
2084
  <?php endforeach; ?>
2085
  </ul>
2169
  {{{ listIconHTML.value }}}
2170
  <# } else { #>
2171
  <i class="{{ item.premium_pricing_list_item_icon }}" aria-hidden="true"></i>
2172
+ <# }
2173
+ if ( '' !== item.premium_pricing_list_item_text ) {
2174
+ var itemClass = 'yes' === item.premium_pricing_table_item_tooltip ? 'list-item-tooltip' : '';
2175
+ #>
2176
+ <span class="premium-pricing-list-span {{itemClass}}">{{{ item.premium_pricing_list_item_text }}}
2177
+ <# if ( 'yes' === item.premium_pricing_table_item_tooltip && '' !== item.premium_pricing_table_item_tooltip_text ) { #>
2178
+ <span class="premium-pricing-list-tooltip">{{{ item.premium_pricing_table_item_tooltip_text }}}</span>
2179
+ <# } #>
2180
+ </span>
2181
  <# } #>
 
2182
  </li>
2183
  <# } ); #>
2184
  </ul>