Happy Addons for Elementor (Mega Menu, Post Grid, Woocommerce Product Grid, Table, Event Calendar, Slider Elementor Widget) - Version 1.0.5

Version Description

  • New: Happy Effects (universal widget extension)
  • New: CSS Transform (Happy Effects)
  • New: Dual Button Widget
  • Fix: Info box icon size issue
  • Fix: Icon box icon size issue
Download this release

Release Info

Developer thehappymonster
Plugin Icon 128x128 Happy Addons for Elementor (Mega Menu, Post Grid, Woocommerce Product Grid, Table, Event Calendar, Slider Elementor Widget)
Version 1.0.5
Comparing to
See all releases

Code changes from version 1.0.4 to 1.0.5

assets/admin/css/main.css CHANGED
@@ -1,10 +1,10 @@
1
- .elementor-panel #elementor-panel-category-happy_addons .elementor-element,
2
  .elementor-panel #elementor-panel-elements .happy-addons-addon {
3
  -webkit-transition: background-image .3s;
4
  transition: background-image .3s;
5
  }
6
- .elementor-panel #elementor-panel-category-happy_addons .elementor-element .icon,
7
- .elementor-panel #elementor-panel-category-happy_addons .elementor-element .title,
8
  .elementor-panel #elementor-panel-elements .happy-addons-addon .icon,
9
  .elementor-panel #elementor-panel-elements .happy-addons-addon .title {
10
  background-image: -webkit-linear-gradient(315deg, #e2498a 25%, #562dd4 100%);
@@ -15,17 +15,17 @@
15
 
16
  -webkit-text-fill-color: transparent;
17
  }
18
- .elementor-panel #elementor-panel-category-happy_addons .elementor-element:hover,
19
- .elementor-panel #elementor-panel-category-happy_addons .elementor-element:focus,
20
  .elementor-panel #elementor-panel-elements .happy-addons-addon:hover,
21
  .elementor-panel #elementor-panel-elements .happy-addons-addon:focus {
22
  background-image: -webkit-linear-gradient(315deg, #e2498a 0%, #562dd4 100%);
23
  background-image: linear-gradient(135deg, #e2498a 0%, #562dd4 100%);
24
  }
25
- .elementor-panel #elementor-panel-category-happy_addons .elementor-element:hover .icon,
26
- .elementor-panel #elementor-panel-category-happy_addons .elementor-element:hover .title,
27
- .elementor-panel #elementor-panel-category-happy_addons .elementor-element:focus .icon,
28
- .elementor-panel #elementor-panel-category-happy_addons .elementor-element:focus .title,
29
  .elementor-panel #elementor-panel-elements .happy-addons-addon:hover .icon,
30
  .elementor-panel #elementor-panel-elements .happy-addons-addon:hover .title,
31
  .elementor-panel #elementor-panel-elements .happy-addons-addon:focus .icon,
1
+ .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element,
2
  .elementor-panel #elementor-panel-elements .happy-addons-addon {
3
  -webkit-transition: background-image .3s;
4
  transition: background-image .3s;
5
  }
6
+ .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .icon,
7
+ .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .title,
8
  .elementor-panel #elementor-panel-elements .happy-addons-addon .icon,
9
  .elementor-panel #elementor-panel-elements .happy-addons-addon .title {
10
  background-image: -webkit-linear-gradient(315deg, #e2498a 25%, #562dd4 100%);
15
 
16
  -webkit-text-fill-color: transparent;
17
  }
18
+ .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover,
19
+ .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus,
20
  .elementor-panel #elementor-panel-elements .happy-addons-addon:hover,
21
  .elementor-panel #elementor-panel-elements .happy-addons-addon:focus {
22
  background-image: -webkit-linear-gradient(315deg, #e2498a 0%, #562dd4 100%);
23
  background-image: linear-gradient(135deg, #e2498a 0%, #562dd4 100%);
24
  }
25
+ .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover .icon,
26
+ .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover .title,
27
+ .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus .icon,
28
+ .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus .title,
29
  .elementor-panel #elementor-panel-elements .happy-addons-addon:hover .icon,
30
  .elementor-panel #elementor-panel-elements .happy-addons-addon:hover .title,
31
  .elementor-panel #elementor-panel-elements .happy-addons-addon:focus .icon,
assets/admin/css/main.min.css CHANGED
@@ -1 +1 @@
1
- .elementor-panel #elementor-panel-category-happy_addons .elementor-element,.elementor-panel #elementor-panel-elements .happy-addons-addon{-webkit-transition:background-image .3s;transition:background-image .3s}.elementor-panel #elementor-panel-category-happy_addons .elementor-element .icon,.elementor-panel #elementor-panel-category-happy_addons .elementor-element .title,.elementor-panel #elementor-panel-elements .happy-addons-addon .icon,.elementor-panel #elementor-panel-elements .happy-addons-addon .title{background-image:-webkit-linear-gradient(315deg,#e2498a 25%,#562dd4 100%);background-image:linear-gradient(135deg,#e2498a 25%,#562dd4 100%);-webkit-background-clip:text;-webkit-transition:background-image .2s,color .2s;transition:background-image .2s,color .2s;-webkit-text-fill-color:transparent}.elementor-panel #elementor-panel-category-happy_addons .elementor-element:focus,.elementor-panel #elementor-panel-category-happy_addons .elementor-element:hover,.elementor-panel #elementor-panel-elements .happy-addons-addon:focus,.elementor-panel #elementor-panel-elements .happy-addons-addon:hover{background-image:-webkit-linear-gradient(315deg,#e2498a 0%,#562dd4 100%);background-image:linear-gradient(135deg,#e2498a 0%,#562dd4 100%)}.elementor-panel #elementor-panel-category-happy_addons .elementor-element:focus .icon,.elementor-panel #elementor-panel-category-happy_addons .elementor-element:focus .title,.elementor-panel #elementor-panel-category-happy_addons .elementor-element:hover .icon,.elementor-panel #elementor-panel-category-happy_addons .elementor-element:hover .title,.elementor-panel #elementor-panel-elements .happy-addons-addon:focus .icon,.elementor-panel #elementor-panel-elements .happy-addons-addon:focus .title,.elementor-panel #elementor-panel-elements .happy-addons-addon:hover .icon,.elementor-panel #elementor-panel-elements .happy-addons-addon:hover .title{background:0 0;color:#fff;-webkit-text-fill-color:initial}
1
+ .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element,.elementor-panel #elementor-panel-elements .happy-addons-addon{-webkit-transition:background-image .3s;transition:background-image .3s}.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .icon,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .title,.elementor-panel #elementor-panel-elements .happy-addons-addon .icon,.elementor-panel #elementor-panel-elements .happy-addons-addon .title{background-image:-webkit-linear-gradient(315deg,#e2498a 25%,#562dd4 100%);background-image:linear-gradient(135deg,#e2498a 25%,#562dd4 100%);-webkit-background-clip:text;-webkit-transition:background-image .2s,color .2s;transition:background-image .2s,color .2s;-webkit-text-fill-color:transparent}.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover,.elementor-panel #elementor-panel-elements .happy-addons-addon:focus,.elementor-panel #elementor-panel-elements .happy-addons-addon:hover{background-image:-webkit-linear-gradient(315deg,#e2498a 0%,#562dd4 100%);background-image:linear-gradient(135deg,#e2498a 0%,#562dd4 100%)}.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus .icon,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus .title,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover .icon,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover .title,.elementor-panel #elementor-panel-elements .happy-addons-addon:focus .icon,.elementor-panel #elementor-panel-elements .happy-addons-addon:focus .title,.elementor-panel #elementor-panel-elements .happy-addons-addon:hover .icon,.elementor-panel #elementor-panel-elements .happy-addons-addon:hover .title{background:0 0;color:#fff;-webkit-text-fill-color:initial}
assets/admin/js/happy-addons.js CHANGED
@@ -1,4 +1,4 @@
1
- ;(function($, elementor) {
2
  'use strict';
3
 
4
  elementor.on('panel:init', function() {
@@ -9,4 +9,54 @@
9
  .addClass('happy-addons-addon');
10
  }, 100));
11
  });
12
- }(jQuery, window.elementor));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ;(function(elementor, $, window) {
2
  'use strict';
3
 
4
  elementor.on('panel:init', function() {
9
  .addClass('happy-addons-addon');
10
  }, 100));
11
  });
12
+
13
+ function getCssEffectsControlsMap() {
14
+ return {
15
+ 'translate' : ['x', 'y', 'x_tablet', 'y_tablet', 'x_mobile', 'y_mobile'],
16
+ 'skew' : ['x', 'y', 'x_tablet', 'y_tablet', 'x_mobile', 'y_mobile'],
17
+ 'scale': ['x', 'y', 'x_tablet', 'y_tablet', 'x_mobile', 'y_mobile'],
18
+ 'rotate' : ['x', 'y', 'z', 'x_tablet', 'y_tablet', 'z_tablet', 'x_mobile', 'y_mobile', 'z_mobile']
19
+ };
20
+ }
21
+
22
+ function bindCssTransformControls(effectSwitch, effectControl, widgetModel) {
23
+ var settingPrefix = 'ha_transform_fx_';
24
+ effectSwitch = settingPrefix + effectSwitch;
25
+ effectControl = settingPrefix + effectControl;
26
+
27
+ widgetModel.on('change:'+ effectSwitch, function(model, isActive) {
28
+ if (!isActive) {
29
+ var controlView = elementor.getPanelView().getCurrentPageView().children.find(function(view) {
30
+ return view.model.get('name') === effectControl;
31
+ });
32
+ widgetModel.set(effectControl, _.extend({}, widgetModel.defaults[effectControl]));
33
+ controlView && controlView.render();
34
+ }
35
+ });
36
+ }
37
+
38
+ function initCssTransformEffects(model) {
39
+ var widgetModel = elementorFrontend.config.elements.data[model.cid];
40
+ _.each(getCssEffectsControlsMap(), function(effectProps, effectKey) {
41
+ _.each(effectProps, function(effectProp) {
42
+ bindCssTransformControls(
43
+ effectKey + '_toggle',
44
+ effectKey + '_' + effectProp,
45
+ widgetModel
46
+ );
47
+ })
48
+ });
49
+
50
+ // Event bindings cleanup
51
+ elementor.getPanelView().getCurrentPageView().model.on('editor:close', function() {
52
+ _.each(getCssEffectsControlsMap(), function(effectConfig, effectKey) {
53
+ widgetModel.off('change:ha_transform_fx_'+effectKey+'_toggle');
54
+ });
55
+ });
56
+ }
57
+
58
+ elementor.hooks.addAction('panel/open_editor/widget', function(panel, model) {
59
+ initCssTransformEffects(model);
60
+ });
61
+
62
+ }(elementor, jQuery, window));
assets/admin/js/happy-addons.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,n){"use strict";n.on("panel:init",function(){e("#elementor-panel-elements-search-input").on("keyup",_.debounce(function(){e("#elementor-panel-elements").find(".hm").parents(".elementor-element").addClass("happy-addons-addon")},100))})}(jQuery,window.elementor);
1
+ !function(e,n,t){"use strict";function o(){return{translate:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],skew:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],scale:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],rotate:["x","y","z","x_tablet","y_tablet","z_tablet","x_mobile","y_mobile","z_mobile"]}}function a(n,t,o){n="ha_transform_fx_"+n,t="ha_transform_fx_"+t,o.on("change:"+n,function(n,a){if(!a){var l=e.getPanelView().getCurrentPageView().children.find(function(e){return e.model.get("name")===t});o.set(t,_.extend({},o.defaults[t])),l&&l.render()}})}function l(n){var t=elementorFrontend.config.elements.data[n.cid];_.each(o(),function(e,n){_.each(e,function(e){a(n+"_toggle",n+"_"+e,t)})}),e.getPanelView().getCurrentPageView().model.on("editor:close",function(){_.each(o(),function(e,n){t.off("change:ha_transform_fx_"+n+"_toggle")})})}e.on("panel:init",function(){n("#elementor-panel-elements-search-input").on("keyup",_.debounce(function(){n("#elementor-panel-elements").find(".hm").parents(".elementor-element").addClass("happy-addons-addon")},100))}),e.hooks.addAction("panel/open_editor/widget",function(e,n){l(n)})}(elementor,jQuery,window);
assets/css/main.css CHANGED
@@ -251,6 +251,13 @@
251
  width: 1em;
252
  height: 1em;
253
  }
 
 
 
 
 
 
 
254
  .ha-infobox-figure > img {
255
  width: 100%;
256
  height: 100%;
@@ -292,6 +299,7 @@
292
  transition: transform .3s, border .3s, background .3s, color .3s, -webkit-transform .3s;
293
  }
294
  .ha-icon-box-icon > i {
 
295
  display: block;
296
  width: 1em;
297
  height: 1em;
@@ -300,6 +308,13 @@
300
  transition: transform .3s;
301
  transition: transform .3s, -webkit-transform .3s;
302
  }
 
 
 
 
 
 
 
303
 
304
  .ha-icon-box-link {
305
  display: block;
@@ -593,3 +608,67 @@ span .ha-review-ratting--star:before,
593
  color: inherit;
594
  text-decoration: none;
595
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
251
  width: 1em;
252
  height: 1em;
253
  }
254
+ .ha-infobox-figure > i:before {
255
+ position: absolute;
256
+ left: 50%;
257
+ -webkit-transform: translateX(-50%);
258
+ -ms-transform: translateX(-50%);
259
+ transform: translateX(-50%);
260
+ }
261
  .ha-infobox-figure > img {
262
  width: 100%;
263
  height: 100%;
299
  transition: transform .3s, border .3s, background .3s, color .3s, -webkit-transform .3s;
300
  }
301
  .ha-icon-box-icon > i {
302
+ position: relative;
303
  display: block;
304
  width: 1em;
305
  height: 1em;
308
  transition: transform .3s;
309
  transition: transform .3s, -webkit-transform .3s;
310
  }
311
+ .ha-icon-box-icon > i:before {
312
+ position: absolute;
313
+ left: 50%;
314
+ -webkit-transform: translateX(-50%);
315
+ -ms-transform: translateX(-50%);
316
+ transform: translateX(-50%);
317
+ }
318
 
319
  .ha-icon-box-link {
320
  display: block;
608
  color: inherit;
609
  text-decoration: none;
610
  }
611
+
612
+ .ha-dual-button > .elementor-widget-container {
613
+ display: -webkit-box;
614
+ display: -webkit-flex;
615
+ display: -ms-flexbox;
616
+ display: flex;
617
+ }
618
+
619
+ .ha-dual-btn,
620
+ .ha-dual-btn-connector {
621
+ display: inline-block;
622
+ }
623
+
624
+ .ha-dual-btn-wrapper {
625
+ position: relative;
626
+ text-align: center;
627
+ font-weight: 400;
628
+ }
629
+
630
+ .ha-dual-btn {
631
+ padding: 1.2rem 3rem;
632
+ color: #fff;
633
+ text-decoration: none;
634
+ font-size: 14px;
635
+ }
636
+
637
+ .ha-dual-btn--left {
638
+ border-top-left-radius: 50px;
639
+ border-bottom-left-radius: 50px;
640
+ background-color: #3266fd;
641
+ }
642
+
643
+ .ha-dual-btn--right {
644
+ border-top-right-radius: 50px;
645
+ border-bottom-right-radius: 50px;
646
+ background-color: #27374c;
647
+ }
648
+
649
+ .ha-dual-btn-connector {
650
+ position: absolute !important;
651
+ top: 50%;
652
+ right: 0;
653
+ z-index: 9;
654
+ width: 30px;
655
+ height: 30px;
656
+ border-radius: 100%;
657
+ background-color: #fff;
658
+ box-shadow: 0 0 0 5px rgba(255, 255, 255, .3);
659
+ color: #27374c;
660
+ text-transform: uppercase;
661
+ font-size: 12px;
662
+ line-height: 30px;
663
+ -webkit-transform: translate(50%, -50%);
664
+ -ms-transform: translate(50%, -50%);
665
+ transform: translate(50%, -50%);
666
+ }
667
+
668
+ .ha-dual-btn-icon--before {
669
+ margin-right: 5px;
670
+ }
671
+
672
+ .ha-dual-btn-icon--after {
673
+ margin-left: 5px;
674
+ }
assets/css/main.min.css CHANGED
@@ -1 +1 @@
1
- .ha-card>.elementor-widget-container,.ha-icon-box>.elementor-widget-container,.ha-image-compare>.elementor-widget-container,.ha-infobox>.elementor-widget-container,.ha-member>.elementor-widget-container,.ha-review>.elementor-widget-container{border-radius:.5rem;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);word-wrap:break-word;overflow-wrap:break-word}.happy-addon,.happy-addon *{box-sizing:border-box}.happy-addon img{max-width:100%;height:auto;-o-object-fit:cover;object-fit:cover}.happy-addon p:empty{display:none}.ha-cf:after,.ha-cf:before{display:table;content:" "}.ha-cf:after{clear:both}.ha-btn{display:inline-block;vertical-align:middle;text-align:center;text-decoration:none;font-weight:700;font-size:14px;line-height:1;-webkit-transition:all .3s;transition:all .3s}.ha-btn:not(.ha-btn--link){padding:.7rem 1.3rem;border-radius:.25rem;background-color:#8c8c8c;color:#fff;text-align:center}.ha-btn:not(.ha-btn--link):focus,.ha-btn:not(.ha-btn--link):hover{background-color:#242424}.ha-btn.ha-btn--link{color:#3ca6ff}.ha-btn-icon{-webkit-transition:all .3s;transition:all .3s}.ha-btn-icon+.ha-btn-text,.ha-btn-text+.ha-btn-icon{margin-left:5px}.ha-card-figure{position:relative;height:250px}.ha-card-figure>img{border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.ha-card-body{padding:1.5rem}.ha-card-title{margin-top:0;margin-bottom:.75rem;color:#151515;font-size:24px}.ha-card-text{margin-bottom:2rem;color:#616161;font-size:16px;line-height:1.7}.ha-card-text>p,.ha-infobox-text>p{margin-top:0;margin-bottom:0}.ha-card--top .ha-card-figure,.ha-member-links>a{display:inline-block}.ha-card--left>.elementor-widget-container,.ha-card--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-card--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-card--left .ha-card-body,.ha-card--left .ha-card-figure,.ha-card--right .ha-card-body,.ha-card--right .ha-card-figure{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.ha-card--left .ha-card-body,.ha-card--right .ha-card-body{padding:2.5rem}.ha-card--left .ha-card-figure>img{border-radius:calc(.5rem - 1px) 0 0 calc(.5rem - 1px)}.ha-card--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;text-align:right}.ha-card--right .ha-card-figure>img{border-radius:0 calc(.5rem - 1px) calc(.5rem - 1px) 0}.ha-card .ha-badge{position:absolute}.ha-badge{padding:.475rem 1.1rem;border-radius:50px;background-color:#fff;font-size:12px}.ha-badge--top-left{top:1rem;left:1rem}.ha-badge--top-center{top:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--top-right{top:1rem;right:1rem}.ha-badge--middle-left{top:50%;left:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--middle-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.ha-badge--middle-right{top:50%;right:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--bottom-left{bottom:1rem;left:1rem}.ha-badge--bottom-center{bottom:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--bottom-right{right:1rem;bottom:1rem}.ha-infobox>.elementor-widget-container{padding:1.5rem}.ha-infobox-title{margin-top:0;margin-bottom:1rem;color:#151515;font-size:24px}.ha-infobox-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-infobox-figure--icon{text-align:center;font-size:3rem}.ha-infobox-figure>i{position:relative;display:block;width:1em;height:1em}.ha-card-figure>img,.ha-infobox-figure>img,.ha-member-figure img{width:100%;height:100%;vertical-align:bottom}.ha-infobox-text+.ha-btn--link{margin-top:1rem}.ha-icon-box>.elementor-widget-container{position:relative;padding:1.25rem}.ha-icon-box-title{margin-top:0;margin-bottom:0;color:#151515;font-size:24px;-webkit-transition:color .3s;transition:color .3s}.ha-icon-box-icon{display:inline-block;margin-bottom:1rem;color:#151515;text-align:center;font-size:3rem;-webkit-transition:border .3s,background .3s,color .3s,-webkit-transform .3s;transition:transform .3s,border .3s,background .3s,color .3s;transition:transform .3s,border .3s,background .3s,color .3s,-webkit-transform .3s}.ha-icon-box-icon>i{display:block;width:1em;height:1em;-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.ha-icon-box-link{display:block;color:transparent;text-decoration:none}.ha-icon-box .ha-badge{position:absolute;z-index:9999;background-color:#e2498a;color:#fff}.ha-member>.elementor-widget-container{padding:1.25rem}.ha-member-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-member-name{margin-top:0;margin-bottom:.5rem;color:#151515;font-size:18px}.ha-member-position{margin-bottom:1.5rem;color:#7f7f7f;font-size:14px}.ha-member-bio{margin-bottom:1.5rem;font-size:14px;line-height:1.6}.ha-member-links>a{color:#9895ad;text-align:center;line-height:1;-webkit-transition:all .2s;transition:all .2s}.ha-member-links>a:focus,.ha-member-links>a:hover{color:#222}.ha-member-links>a>i{width:1em;height:1em}.ha-member-links>a:not(:last-child){margin-right:.3rem}.ha-review-header{margin-top:1.5rem}.ha-review-desc p,.ha-review-figure{margin:0}.ha-review-figure>img{width:100%;height:100%;border-radius:50%;vertical-align:bottom}.ha-review-reviewer{margin-top:0;margin-bottom:.3rem;color:#151515;font-size:18px}.ha-review-position{margin-bottom:.5rem;color:#7f7f7f;font-size:15px}.ha-review-ratting{display:inline-block;font-size:12px;line-height:1}.ha-review-ratting--num{padding:.25em .66em;border-radius:2.5em;background-color:#287dfe;color:#fff}.ha-review-ratting--star{display:inline-block;color:#ffbf36;font-family:"Fontawesome"}.ha-review-ratting--star>span{position:relative;overflow:hidden;height:1em}.ha-review-ratting--star span>span{position:absolute;top:0;left:0;overflow:hidden;padding-top:1.5em}.ha-review-ratting--star span>span:before,span .ha-review-ratting--star:before{position:absolute;top:0;left:0}.ha-review-ratting--star span:before{content:"\f006\f006\f006\f006\f006"}.ha-review-ratting--star span>span:before{content:"\f005\f005\f005\f005\f005"}.ha-review-desc{margin-top:1.5rem;font-size:16px;line-height:1.6}.ha-review--top>.elementor-widget-container{padding:2rem}.ha-review--top .ha-review-figure{display:inline-block;max-width:70px;height:70px}.ha-review--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-review--left>.elementor-widget-container,.ha-review--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding-left:2rem}.ha-review--left .ha-review-figure,.ha-review--right .ha-review-figure{-webkit-box-flex:0;-webkit-flex:0 0 150px;-ms-flex:0 0 150px;flex:0 0 150px;max-width:150px;height:150px}.ha-review--left .ha-review-body,.ha-review--right .ha-review-body{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 150px);-ms-flex:0 0 calc(100% - 150px);flex:0 0 calc(100% - 150px);padding:2rem;max-width:calc(100% - 150px)}.ha-review--left .ha-review-body>:first-child,.ha-review--right .ha-review-body>:first-child{margin-top:0}.ha-review--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;padding-right:2rem;padding-left:0;text-align:right}.ha-image-compare .twentytwenty-container,.ha-image-compare .twentytwenty-wrapper{border-radius:inherit}.ha-skills>.elementor-widget-container{padding-top:1px}.ha-skill{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:#e9ecef;font-size:.75rem}.ha-skill--inside .ha-skill-info,.ha-skill--outside .ha-skill-info{text-align:left;font-size:14px}.ha-skill--inside .ha-skill-level-text,.ha-skill--outside .ha-skill-level-text{float:right}.ha-skill--outside{height:2px}.ha-skill--outside .ha-skill-level{position:relative}.ha-skill--outside .ha-skill-info{position:absolute;top:-25px;width:100%;color:#242424}.ha-skill--inside{overflow:hidden;height:30px;border-radius:.3rem}.ha-skill--inside .ha-skill-info{padding-right:1rem;padding-left:1rem;color:#fff}.ha-skill-level{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;background-color:#007bff;color:#fff;text-align:center;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.ha-skill--outside{margin-top:40px}.ha-skill--inside:not(:first-child){margin-top:20px}.ha-gradient-heading{margin-top:0;margin-bottom:0}.ha-gradient-heading>a{color:inherit;text-decoration:none}
1
+ .ha-card>.elementor-widget-container,.ha-icon-box>.elementor-widget-container,.ha-image-compare>.elementor-widget-container,.ha-infobox>.elementor-widget-container,.ha-member>.elementor-widget-container,.ha-review>.elementor-widget-container{border-radius:.5rem;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);word-wrap:break-word;overflow-wrap:break-word}.happy-addon,.happy-addon *{box-sizing:border-box}.happy-addon img{max-width:100%;height:auto;-o-object-fit:cover;object-fit:cover}.happy-addon p:empty{display:none}.ha-cf:after,.ha-cf:before{display:table;content:" "}.ha-cf:after{clear:both}.ha-btn{display:inline-block;vertical-align:middle;text-align:center;text-decoration:none;font-weight:700;font-size:14px;line-height:1;-webkit-transition:all .3s;transition:all .3s}.ha-btn:not(.ha-btn--link){padding:.7rem 1.3rem;border-radius:.25rem;background-color:#8c8c8c;color:#fff;text-align:center}.ha-btn:not(.ha-btn--link):focus,.ha-btn:not(.ha-btn--link):hover{background-color:#242424}.ha-btn.ha-btn--link{color:#3ca6ff}.ha-btn-icon{-webkit-transition:all .3s;transition:all .3s}.ha-btn-icon+.ha-btn-text,.ha-btn-text+.ha-btn-icon{margin-left:5px}.ha-card-figure{position:relative;height:250px}.ha-card-figure>img{border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.ha-card-body{padding:1.5rem}.ha-card-title{margin-top:0;margin-bottom:.75rem;color:#151515;font-size:24px}.ha-card-text{margin-bottom:2rem;color:#616161;font-size:16px;line-height:1.7}.ha-card-text>p,.ha-infobox-text>p{margin-top:0;margin-bottom:0}.ha-card--top .ha-card-figure,.ha-member-links>a{display:inline-block}.ha-card--left>.elementor-widget-container,.ha-card--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-card--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-card--left .ha-card-body,.ha-card--left .ha-card-figure,.ha-card--right .ha-card-body,.ha-card--right .ha-card-figure{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.ha-card--left .ha-card-body,.ha-card--right .ha-card-body{padding:2.5rem}.ha-card--left .ha-card-figure>img{border-radius:calc(.5rem - 1px) 0 0 calc(.5rem - 1px)}.ha-card--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;text-align:right}.ha-card--right .ha-card-figure>img{border-radius:0 calc(.5rem - 1px) calc(.5rem - 1px) 0}.ha-card .ha-badge{position:absolute}.ha-badge{padding:.475rem 1.1rem;border-radius:50px;background-color:#fff;font-size:12px}.ha-badge--top-left{top:1rem;left:1rem}.ha-badge--top-center{top:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--top-right{top:1rem;right:1rem}.ha-badge--middle-left{top:50%;left:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--middle-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.ha-badge--middle-right{top:50%;right:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--bottom-left{bottom:1rem;left:1rem}.ha-badge--bottom-center{bottom:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--bottom-right{right:1rem;bottom:1rem}.ha-infobox>.elementor-widget-container{padding:1.5rem}.ha-infobox-title{margin-top:0;margin-bottom:1rem;color:#151515;font-size:24px}.ha-infobox-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-infobox-figure--icon{text-align:center;font-size:3rem}.ha-icon-box-icon>i,.ha-infobox-figure>i{position:relative;display:block;width:1em;height:1em}.ha-icon-box-icon>i:before,.ha-infobox-figure>i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-card-figure>img,.ha-infobox-figure>img,.ha-member-figure img{width:100%;height:100%;vertical-align:bottom}.ha-infobox-text+.ha-btn--link{margin-top:1rem}.ha-icon-box>.elementor-widget-container{position:relative;padding:1.25rem}.ha-icon-box-title{margin-top:0;margin-bottom:0;color:#151515;font-size:24px;-webkit-transition:color .3s;transition:color .3s}.ha-icon-box-icon{display:inline-block;margin-bottom:1rem;color:#151515;text-align:center;font-size:3rem;-webkit-transition:border .3s,background .3s,color .3s,-webkit-transform .3s;transition:transform .3s,border .3s,background .3s,color .3s;transition:transform .3s,border .3s,background .3s,color .3s,-webkit-transform .3s}.ha-icon-box-icon>i{-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.ha-icon-box-link{display:block;color:transparent;text-decoration:none}.ha-icon-box .ha-badge{position:absolute;z-index:9999;background-color:#e2498a;color:#fff}.ha-member>.elementor-widget-container{padding:1.25rem}.ha-member-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-member-name{margin-top:0;margin-bottom:.5rem;color:#151515;font-size:18px}.ha-member-position{margin-bottom:1.5rem;color:#7f7f7f;font-size:14px}.ha-member-bio{margin-bottom:1.5rem;font-size:14px;line-height:1.6}.ha-member-links>a{color:#9895ad;text-align:center;line-height:1;-webkit-transition:all .2s;transition:all .2s}.ha-member-links>a:focus,.ha-member-links>a:hover{color:#222}.ha-member-links>a>i{width:1em;height:1em}.ha-member-links>a:not(:last-child){margin-right:.3rem}.ha-review-header{margin-top:1.5rem}.ha-review-desc p,.ha-review-figure{margin:0}.ha-review-figure>img{width:100%;height:100%;border-radius:50%;vertical-align:bottom}.ha-review-reviewer{margin-top:0;margin-bottom:.3rem;color:#151515;font-size:18px}.ha-review-position{margin-bottom:.5rem;color:#7f7f7f;font-size:15px}.ha-review-ratting{display:inline-block;font-size:12px;line-height:1}.ha-review-ratting--num{padding:.25em .66em;border-radius:2.5em;background-color:#287dfe;color:#fff}.ha-review-ratting--star{display:inline-block;color:#ffbf36;font-family:"Fontawesome"}.ha-review-ratting--star>span{position:relative;overflow:hidden;height:1em}.ha-review-ratting--star span>span{position:absolute;top:0;left:0;overflow:hidden;padding-top:1.5em}.ha-review-ratting--star span>span:before,span .ha-review-ratting--star:before{position:absolute;top:0;left:0}.ha-review-ratting--star span:before{content:"\f006\f006\f006\f006\f006"}.ha-review-ratting--star span>span:before{content:"\f005\f005\f005\f005\f005"}.ha-review-desc{margin-top:1.5rem;font-size:16px;line-height:1.6}.ha-review--top>.elementor-widget-container{padding:2rem}.ha-review--top .ha-review-figure{display:inline-block;max-width:70px;height:70px}.ha-review--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-review--left>.elementor-widget-container,.ha-review--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding-left:2rem}.ha-review--left .ha-review-figure,.ha-review--right .ha-review-figure{-webkit-box-flex:0;-webkit-flex:0 0 150px;-ms-flex:0 0 150px;flex:0 0 150px;max-width:150px;height:150px}.ha-review--left .ha-review-body,.ha-review--right .ha-review-body{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 150px);-ms-flex:0 0 calc(100% - 150px);flex:0 0 calc(100% - 150px);padding:2rem;max-width:calc(100% - 150px)}.ha-review--left .ha-review-body>:first-child,.ha-review--right .ha-review-body>:first-child{margin-top:0}.ha-review--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;padding-right:2rem;padding-left:0;text-align:right}.ha-image-compare .twentytwenty-container,.ha-image-compare .twentytwenty-wrapper{border-radius:inherit}.ha-skills>.elementor-widget-container{padding-top:1px}.ha-skill{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:#e9ecef;font-size:.75rem}.ha-skill--inside .ha-skill-info,.ha-skill--outside .ha-skill-info{text-align:left;font-size:14px}.ha-skill--inside .ha-skill-level-text,.ha-skill--outside .ha-skill-level-text{float:right}.ha-skill--outside{height:2px}.ha-skill--outside .ha-skill-level{position:relative}.ha-skill--outside .ha-skill-info{position:absolute;top:-25px;width:100%;color:#242424}.ha-skill--inside{overflow:hidden;height:30px;border-radius:.3rem}.ha-skill--inside .ha-skill-info{padding-right:1rem;padding-left:1rem;color:#fff}.ha-skill-level{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;background-color:#007bff;color:#fff;text-align:center;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.ha-skill--outside{margin-top:40px}.ha-skill--inside:not(:first-child){margin-top:20px}.ha-gradient-heading{margin-top:0;margin-bottom:0}.ha-gradient-heading>a{color:inherit;text-decoration:none}.ha-dual-button>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-dual-btn,.ha-dual-btn-connector{display:inline-block}.ha-dual-btn-wrapper{position:relative;text-align:center;font-weight:400}.ha-dual-btn{padding:1.2rem 3rem;color:#fff;text-decoration:none;font-size:14px}.ha-dual-btn--left{border-top-left-radius:50px;border-bottom-left-radius:50px;background-color:#3266fd}.ha-dual-btn--right{border-top-right-radius:50px;border-bottom-right-radius:50px;background-color:#27374c}.ha-dual-btn-connector{position:absolute!important;top:50%;right:0;z-index:9;width:30px;height:30px;border-radius:100%;background-color:#fff;box-shadow:0 0 0 5px rgba(255,255,255,.3);color:#27374c;text-transform:uppercase;font-size:12px;line-height:30px;-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%)}.ha-dual-btn-icon--before{margin-right:5px}.ha-dual-btn-icon--after{margin-left:5px}
assets/js/happy-addons.js CHANGED
@@ -1,8 +1,8 @@
1
  'use strict';
2
  window.Happy = window.Happy || {};
3
 
4
- (function ($, Happy) {
5
- var $window = $(window);
6
 
7
  $.fn.getHappySettings = function() {
8
  return this.data('happy-settings');
@@ -24,8 +24,8 @@ window.Happy = window.Happy || {};
24
  });
25
  };
26
 
27
- $window.on( 'elementor/frontend/init', function() {
28
- var FloatingFx = elementorModules.frontend.handlers.Base.extend({
29
  onInit: function() {
30
  elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
31
  this.run();
@@ -131,9 +131,10 @@ window.Happy = window.Happy || {};
131
 
132
  elementorFrontend.hooks.addAction(
133
  'frontend/element_ready/widget',
134
- function ($scope) {
135
- new FloatingFx({ $element: $scope });
136
  }
137
  );
138
  });
139
- } (jQuery, Happy));
 
1
  'use strict';
2
  window.Happy = window.Happy || {};
3
 
4
+ (function ($, Happy, w) {
5
+ var $window = $(w);
6
 
7
  $.fn.getHappySettings = function() {
8
  return this.data('happy-settings');
24
  });
25
  };
26
 
27
+ $window.on('elementor/frontend/init', function() {
28
+ var HappyEffects = elementorModules.frontend.handlers.Base.extend({
29
  onInit: function() {
30
  elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
31
  this.run();
131
 
132
  elementorFrontend.hooks.addAction(
133
  'frontend/element_ready/widget',
134
+ function($scope) {
135
+ elementorFrontend.elementsHandler.addHandler(HappyEffects, {$element: $scope});
136
  }
137
  );
138
  });
139
+
140
+ } (jQuery, Happy, window));
assets/js/happy-addons.min.js CHANGED
@@ -1 +1 @@
1
- "use strict";window.Happy=window.Happy||{},function(e,t){var a=e(window);e.fn.getHappySettings=function(){return this.data("happy-settings")},t.initImageComparison=function(e){var t=e.find(".hajs-image-comparison"),a=t.getHappySettings();a[{on_hover:"move_slider_on_hover",on_swipe:"move_with_handle_only",on_click:"click_to_move"}[a.move_handle||"on_swipe"]]=!0,delete a.move_handle,t.imagesLoaded().done(function(){t.twentytwenty(a)})},a.on("elementor/frontend/init",function(){var e=elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.run()},getTheElement:function(){return this.$element.find(".elementor-widget-container")[0]},resetFx:function(){anime.remove(this.getTheElement()),this.getTheElement()&&this.getTheElement().removeAttribute("style")},onDestroy:function(){elementorModules.frontend.handlers.Base.prototype.onDestroy.apply(this,arguments),this.resetFx()},onElementChange:function(){this.resetFx(),this.run()},run:function(){var e=this.getElementSettings(),t={targets:this.getTheElement(),loop:!0,direction:"alternate",easing:"easeInOutSine"};e.ha_floating_fx_translate_toggle&&(e.ha_floating_fx_translate_x.size&&(t.translateX={value:e.ha_floating_fx_translate_x.size,duration:e.ha_floating_fx_translate_duration.size,delay:e.ha_floating_fx_translate_delay.size||0}),e.ha_floating_fx_translate_y.size&&(t.translateY={value:e.ha_floating_fx_translate_y.size,duration:e.ha_floating_fx_translate_duration.size,delay:e.ha_floating_fx_translate_delay.size||0})),e.ha_floating_fx_rotate_toggle&&(e.ha_floating_fx_rotate_x.size&&(t.rotateX={value:e.ha_floating_fx_rotate_x.size,duration:e.ha_floating_fx_rotate_duration.size,delay:e.ha_floating_fx_rotate_delay.size||0}),e.ha_floating_fx_rotate_y.size&&(t.rotateY={value:e.ha_floating_fx_rotate_y.size,duration:e.ha_floating_fx_rotate_duration.size,delay:e.ha_floating_fx_rotate_delay.size||0}),e.ha_floating_fx_rotate_z.size&&(t.rotateZ={value:e.ha_floating_fx_rotate_z.size,duration:e.ha_floating_fx_rotate_duration.size,delay:e.ha_floating_fx_rotate_delay.size||0})),e.ha_floating_fx_scale_toggle&&(e.ha_floating_fx_scale_x.size&&(t.scaleX={value:e.ha_floating_fx_scale_x.size,duration:e.ha_floating_fx_scale_duration.size,delay:e.ha_floating_fx_scale_delay.size||0}),e.ha_floating_fx_scale_y.size&&(t.scaleY={value:e.ha_floating_fx_scale_y.size,duration:e.ha_floating_fx_scale_duration.size,delay:e.ha_floating_fx_scale_delay.size||0})),(e.ha_floating_fx_translate_toggle||e.ha_floating_fx_rotate_toggle||e.ha_floating_fx_scale_toggle)&&(this.getTheElement()&&this.getTheElement().style.setProperty("will-change","transform"),anime(t))}});elementorFrontend.hooks.addAction("frontend/element_ready/ha-image-compare.default",t.initImageComparison),elementorFrontend.hooks.addAction("frontend/element_ready/widget",function(t){new e({$element:t})})})}(jQuery,Happy);
1
+ "use strict";window.Happy=window.Happy||{},function(e,t,a){var n=e(a);e.fn.getHappySettings=function(){return this.data("happy-settings")},t.initImageComparison=function(e){var t=e.find(".hajs-image-comparison"),a=t.getHappySettings();a[{on_hover:"move_slider_on_hover",on_swipe:"move_with_handle_only",on_click:"click_to_move"}[a.move_handle||"on_swipe"]]=!0,delete a.move_handle,t.imagesLoaded().done(function(){t.twentytwenty(a)})},n.on("elementor/frontend/init",function(){var e=elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.run()},getTheElement:function(){return this.$element.find(".elementor-widget-container")[0]},resetFx:function(){anime.remove(this.getTheElement()),this.getTheElement()&&this.getTheElement().removeAttribute("style")},onDestroy:function(){elementorModules.frontend.handlers.Base.prototype.onDestroy.apply(this,arguments),this.resetFx()},onElementChange:function(){this.resetFx(),this.run()},run:function(){var e=this.getElementSettings(),t={targets:this.getTheElement(),loop:!0,direction:"alternate",easing:"easeInOutSine"};e.ha_floating_fx_translate_toggle&&(e.ha_floating_fx_translate_x.size&&(t.translateX={value:e.ha_floating_fx_translate_x.size,duration:e.ha_floating_fx_translate_duration.size,delay:e.ha_floating_fx_translate_delay.size||0}),e.ha_floating_fx_translate_y.size&&(t.translateY={value:e.ha_floating_fx_translate_y.size,duration:e.ha_floating_fx_translate_duration.size,delay:e.ha_floating_fx_translate_delay.size||0})),e.ha_floating_fx_rotate_toggle&&(e.ha_floating_fx_rotate_x.size&&(t.rotateX={value:e.ha_floating_fx_rotate_x.size,duration:e.ha_floating_fx_rotate_duration.size,delay:e.ha_floating_fx_rotate_delay.size||0}),e.ha_floating_fx_rotate_y.size&&(t.rotateY={value:e.ha_floating_fx_rotate_y.size,duration:e.ha_floating_fx_rotate_duration.size,delay:e.ha_floating_fx_rotate_delay.size||0}),e.ha_floating_fx_rotate_z.size&&(t.rotateZ={value:e.ha_floating_fx_rotate_z.size,duration:e.ha_floating_fx_rotate_duration.size,delay:e.ha_floating_fx_rotate_delay.size||0})),e.ha_floating_fx_scale_toggle&&(e.ha_floating_fx_scale_x.size&&(t.scaleX={value:e.ha_floating_fx_scale_x.size,duration:e.ha_floating_fx_scale_duration.size,delay:e.ha_floating_fx_scale_delay.size||0}),e.ha_floating_fx_scale_y.size&&(t.scaleY={value:e.ha_floating_fx_scale_y.size,duration:e.ha_floating_fx_scale_duration.size,delay:e.ha_floating_fx_scale_delay.size||0})),(e.ha_floating_fx_translate_toggle||e.ha_floating_fx_rotate_toggle||e.ha_floating_fx_scale_toggle)&&(this.getTheElement()&&this.getTheElement().style.setProperty("will-change","transform"),anime(t))}});elementorFrontend.hooks.addAction("frontend/element_ready/ha-image-compare.default",t.initImageComparison),elementorFrontend.hooks.addAction("frontend/element_ready/widget",function(t){elementorFrontend.elementsHandler.addHandler(e,{$element:t})})})}(jQuery,Happy,window);
base.php CHANGED
@@ -6,11 +6,15 @@
6
  */
7
  namespace Happy_Addons\Elementor;
8
 
 
 
 
 
9
  defined( 'ABSPATH' ) || die();
10
 
11
  class Base {
12
 
13
- const VERSION = '1.0.4';
14
 
15
  const MINIMUM_ELEMENTOR_VERSION = '2.5.0';
16
 
@@ -31,7 +35,7 @@ class Base {
31
  }
32
 
33
  public function i18n() {
34
- load_plugin_textdomain( 'happy_addons' );
35
  }
36
 
37
  public function init() {
@@ -61,8 +65,9 @@ class Base {
61
  // Register custom controls
62
  add_action( 'elementor/controls/controls_registered', [$this, 'register_controls'] );
63
 
64
- Widget_Manager::instance()->init();
65
- Asset_Manager::instance()->init();
 
66
  }
67
 
68
  public function include_files() {
@@ -70,6 +75,7 @@ class Base {
70
  require( __DIR__ . '/inc/happy-icons.php' );
71
  require( __DIR__ . '/classes/widget-manager.php' );
72
  require( __DIR__ . '/classes/asset-manager.php' );
 
73
  }
74
 
75
  /**
@@ -79,9 +85,9 @@ class Base {
79
  */
80
  public function add_category( $elements_manager ) {
81
  $elements_manager->add_category(
82
- 'happy_addons',
83
  [
84
- 'title' => __( 'Happy Addons', 'happy_addons' ),
85
  'icon' => 'fa fa-smile-o',
86
  ]
87
  );
@@ -102,9 +108,9 @@ class Base {
102
 
103
  $message = sprintf(
104
  /* translators: 1: Plugin name 2: Elementor */
105
- esc_html__( '"%1$s" requires "%2$s" to be installed and activated.', 'happy_addons' ),
106
- '<strong>' . esc_html__( 'Happy Elementor Addons', 'happy_addons' ) . '</strong>',
107
- '<strong>' . esc_html__( 'Elementor', 'happy_addons' ) . '</strong>'
108
  );
109
 
110
  printf( '<div class="notice notice-warning is-dismissible"><p>%1$s</p></div>', $message );
@@ -125,9 +131,9 @@ class Base {
125
 
126
  $message = sprintf(
127
  /* translators: 1: Plugin name 2: Elementor 3: Required Elementor version */
128
- esc_html__( '"%1$s" requires "%2$s" version %3$s or greater.', 'happy_addons' ),
129
- '<strong>' . esc_html__( 'Happy Elementor Addons', 'happy_addons' ) . '</strong>',
130
- '<strong>' . esc_html__( 'Elementor', 'happy_addons' ) . '</strong>',
131
  self::MINIMUM_ELEMENTOR_VERSION
132
  );
133
 
@@ -149,9 +155,9 @@ class Base {
149
 
150
  $message = sprintf(
151
  /* translators: 1: Plugin name 2: PHP 3: Required PHP version */
152
- esc_html__( '"%1$s" requires "%2$s" version %3$s or greater.', 'happy_addons' ),
153
- '<strong>' . esc_html__( 'Happy Elementor Addons', 'happy_addons' ) . '</strong>',
154
- '<strong>' . esc_html__( 'PHP', 'happy_addons' ) . '</strong>',
155
  self::MINIMUM_PHP_VERSION
156
  );
157
 
6
  */
7
  namespace Happy_Addons\Elementor;
8
 
9
+ use Happy_Addons\Elementor\Manager\Assets;
10
+ use Happy_Addons\Elementor\Manager\Widgets;
11
+ use Happy_Addons\Elementor\Extension\Happy_Effects;
12
+
13
  defined( 'ABSPATH' ) || die();
14
 
15
  class Base {
16
 
17
+ const VERSION = '1.0.5';
18
 
19
  const MINIMUM_ELEMENTOR_VERSION = '2.5.0';
20
 
35
  }
36
 
37
  public function i18n() {
38
+ load_plugin_textdomain( 'happy-elementor-addons' );
39
  }
40
 
41
  public function init() {
65
  // Register custom controls
66
  add_action( 'elementor/controls/controls_registered', [$this, 'register_controls'] );
67
 
68
+ Widgets::init();
69
+ Assets::init();
70
+ Happy_Effects::init();
71
  }
72
 
73
  public function include_files() {
75
  require( __DIR__ . '/inc/happy-icons.php' );
76
  require( __DIR__ . '/classes/widget-manager.php' );
77
  require( __DIR__ . '/classes/asset-manager.php' );
78
+ require( __DIR__ . '/classes/happy-effects.php' );
79
  }
80
 
81
  /**
85
  */
86
  public function add_category( $elements_manager ) {
87
  $elements_manager->add_category(
88
+ 'happy_addons_category',
89
  [
90
+ 'title' => __( 'Happy Addons', 'happy-elementor-addons' ),
91
  'icon' => 'fa fa-smile-o',
92
  ]
93
  );
108
 
109
  $message = sprintf(
110
  /* translators: 1: Plugin name 2: Elementor */
111
+ esc_html__( '"%1$s" requires "%2$s" to be installed and activated.', 'happy-elementor-addons' ),
112
+ '<strong>' . esc_html__( 'Happy Elementor Addons', 'happy-elementor-addons' ) . '</strong>',
113
+ '<strong>' . esc_html__( 'Elementor', 'happy-elementor-addons' ) . '</strong>'
114
  );
115
 
116
  printf( '<div class="notice notice-warning is-dismissible"><p>%1$s</p></div>', $message );
131
 
132
  $message = sprintf(
133
  /* translators: 1: Plugin name 2: Elementor 3: Required Elementor version */
134
+ esc_html__( '"%1$s" requires "%2$s" version %3$s or greater.', 'happy-elementor-addons' ),
135
+ '<strong>' . esc_html__( 'Happy Elementor Addons', 'happy-elementor-addons' ) . '</strong>',
136
+ '<strong>' . esc_html__( 'Elementor', 'happy-elementor-addons' ) . '</strong>',
137
  self::MINIMUM_ELEMENTOR_VERSION
138
  );
139
 
155
 
156
  $message = sprintf(
157
  /* translators: 1: Plugin name 2: PHP 3: Required PHP version */
158
+ esc_html__( '"%1$s" requires "%2$s" version %3$s or greater.', 'happy-elementor-addons' ),
159
+ '<strong>' . esc_html__( 'Happy Elementor Addons', 'happy-elementor-addons' ) . '</strong>',
160
+ '<strong>' . esc_html__( 'PHP', 'happy-elementor-addons' ) . '</strong>',
161
  self::MINIMUM_PHP_VERSION
162
  );
163
 
base/widget-base.php CHANGED
@@ -44,7 +44,7 @@ abstract class Base extends Widget_Base {
44
  * @return array Widget categories.
45
  */
46
  public function get_categories() {
47
- return [ 'happy_addons' ];
48
  }
49
 
50
  /**
@@ -69,20 +69,39 @@ abstract class Base extends Widget_Base {
69
  return rtrim( $html_class );
70
  }
71
 
 
 
 
 
72
  /**
73
  * Register design controls
74
  *
75
  * Design controls are fixed for all widgets
76
  */
77
  private function register_design_controls() {
 
 
 
 
 
78
  $this->start_controls_section(
79
  '_design',
80
  [
81
- 'label' => __( 'Design', 'happy_addons' ),
82
  'tab' => Controls_Manager::TAB_CONTENT,
83
  ]
84
  );
85
 
 
 
 
 
 
 
 
 
 
 
86
  $this->end_controls_section();
87
  }
88
 
@@ -93,7 +112,7 @@ abstract class Base extends Widget_Base {
93
  $this->start_controls_section(
94
  '_faq',
95
  [
96
- 'label' => __( 'FAQs', 'happy_addons' ),
97
  'tab' => Controls_Manager::TAB_CONTENT,
98
  ]
99
  );
@@ -114,6 +133,8 @@ abstract class Base extends Widget_Base {
114
  * Register widget controls
115
  */
116
  protected function _register_controls() {
 
 
117
  $this->register_content_controls();
118
 
119
  $this->register_style_controls();
44
  * @return array Widget categories.
45
  */
46
  public function get_categories() {
47
+ return [ 'happy_addons_category' ];
48
  }
49
 
50
  /**
69
  return rtrim( $html_class );
70
  }
71
 
72
+ protected function get_presets() {
73
+ return [];
74
+ }
75
+
76
  /**
77
  * Register design controls
78
  *
79
  * Design controls are fixed for all widgets
80
  */
81
  private function register_design_controls() {
82
+ $presets = $this->get_presets();
83
+ if ( empty( $presets ) ) {
84
+ return;
85
+ }
86
+
87
  $this->start_controls_section(
88
  '_design',
89
  [
90
+ 'label' => __( 'Design', 'happy-elementor-addons' ),
91
  'tab' => Controls_Manager::TAB_CONTENT,
92
  ]
93
  );
94
 
95
+ $this->add_control(
96
+ '_preset',
97
+ [
98
+ 'label' => __( 'Preset', 'happy-elementor-addons' ),
99
+ 'type' => 'select',
100
+ 'options' => ['' => __( 'Default', 'happy-elementor-addons' )] + $presets,
101
+ 'default' => '',
102
+ ]
103
+ );
104
+
105
  $this->end_controls_section();
106
  }
107
 
112
  $this->start_controls_section(
113
  '_faq',
114
  [
115
+ 'label' => __( 'FAQs', 'happy-elementor-addons' ),
116
  'tab' => Controls_Manager::TAB_CONTENT,
117
  ]
118
  );
133
  * Register widget controls
134
  */
135
  protected function _register_controls() {
136
+ $this->register_design_controls();
137
+
138
  $this->register_content_controls();
139
 
140
  $this->register_style_controls();
classes/asset-manager.php CHANGED
@@ -1,40 +1,36 @@
1
  <?php
2
- namespace Happy_Addons\Elementor;
3
 
4
- defined( 'ABSPATH' ) || die();
5
-
6
- class Asset_Manager {
7
 
8
- private static $instance = null;
9
 
10
- public static function instance() {
11
- if ( is_null( self::$instance ) ) {
12
- self::$instance = new self();
13
- }
14
- return self::$instance;
15
- }
16
 
17
- public function init() {
 
 
 
18
  // Frontend scripts
19
- add_action( 'wp_enqueue_scripts', [$this, 'enqueue_frontend_scripts'] );
20
-
21
- add_action( 'elementor/editor/before_enqueue_scripts', [$this, 'enqueue_editor_scripts'] );
22
 
23
- add_action( 'elementor/preview/enqueue_styles', [$this, 'enqueue_preview_style'] );
 
24
 
 
25
 
26
  // Placeholder image replacement
27
- add_filter( 'elementor/utils/get_placeholder_image_src', [$this, 'set_placeholder_image'] );
28
  }
29
 
30
- public function set_placeholder_image() {
31
  return HAPPY_ASSETS . 'imgs/placeholder.jpg';
32
  }
33
 
34
  /**
35
  * Enqueue frontend scripts
36
  */
37
- public function enqueue_frontend_scripts() {
38
  $suffix = ha_is_script_debug_enabled() ? '.' : '.';
39
 
40
  wp_enqueue_style(
@@ -92,7 +88,7 @@ class Asset_Manager {
92
  );
93
  }
94
 
95
- public function enqueue_editor_scripts() {
96
  wp_enqueue_style(
97
  'happy-icon',
98
  HAPPY_ASSETS . 'fonts/style.min.css',
@@ -116,7 +112,7 @@ class Asset_Manager {
116
  );
117
  }
118
 
119
- public function enqueue_preview_style() {
120
  if( class_exists( 'WeForms' ) ) {
121
  wp_enqueue_style(
122
  'happy-elementor-weform-preview',
1
  <?php
2
+ namespace Happy_Addons\Elementor\Manager;
3
 
4
+ use Happy_Addons\Elementor\Base;
 
 
5
 
6
+ defined( 'ABSPATH' ) || die();
7
 
8
+ class Assets {
 
 
 
 
 
9
 
10
+ /**
11
+ * Bind hook and run internal methods here
12
+ */
13
+ public static function init() {
14
  // Frontend scripts
15
+ add_action( 'wp_enqueue_scripts', [__CLASS__, 'enqueue_frontend_scripts'] );
 
 
16
 
17
+ // Edit and preview enqueue
18
+ add_action( 'elementor/preview/enqueue_styles', [__CLASS__, 'enqueue_preview_style'] );
19
 
20
+ add_action( 'elementor/editor/before_enqueue_scripts', [__CLASS__, 'enqueue_editor_scripts'] );
21
 
22
  // Placeholder image replacement
23
+ add_filter( 'elementor/utils/get_placeholder_image_src', [__CLASS__, 'set_placeholder_image'] );
24
  }
25
 
26
+ public static function set_placeholder_image() {
27
  return HAPPY_ASSETS . 'imgs/placeholder.jpg';
28
  }
29
 
30
  /**
31
  * Enqueue frontend scripts
32
  */
33
+ public static function enqueue_frontend_scripts() {
34
  $suffix = ha_is_script_debug_enabled() ? '.' : '.';
35
 
36
  wp_enqueue_style(
88
  );
89
  }
90
 
91
+ public static function enqueue_editor_scripts() {
92
  wp_enqueue_style(
93
  'happy-icon',
94
  HAPPY_ASSETS . 'fonts/style.min.css',
112
  );
113
  }
114
 
115
+ public static function enqueue_preview_style() {
116
  if( class_exists( 'WeForms' ) ) {
117
  wp_enqueue_style(
118
  'happy-elementor-weform-preview',
classes/happy-effects.php ADDED
@@ -0,0 +1,777 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Happy_Addons\Elementor\Extension;
3
+
4
+ use Elementor\Controls_Manager;
5
+ use Elementor\Element_Base;
6
+ use Elementor\Core\Files\CSS\Post;
7
+
8
+ defined( 'ABSPATH' ) || die();
9
+
10
+ class Happy_Effects {
11
+
12
+ public static function init() {
13
+ add_action( 'elementor/element/common/_section_style/after_section_end', [__CLASS__, 'add_controls_section'] );
14
+ }
15
+
16
+ public static function add_controls_section( Element_Base $element ) {
17
+ $element->start_controls_section(
18
+ '_section_happy_effects',
19
+ [
20
+ 'label' => __( 'Happy Effects', 'happy-elementor-addons' ),
21
+ 'tab' => Controls_Manager::TAB_ADVANCED,
22
+ ]
23
+ );
24
+
25
+ self::add_floating_effects( $element );
26
+ self::add_css_effects( $element );
27
+
28
+ $element->end_controls_section();
29
+ }
30
+
31
+ public static function add_floating_effects( Element_Base $element ) {
32
+ $element->add_control(
33
+ 'ha_floating_fx',
34
+ [
35
+ 'label' => __( 'Floating Effects', 'happy-elementor-addons' ),
36
+ 'type' => Controls_Manager::SWITCHER,
37
+ 'return_value' => 'yes',
38
+ 'frontend_available' => true,
39
+ ]
40
+ );
41
+
42
+ $element->add_control(
43
+ 'ha_floating_fx_translate_toggle',
44
+ [
45
+ 'label' => __( 'Translate', 'happy-elementor-addons' ),
46
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
47
+ 'return_value' => 'yes',
48
+ 'frontend_available' => true,
49
+ 'condition' => [
50
+ 'ha_floating_fx' => 'yes',
51
+ ]
52
+ ]
53
+ );
54
+
55
+ $element->start_popover();
56
+
57
+ $element->add_control(
58
+ 'ha_floating_fx_translate_x',
59
+ [
60
+ 'label' => __( 'Translate X', 'happy-elementor-addons' ),
61
+ 'type' => Controls_Manager::SLIDER,
62
+ 'size_units' => ['px'],
63
+ 'condition' => [
64
+ 'ha_floating_fx_translate_toggle' => 'yes',
65
+ 'ha_floating_fx' => 'yes',
66
+ ],
67
+ 'render_type' => 'none',
68
+ 'frontend_available' => true,
69
+ ]
70
+ );
71
+
72
+ $element->add_control(
73
+ 'ha_floating_fx_translate_y',
74
+ [
75
+ 'label' => __( 'Translate Y', 'happy-elementor-addons' ),
76
+ 'type' => Controls_Manager::SLIDER,
77
+ 'size_units' => ['px'],
78
+ 'condition' => [
79
+ 'ha_floating_fx_translate_toggle' => 'yes',
80
+ 'ha_floating_fx' => 'yes',
81
+ ],
82
+ 'render_type' => 'none',
83
+ 'frontend_available' => true,
84
+ ]
85
+ );
86
+
87
+ $element->add_control(
88
+ 'ha_floating_fx_translate_duration',
89
+ [
90
+ 'label' => __( 'Duration', 'happy-elementor-addons' ),
91
+ 'type' => Controls_Manager::SLIDER,
92
+ 'size_units' => ['px'],
93
+ 'range' => [
94
+ 'px' => [
95
+ 'min' => 0,
96
+ 'max' => 10000,
97
+ 'step' => 100
98
+ ]
99
+ ],
100
+ 'default' => [
101
+ 'size' => 1000,
102
+ ],
103
+ 'condition' => [
104
+ 'ha_floating_fx_translate_toggle' => 'yes',
105
+ 'ha_floating_fx' => 'yes',
106
+ ],
107
+ 'render_type' => 'none',
108
+ 'frontend_available' => true,
109
+ ]
110
+ );
111
+
112
+ $element->add_control(
113
+ 'ha_floating_fx_translate_delay',
114
+ [
115
+ 'label' => __( 'Delay', 'happy-elementor-addons' ),
116
+ 'type' => Controls_Manager::SLIDER,
117
+ 'size_units' => ['px'],
118
+ 'range' => [
119
+ 'px' => [
120
+ 'min' => 0,
121
+ 'max' => 5000,
122
+ 'step' => 100
123
+ ]
124
+ ],
125
+ 'condition' => [
126
+ 'ha_floating_fx_translate_toggle' => 'yes',
127
+ 'ha_floating_fx' => 'yes',
128
+ ],
129
+ 'render_type' => 'none',
130
+ 'frontend_available' => true,
131
+ ]
132
+ );
133
+
134
+ $element->end_popover();
135
+
136
+ $element->add_control(
137
+ 'ha_floating_fx_rotate_toggle',
138
+ [
139
+ 'label' => __( 'Rotate', 'happy-elementor-addons' ),
140
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
141
+ 'return_value' => 'yes',
142
+ 'frontend_available' => true,
143
+ 'condition' => [
144
+ 'ha_floating_fx' => 'yes',
145
+ ]
146
+ ]
147
+ );
148
+
149
+ $element->start_popover();
150
+
151
+ $element->add_control(
152
+ 'ha_floating_fx_rotate_x',
153
+ [
154
+ 'label' => __( 'Rotate X', 'happy-elementor-addons' ),
155
+ 'type' => Controls_Manager::SLIDER,
156
+ 'size_units' => ['px'],
157
+ 'range' => [
158
+ 'px' => [
159
+ 'min' => 0,
160
+ 'max' => 360,
161
+ ]
162
+ ],
163
+ 'condition' => [
164
+ 'ha_floating_fx_rotate_toggle' => 'yes',
165
+ 'ha_floating_fx' => 'yes',
166
+ ],
167
+ 'render_type' => 'none',
168
+ 'frontend_available' => true,
169
+ ]
170
+ );
171
+
172
+ $element->add_control(
173
+ 'ha_floating_fx_rotate_y',
174
+ [
175
+ 'label' => __( 'Rotate Y', 'happy-elementor-addons' ),
176
+ 'type' => Controls_Manager::SLIDER,
177
+ 'size_units' => ['px'],
178
+ 'range' => [
179
+ 'px' => [
180
+ 'min' => 0,
181
+ 'max' => 360,
182
+ ]
183
+ ],
184
+ 'condition' => [
185
+ 'ha_floating_fx_rotate_toggle' => 'yes',
186
+ 'ha_floating_fx' => 'yes',
187
+ ],
188
+ 'render_type' => 'none',
189
+ 'frontend_available' => true,
190
+ ]
191
+ );
192
+
193
+ $element->add_control(
194
+ 'ha_floating_fx_rotate_z',
195
+ [
196
+ 'label' => __( 'Rotate Z', 'happy-elementor-addons' ),
197
+ 'type' => Controls_Manager::SLIDER,
198
+ 'size_units' => ['px'],
199
+ 'range' => [
200
+ 'px' => [
201
+ 'min' => 0,
202
+ 'max' => 360,
203
+ ]
204
+ ],
205
+ 'condition' => [
206
+ 'ha_floating_fx_rotate_toggle' => 'yes',
207
+ 'ha_floating_fx' => 'yes',
208
+ ],
209
+ 'render_type' => 'none',
210
+ 'frontend_available' => true,
211
+ ]
212
+ );
213
+
214
+ $element->add_control(
215
+ 'ha_floating_fx_rotate_duration',
216
+ [
217
+ 'label' => __( 'Duration', 'happy-elementor-addons' ),
218
+ 'type' => Controls_Manager::SLIDER,
219
+ 'size_units' => ['px'],
220
+ 'range' => [
221
+ 'px' => [
222
+ 'min' => 0,
223
+ 'max' => 10000,
224
+ 'step' => 100
225
+ ]
226
+ ],
227
+ 'default' => [
228
+ 'size' => 1000,
229
+ ],
230
+ 'condition' => [
231
+ 'ha_floating_fx_rotate_toggle' => 'yes',
232
+ 'ha_floating_fx' => 'yes',
233
+ ],
234
+ 'render_type' => 'none',
235
+ 'frontend_available' => true,
236
+ ]
237
+ );
238
+
239
+ $element->add_control(
240
+ 'ha_floating_fx_rotate_delay',
241
+ [
242
+ 'label' => __( 'Delay', 'happy-elementor-addons' ),
243
+ 'type' => Controls_Manager::SLIDER,
244
+ 'size_units' => ['px'],
245
+ 'range' => [
246
+ 'px' => [
247
+ 'min' => 0,
248
+ 'max' => 5000,
249
+ 'step' => 100
250
+ ]
251
+ ],
252
+ 'condition' => [
253
+ 'ha_floating_fx_rotate_toggle' => 'yes',
254
+ 'ha_floating_fx' => 'yes',
255
+ ],
256
+ 'render_type' => 'none',
257
+ 'frontend_available' => true,
258
+ ]
259
+ );
260
+
261
+ $element->end_popover();
262
+
263
+ $element->add_control(
264
+ 'ha_floating_fx_scale_toggle',
265
+ [
266
+ 'label' => __( 'Scale', 'happy-elementor-addons' ),
267
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
268
+ 'return_value' => 'yes',
269
+ 'frontend_available' => true,
270
+ 'condition' => [
271
+ 'ha_floating_fx' => 'yes',
272
+ ]
273
+ ]
274
+ );
275
+
276
+ $element->start_popover();
277
+
278
+ $element->add_control(
279
+ 'ha_floating_fx_scale_x',
280
+ [
281
+ 'label' => __( 'Scale X', 'happy-elementor-addons' ),
282
+ 'type' => Controls_Manager::SLIDER,
283
+ 'size_units' => ['px'],
284
+ 'range' => [
285
+ 'px' => [
286
+ 'min' => 0,
287
+ 'max' => 10,
288
+ 'step' => .1
289
+ ]
290
+ ],
291
+ 'condition' => [
292
+ 'ha_floating_fx_scale_toggle' => 'yes',
293
+ 'ha_floating_fx' => 'yes',
294
+ ],
295
+ 'render_type' => 'none',
296
+ 'frontend_available' => true,
297
+ ]
298
+ );
299
+
300
+ $element->add_control(
301
+ 'ha_floating_fx_scale_y',
302
+ [
303
+ 'label' => __( 'Scale Y', 'happy-elementor-addons' ),
304
+ 'type' => Controls_Manager::SLIDER,
305
+ 'size_units' => ['px'],
306
+ 'range' => [
307
+ 'px' => [
308
+ 'min' => 0,
309
+ 'max' => 10,
310
+ 'step' => .1
311
+ ]
312
+ ],
313
+ 'condition' => [
314
+ 'ha_floating_fx_scale_toggle' => 'yes',
315
+ 'ha_floating_fx' => 'yes',
316
+ ],
317
+ 'render_type' => 'none',
318
+ 'frontend_available' => true,
319
+ ]
320
+ );
321
+
322
+ $element->add_control(
323
+ 'ha_floating_fx_scale_duration',
324
+ [
325
+ 'label' => __( 'Duration', 'happy-elementor-addons' ),
326
+ 'type' => Controls_Manager::SLIDER,
327
+ 'size_units' => ['px'],
328
+ 'range' => [
329
+ 'px' => [
330
+ 'min' => 0,
331
+ 'max' => 10000,
332
+ 'step' => 100
333
+ ]
334
+ ],
335
+ 'default' => [
336
+ 'size' => 1000,
337
+ ],
338
+ 'condition' => [
339
+ 'ha_floating_fx_scale_toggle' => 'yes',
340
+ 'ha_floating_fx' => 'yes',
341
+ ],
342
+ 'render_type' => 'none',
343
+ 'frontend_available' => true,
344
+ ]
345
+ );
346
+
347
+ $element->add_control(
348
+ 'ha_floating_fx_scale_delay',
349
+ [
350
+ 'label' => __( 'Delay', 'happy-elementor-addons' ),
351
+ 'type' => Controls_Manager::SLIDER,
352
+ 'size_units' => ['px'],
353
+ 'range' => [
354
+ 'px' => [
355
+ 'min' => 0,
356
+ 'max' => 5000,
357
+ 'step' => 100
358
+ ]
359
+ ],
360
+ 'condition' => [
361
+ 'ha_floating_fx_scale_toggle' => 'yes',
362
+ 'ha_floating_fx' => 'yes',
363
+ ],
364
+ 'render_type' => 'none',
365
+ 'frontend_available' => true,
366
+ ]
367
+ );
368
+
369
+ $element->end_popover();
370
+
371
+ $element->add_control(
372
+ 'ha_hr',
373
+ [
374
+ 'type' => Controls_Manager::DIVIDER,
375
+ ]
376
+ );
377
+ }
378
+
379
+ public static function add_css_effects( Element_Base $element ) {
380
+ $element->add_control(
381
+ 'ha_transform_fx',
382
+ [
383
+ 'label' => __( 'CSS Transform', 'happy-elementor-addons' ),
384
+ 'type' => Controls_Manager::SWITCHER,
385
+ 'return_value' => 'yes',
386
+ ]
387
+ );
388
+
389
+ $element->add_control(
390
+ 'ha_transform_fx_translate_toggle',
391
+ [
392
+ 'label' => __( 'Translate', 'happy-elementor-addons' ),
393
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
394
+ 'return_value' => 'yes',
395
+ 'condition' => [
396
+ 'ha_transform_fx' => 'yes',
397
+ ],
398
+ ]
399
+ );
400
+
401
+ $element->start_popover();
402
+
403
+ $element->add_responsive_control(
404
+ 'ha_transform_fx_translate_x',
405
+ [
406
+ 'label' => __( 'Translate X', 'happy-elementor-addons' ),
407
+ 'type' => Controls_Manager::SLIDER,
408
+ 'size_units' => ['px'],
409
+ 'range' => [
410
+ 'px' => [
411
+ 'min' => -1000,
412
+ 'max' => 1000,
413
+ ]
414
+ ],
415
+ 'condition' => [
416
+ 'ha_transform_fx_translate_toggle' => 'yes',
417
+ 'ha_transform_fx' => 'yes',
418
+ ],
419
+ ]
420
+ );
421
+
422
+ $element->add_responsive_control(
423
+ 'ha_transform_fx_translate_y',
424
+ [
425
+ 'label' => __( 'Translate Y', 'happy-elementor-addons' ),
426
+ 'type' => Controls_Manager::SLIDER,
427
+ 'size_units' => ['px'],
428
+ 'range' => [
429
+ 'px' => [
430
+ 'min' => -1000,
431
+ 'max' => 1000,
432
+ ]
433
+ ],
434
+ 'condition' => [
435
+ 'ha_transform_fx_translate_toggle' => 'yes',
436
+ 'ha_transform_fx' => 'yes',
437
+ ],
438
+ 'selectors' => [
439
+ '(desktop){{WRAPPER}}' =>
440
+ '-ms-transform:'
441
+ . 'translate({{ha_transform_fx_translate_x.SIZE || 0}}px, {{ha_transform_fx_translate_y.SIZE || 0}}px);'
442
+ . '-webkit-transform:'
443
+ . 'translate({{ha_transform_fx_translate_x.SIZE || 0}}px, {{ha_transform_fx_translate_y.SIZE || 0}}px);'
444
+ . 'transform:'
445
+ . 'translate({{ha_transform_fx_translate_x.SIZE || 0}}px, {{ha_transform_fx_translate_y.SIZE || 0}}px);',
446
+ '(tablet){{WRAPPER}}' =>
447
+ '-ms-transform:'
448
+ . 'translate({{ha_transform_fx_translate_x_tablet.SIZE || 0}}px, {{ha_transform_fx_translate_y_tablet.SIZE || 0}}px);'
449
+ . '-webkit-transform:'
450
+ . 'translate({{ha_transform_fx_translate_x_tablet.SIZE || 0}}px, {{ha_transform_fx_translate_y_tablet.SIZE || 0}}px);'
451
+ . 'transform:'
452
+ . 'translate({{ha_transform_fx_translate_x_tablet.SIZE || 0}}px, {{ha_transform_fx_translate_y_tablet.SIZE || 0}}px);',
453
+ '(mobile){{WRAPPER}}' =>
454
+ '-ms-transform:'
455
+ . 'translate({{ha_transform_fx_translate_x_mobile.SIZE || 0}}px, {{ha_transform_fx_translate_y_mobile.SIZE || 0}}px);'
456
+ . '-webkit-transform:'
457
+ . 'translate({{ha_transform_fx_translate_x_mobile.SIZE || 0}}px, {{ha_transform_fx_translate_y_mobile.SIZE || 0}}px);'
458
+ . 'transform:'
459
+ . 'translate({{ha_transform_fx_translate_x_mobile.SIZE || 0}}px, {{ha_transform_fx_translate_y_mobile.SIZE || 0}}px);',
460
+ ]
461
+ ]
462
+ );
463
+
464
+ $element->end_popover();
465
+
466
+ $element->add_control(
467
+ 'ha_transform_fx_rotate_toggle',
468
+ [
469
+ 'label' => __( 'Rotate', 'happy-elementor-addons' ),
470
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
471
+ 'condition' => [
472
+ 'ha_transform_fx' => 'yes',
473
+ ],
474
+ ]
475
+ );
476
+
477
+ $element->start_popover();
478
+
479
+ $element->add_responsive_control(
480
+ 'ha_transform_fx_rotate_x',
481
+ [
482
+ 'label' => __( 'Rotate X', 'happy-elementor-addons' ),
483
+ 'type' => Controls_Manager::SLIDER,
484
+ 'size_units' => ['px'],
485
+ 'range' => [
486
+ 'px' => [
487
+ 'min' => -180,
488
+ 'max' => 180,
489
+ ]
490
+ ],
491
+ 'condition' => [
492
+ 'ha_transform_fx_rotate_toggle' => 'yes',
493
+ 'ha_transform_fx' => 'yes',
494
+ ],
495
+ ]
496
+ );
497
+
498
+ $element->add_responsive_control(
499
+ 'ha_transform_fx_rotate_y',
500
+ [
501
+ 'label' => __( 'Rotate Y', 'happy-elementor-addons' ),
502
+ 'type' => Controls_Manager::SLIDER,
503
+ 'size_units' => ['px'],
504
+ 'range' => [
505
+ 'px' => [
506
+ 'min' => -180,
507
+ 'max' => 180,
508
+ ]
509
+ ],
510
+ 'condition' => [
511
+ 'ha_transform_fx_rotate_toggle' => 'yes',
512
+ 'ha_transform_fx' => 'yes',
513
+ ],
514
+ ]
515
+ );
516
+
517
+ $element->add_responsive_control(
518
+ 'ha_transform_fx_rotate_z',
519
+ [
520
+ 'label' => __( 'Rotate Z', 'happy-elementor-addons' ),
521
+ 'type' => Controls_Manager::SLIDER,
522
+ 'size_units' => ['px'],
523
+ 'range' => [
524
+ 'px' => [
525
+ 'min' => -180,
526
+ 'max' => 180,
527
+ ]
528
+ ],
529
+ 'condition' => [
530
+ 'ha_transform_fx_rotate_toggle' => 'yes',
531
+ 'ha_transform_fx' => 'yes',
532
+ ],
533
+ 'selectors' => [
534
+ '(desktop){{WRAPPER}}' =>
535
+ '-ms-transform:'
536
+ . 'translate({{ha_transform_fx_translate_x.SIZE || 0}}px, {{ha_transform_fx_translate_y.SIZE || 0}}px) '
537
+ . 'rotateX({{ha_transform_fx_rotate_x.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z.SIZE || 0}}deg);'
538
+ . '-webkit-transform:'
539
+ . 'translate({{ha_transform_fx_translate_x.SIZE || 0}}px, {{ha_transform_fx_translate_y.SIZE || 0}}px) '
540
+ . 'rotateX({{ha_transform_fx_rotate_x.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z.SIZE || 0}}deg);'
541
+ . 'transform:'
542
+ . 'translate({{ha_transform_fx_translate_x.SIZE || 0}}px, {{ha_transform_fx_translate_y.SIZE || 0}}px) '
543
+ . 'rotateX({{ha_transform_fx_rotate_x.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z.SIZE || 0}}deg);',
544
+ '(tablet){{WRAPPER}}' =>
545
+ '-ms-transform:'
546
+ . 'translate({{ha_transform_fx_translate_x_tablet.SIZE || 0}}px, {{ha_transform_fx_translate_y_tablet.SIZE || 0}}px) '
547
+ . 'rotateX({{ha_transform_fx_rotate_x_tablet.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_tablet.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_tablet.SIZE || 0}}deg);'
548
+ . '-webkit-transform:'
549
+ . 'translate({{ha_transform_fx_translate_x_tablet.SIZE || 0}}px, {{ha_transform_fx_translate_y_tablet.SIZE || 0}}px) '
550
+ . 'rotateX({{ha_transform_fx_rotate_x_tablet.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_tablet.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_tablet.SIZE || 0}}deg);'
551
+ . 'transform:'
552
+ . 'translate({{ha_transform_fx_translate_x_tablet.SIZE || 0}}px, {{ha_transform_fx_translate_y_tablet.SIZE || 0}}px) '
553
+ . 'rotateX({{ha_transform_fx_rotate_x_tablet.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_tablet.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_tablet.SIZE || 0}}deg);',
554
+ '(mobile){{WRAPPER}}' =>
555
+ '-ms-transform:'
556
+ . 'translate({{ha_transform_fx_translate_x_mobile.SIZE || 0}}px, {{ha_transform_fx_translate_y_mobile.SIZE || 0}}px) '
557
+ . 'rotateX({{ha_transform_fx_rotate_x_mobile.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_mobile.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_mobile.SIZE || 0}}deg);'
558
+ . '-webkit-transform:'
559
+ . 'translate({{ha_transform_fx_translate_x_mobile.SIZE || 0}}px, {{ha_transform_fx_translate_y_mobile.SIZE || 0}}px) '
560
+ . 'rotateX({{ha_transform_fx_rotate_x_mobile.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_mobile.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_mobile.SIZE || 0}}deg);'
561
+ . 'transform:'
562
+ . 'translate({{ha_transform_fx_translate_x_mobile.SIZE || 0}}px, {{ha_transform_fx_translate_y_mobile.SIZE || 0}}px) '
563
+ . 'rotateX({{ha_transform_fx_rotate_x_mobile.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_mobile.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_mobile.SIZE || 0}}deg);'
564
+ ]
565
+ ]
566
+ );
567
+
568
+ $element->end_popover();
569
+
570
+ $element->add_control(
571
+ 'ha_transform_fx_scale_toggle',
572
+ [
573
+ 'label' => __( 'Scale', 'happy-elementor-addons' ),
574
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
575
+ 'return_value' => 'yes',
576
+ 'condition' => [
577
+ 'ha_transform_fx' => 'yes',
578
+ ],
579
+ ]
580
+ );
581
+
582
+ $element->start_popover();
583
+
584
+ $element->add_responsive_control(
585
+ 'ha_transform_fx_scale_x',
586
+ [
587
+ 'label' => __( 'Scale X', 'happy-elementor-addons' ),
588
+ 'type' => Controls_Manager::SLIDER,
589
+ 'size_units' => ['px'],
590
+ 'default' => [
591
+ 'size' => 1
592
+ ],
593
+ 'range' => [
594
+ 'px' => [
595
+ 'min' => 0,
596
+ 'max' => 5,
597
+ 'step' => .1
598
+ ]
599
+ ],
600
+ 'condition' => [
601
+ 'ha_transform_fx_scale_toggle' => 'yes',
602
+ 'ha_transform_fx' => 'yes',
603
+ ],
604
+ ]
605
+ );
606
+
607
+ $element->add_responsive_control(
608
+ 'ha_transform_fx_scale_y',
609
+ [
610
+ 'label' => __( 'Scale Y', 'happy-elementor-addons' ),
611
+ 'type' => Controls_Manager::SLIDER,
612
+ 'size_units' => ['px'],
613
+ 'default' => [
614
+ 'size' => 1
615
+ ],
616
+ 'range' => [
617
+ 'px' => [
618
+ 'min' => 0,
619
+ 'max' => 5,
620
+ 'step' => .1
621
+ ]
622
+ ],
623
+ 'condition' => [
624
+ 'ha_transform_fx_scale_toggle' => 'yes',
625
+ 'ha_transform_fx' => 'yes',
626
+ ],
627
+ 'selectors' => [
628
+ '(desktop){{WRAPPER}}' =>
629
+ '-ms-transform:'
630
+ . 'translate({{ha_transform_fx_translate_x.SIZE || 0}}px, {{ha_transform_fx_translate_y.SIZE || 0}}px) '
631
+ . 'rotateX({{ha_transform_fx_rotate_x.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z.SIZE || 0}}deg) '
632
+ . 'scaleX({{ha_transform_fx_scale_x.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y.SIZE || 1}});'
633
+ . '-webkit-transform:'
634
+ . 'translate({{ha_transform_fx_translate_x.SIZE || 0}}px, {{ha_transform_fx_translate_y.SIZE || 0}}px) '
635
+ . 'rotateX({{ha_transform_fx_rotate_x.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z.SIZE || 0}}deg) '
636
+ . 'scaleX({{ha_transform_fx_scale_x.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y.SIZE || 1}});'
637
+ . 'transform:'
638
+ . 'translate({{ha_transform_fx_translate_x.SIZE || 0}}px, {{ha_transform_fx_translate_y.SIZE || 0}}px) '
639
+ . 'rotateX({{ha_transform_fx_rotate_x.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z.SIZE || 0}}deg) '
640
+ . 'scaleX({{ha_transform_fx_scale_x.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y.SIZE || 1}});',
641
+ '(tablet){{WRAPPER}}' =>
642
+ '-ms-transform:'
643
+ . 'translate({{ha_transform_fx_translate_x_tablet.SIZE || 0}}px, {{ha_transform_fx_translate_y_tablet.SIZE || 0}}px) '
644
+ . 'rotateX({{ha_transform_fx_rotate_x_tablet.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_tablet.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_tablet.SIZE || 0}}deg) '
645
+ . 'scaleX({{ha_transform_fx_scale_x_tablet.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y_tablet.SIZE || 1}});'
646
+ . '-webkit-transform:'
647
+ . 'translate({{ha_transform_fx_translate_x_tablet.SIZE || 0}}px, {{ha_transform_fx_translate_y_tablet.SIZE || 0}}px) '
648
+ . 'rotateX({{ha_transform_fx_rotate_x_tablet.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_tablet.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_tablet.SIZE || 0}}deg) '
649
+ . 'scaleX({{ha_transform_fx_scale_x_tablet.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y_tablet.SIZE || 1}});'
650
+ . 'transform:'
651
+ . 'translate({{ha_transform_fx_translate_x_tablet.SIZE || 0}}px, {{ha_transform_fx_translate_y_tablet.SIZE || 0}}px) '
652
+ . 'rotateX({{ha_transform_fx_rotate_x_tablet.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_tablet.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_tablet.SIZE || 0}}deg) '
653
+ . 'scaleX({{ha_transform_fx_scale_x_tablet.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y_tablet.SIZE || 1}});',
654
+ '(mobile){{WRAPPER}}' =>
655
+ '-ms-transform:'
656
+ . 'translate({{ha_transform_fx_translate_x_mobile.SIZE || 0}}px, {{ha_transform_fx_translate_y_mobile.SIZE || 0}}px) '
657
+ . 'rotateX({{ha_transform_fx_rotate_x_mobile.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_mobile.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_mobile.SIZE || 0}}deg) '
658
+ . 'scaleX({{ha_transform_fx_scale_x_mobile.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y_mobile.SIZE || 1}});'
659
+ . '-webkit-transform:'
660
+ . 'translate({{ha_transform_fx_translate_x_mobile.SIZE || 0}}px, {{ha_transform_fx_translate_y_mobile.SIZE || 0}}px) '
661
+ . 'rotateX({{ha_transform_fx_rotate_x_mobile.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_mobile.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_mobile.SIZE || 0}}deg) '
662
+ . 'scaleX({{ha_transform_fx_scale_x_mobile.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y_mobile.SIZE || 1}});'
663
+ . 'transform:'
664
+ . 'translate({{ha_transform_fx_translate_x_mobile.SIZE || 0}}px, {{ha_transform_fx_translate_y_mobile.SIZE || 0}}px) '
665
+ . 'rotateX({{ha_transform_fx_rotate_x_mobile.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_mobile.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_mobile.SIZE || 0}}deg) '
666
+ . 'scaleX({{ha_transform_fx_scale_x_mobile.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y_mobile.SIZE || 1}});'
667
+ ]
668
+ ]
669
+ );
670
+
671
+ $element->end_popover();
672
+
673
+ $element->add_control(
674
+ 'ha_transform_fx_skew_toggle',
675
+ [
676
+ 'label' => __( 'Skew', 'happy-elementor-addons' ),
677
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
678
+ 'return_value' => 'yes',
679
+ 'condition' => [
680
+ 'ha_transform_fx' => 'yes',
681
+ ],
682
+ ]
683
+ );
684
+
685
+ $element->start_popover();
686
+
687
+ $element->add_responsive_control(
688
+ 'ha_transform_fx_skew_x',
689
+ [
690
+ 'label' => __( 'Skew X', 'happy-elementor-addons' ),
691
+ 'type' => Controls_Manager::SLIDER,
692
+ 'size_units' => ['deg'],
693
+ 'range' => [
694
+ 'px' => [
695
+ 'min' => -180,
696
+ 'max' => 180,
697
+ ]
698
+ ],
699
+ 'condition' => [
700
+ 'ha_transform_fx_skew_toggle' => 'yes',
701
+ 'ha_transform_fx' => 'yes',
702
+ ],
703
+ ]
704
+ );
705
+
706
+ $element->add_responsive_control(
707
+ 'ha_transform_fx_skew_y',
708
+ [
709
+ 'label' => __( 'Skew Y', 'happy-elementor-addons' ),
710
+ 'type' => Controls_Manager::SLIDER,
711
+ 'size_units' => ['deg'],
712
+ 'range' => [
713
+ 'px' => [
714
+ 'min' => -180,
715
+ 'max' => 180,
716
+ ]
717
+ ],
718
+ 'condition' => [
719
+ 'ha_transform_fx_skew_toggle' => 'yes',
720
+ 'ha_transform_fx' => 'yes',
721
+ ],
722
+ 'selectors' => [
723
+ '(desktop){{WRAPPER}}' =>
724
+ '-ms-transform:'
725
+ . 'translate({{ha_transform_fx_translate_x.SIZE || 0}}px, {{ha_transform_fx_translate_y.SIZE || 0}}px) '
726
+ . 'rotateX({{ha_transform_fx_rotate_x.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z.SIZE || 0}}deg) '
727
+ . 'scaleX({{ha_transform_fx_scale_x.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y.SIZE || 1}}) '
728
+ . 'skew({{ha_transform_fx_skew_x.SIZE || 0}}deg, {{ha_transform_fx_skew_y.SIZE || 0}}deg);'
729
+ . '-webkit-transform:'
730
+ . 'translate({{ha_transform_fx_translate_x.SIZE || 0}}px, {{ha_transform_fx_translate_y.SIZE || 0}}px) '
731
+ . 'rotateX({{ha_transform_fx_rotate_x.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z.SIZE || 0}}deg) '
732
+ . 'scaleX({{ha_transform_fx_scale_x.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y.SIZE || 1}}) '
733
+ . 'skew({{ha_transform_fx_skew_x.SIZE || 0}}deg, {{ha_transform_fx_skew_y.SIZE || 0}}deg);'
734
+ . 'transform:'
735
+ . 'translate({{ha_transform_fx_translate_x.SIZE || 0}}px, {{ha_transform_fx_translate_y.SIZE || 0}}px) '
736
+ . 'rotateX({{ha_transform_fx_rotate_x.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z.SIZE || 0}}deg) '
737
+ . 'scaleX({{ha_transform_fx_scale_x.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y.SIZE || 1}}) '
738
+ . 'skew({{ha_transform_fx_skew_x.SIZE || 0}}deg, {{ha_transform_fx_skew_y.SIZE || 0}}deg);',
739
+ '(tablet){{WRAPPER}}' =>
740
+ '-ms-transform:'
741
+ . 'translate({{ha_transform_fx_translate_x_tablet.SIZE || 0}}px, {{ha_transform_fx_translate_y_tablet.SIZE || 0}}px) '
742
+ . 'rotateX({{ha_transform_fx_rotate_x_tablet.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_tablet.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_tablet.SIZE || 0}}deg) '
743
+ . 'scaleX({{ha_transform_fx_scale_x_tablet.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y_tablet.SIZE || 1}}) '
744
+ . 'skew({{ha_transform_fx_skew_x_tablet.SIZE || 0}}deg, {{ha_transform_fx_skew_y_tablet.SIZE || 0}}deg);'
745
+ . '-webkit-transform:'
746
+ . 'translate({{ha_transform_fx_translate_x_tablet.SIZE || 0}}px, {{ha_transform_fx_translate_y_tablet.SIZE || 0}}px) '
747
+ . 'rotateX({{ha_transform_fx_rotate_x_tablet.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_tablet.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_tablet.SIZE || 0}}deg) '
748
+ . 'scaleX({{ha_transform_fx_scale_x_tablet.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y_tablet.SIZE || 1}}) '
749
+ . 'skew({{ha_transform_fx_skew_x_tablet.SIZE || 0}}deg, {{ha_transform_fx_skew_y_tablet.SIZE || 0}}deg);'
750
+ . 'transform:'
751
+ . 'translate({{ha_transform_fx_translate_x_tablet.SIZE || 0}}px, {{ha_transform_fx_translate_y_tablet.SIZE || 0}}px) '
752
+ . 'rotateX({{ha_transform_fx_rotate_x_tablet.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_tablet.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_tablet.SIZE || 0}}deg) '
753
+ . 'scaleX({{ha_transform_fx_scale_x_tablet.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y_tablet.SIZE || 1}}) '
754
+ . 'skew({{ha_transform_fx_skew_x_tablet.SIZE || 0}}deg, {{ha_transform_fx_skew_y_tablet.SIZE || 0}}deg);',
755
+ '(mobile){{WRAPPER}}' =>
756
+ '-ms-transform:'
757
+ . 'translate({{ha_transform_fx_translate_x_mobile.SIZE || 0}}px, {{ha_transform_fx_translate_y_mobile.SIZE || 0}}px) '
758
+ . 'rotateX({{ha_transform_fx_rotate_x_mobile.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_mobile.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_mobile.SIZE || 0}}deg) '
759
+ . 'scaleX({{ha_transform_fx_scale_x_mobile.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y_mobile.SIZE || 1}}) '
760
+ . 'skew({{ha_transform_fx_skew_x_mobile.SIZE || 0}}deg, {{ha_transform_fx_skew_y_mobile.SIZE || 0}}deg);'
761
+ . '-webkit-transform:'
762
+ . 'translate({{ha_transform_fx_translate_x_mobile.SIZE || 0}}px, {{ha_transform_fx_translate_y_mobile.SIZE || 0}}px) '
763
+ . 'rotateX({{ha_transform_fx_rotate_x_mobile.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_mobile.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_mobile.SIZE || 0}}deg) '
764
+ . 'scaleX({{ha_transform_fx_scale_x_mobile.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y_mobile.SIZE || 1}}) '
765
+ . 'skew({{ha_transform_fx_skew_x_mobile.SIZE || 0}}deg, {{ha_transform_fx_skew_y_mobile.SIZE || 0}}deg);'
766
+ . 'transform:'
767
+ . 'translate({{ha_transform_fx_translate_x_mobile.SIZE || 0}}px, {{ha_transform_fx_translate_y_mobile.SIZE || 0}}px) '
768
+ . 'rotateX({{ha_transform_fx_rotate_x_mobile.SIZE || 0}}deg) rotateY({{ha_transform_fx_rotate_y_mobile.SIZE || 0}}deg) rotateZ({{ha_transform_fx_rotate_z_mobile.SIZE || 0}}deg) '
769
+ . 'scaleX({{ha_transform_fx_scale_x_mobile.SIZE || 1}}) scaleY({{ha_transform_fx_scale_y_mobile.SIZE || 1}}) '
770
+ . 'skew({{ha_transform_fx_skew_x_mobile.SIZE || 0}}deg, {{ha_transform_fx_skew_y_mobile.SIZE || 0}}deg);'
771
+ ]
772
+ ]
773
+ );
774
+
775
+ $element->end_popover();
776
+ }
777
+ }
classes/widget-manager.php CHANGED
@@ -1,376 +1,13 @@
1
  <?php
2
- namespace Happy_Addons\Elementor;
3
 
4
- use Elementor\Controls_Manager;
5
- use Elementor\Element_Base;
6
  use Elementor\Plugin as Elementor;
7
- use Happy_Addons\Elementor\Widget\Base as Happy_Addon_Base;
8
 
9
  defined( 'ABSPATH' ) || die();
10
 
11
- class Widget_Manager {
12
-
13
- private static $instance = null;
14
-
15
- public static function instance() {
16
- if ( is_null( self::$instance ) ) {
17
- self::$instance = new self();
18
- }
19
- return self::$instance;
20
- }
21
-
22
- public function init() {
23
- // Add Plugin actions
24
- add_action( 'elementor/widgets/widgets_registered', [ $this, 'register_widgets' ] );
25
- add_action( 'elementor/element/common/section_effects/after_section_start', [ $this, 'add_floating_effect_controls' ] );
26
- }
27
-
28
- public function add_floating_effect_controls( Element_Base $element ) {
29
- $element->add_control(
30
- 'ha_floating_fx',
31
- [
32
- 'label' => __( 'Floating Effects', 'happy_addons' ),
33
- 'type' => Controls_Manager::SWITCHER,
34
- 'return_value' => 'yes',
35
- 'frontend_available' => true,
36
- ]
37
- );
38
-
39
- $element->add_control(
40
- 'ha_floating_fx_translate_toggle',
41
- [
42
- 'label' => __( 'Translate', 'happy_addons' ),
43
- 'type' => Controls_Manager::POPOVER_TOGGLE,
44
- 'return_value' => 'yes',
45
- 'frontend_available' => true,
46
- 'condition' => [
47
- 'ha_floating_fx' => 'yes',
48
- ]
49
- ]
50
- );
51
-
52
- $element->start_popover();
53
-
54
- $element->add_control(
55
- 'ha_floating_fx_translate_x',
56
- [
57
- 'label' => __( 'Translate X', 'happy_addons' ),
58
- 'type' => Controls_Manager::SLIDER,
59
- 'size_units' => ['px'],
60
- 'condition' => [
61
- 'ha_floating_fx_translate_toggle' => 'yes',
62
- 'ha_floating_fx' => 'yes',
63
- ],
64
- 'render_type' => 'none',
65
- 'frontend_available' => true,
66
- ]
67
- );
68
-
69
- $element->add_control(
70
- 'ha_floating_fx_translate_y',
71
- [
72
- 'label' => __( 'Translate Y', 'happy_addons' ),
73
- 'type' => Controls_Manager::SLIDER,
74
- 'size_units' => ['px'],
75
- 'condition' => [
76
- 'ha_floating_fx_translate_toggle' => 'yes',
77
- 'ha_floating_fx' => 'yes',
78
- ],
79
- 'render_type' => 'none',
80
- 'frontend_available' => true,
81
- ]
82
- );
83
-
84
- $element->add_control(
85
- 'ha_floating_fx_translate_duration',
86
- [
87
- 'label' => __( 'Duration', 'happy_addons' ),
88
- 'type' => Controls_Manager::SLIDER,
89
- 'size_units' => ['px'],
90
- 'range' => [
91
- 'px' => [
92
- 'min' => 0,
93
- 'max' => 10000,
94
- 'step' => 100
95
- ]
96
- ],
97
- 'default' => [
98
- 'size' => 1000,
99
- ],
100
- 'condition' => [
101
- 'ha_floating_fx_translate_toggle' => 'yes',
102
- 'ha_floating_fx' => 'yes',
103
- ],
104
- 'render_type' => 'none',
105
- 'frontend_available' => true,
106
- ]
107
- );
108
-
109
- $element->add_control(
110
- 'ha_floating_fx_translate_delay',
111
- [
112
- 'label' => __( 'Delay', 'happy_addons' ),
113
- 'type' => Controls_Manager::SLIDER,
114
- 'size_units' => ['px'],
115
- 'range' => [
116
- 'px' => [
117
- 'min' => 0,
118
- 'max' => 5000,
119
- 'step' => 100
120
- ]
121
- ],
122
- 'condition' => [
123
- 'ha_floating_fx_translate_toggle' => 'yes',
124
- 'ha_floating_fx' => 'yes',
125
- ],
126
- 'render_type' => 'none',
127
- 'frontend_available' => true,
128
- ]
129
- );
130
-
131
- $element->end_popover();
132
-
133
- $element->add_control(
134
- 'ha_floating_fx_rotate_toggle',
135
- [
136
- 'label' => __( 'Rotate', 'happy_addons' ),
137
- 'type' => Controls_Manager::POPOVER_TOGGLE,
138
- 'return_value' => 'yes',
139
- 'frontend_available' => true,
140
- 'condition' => [
141
- 'ha_floating_fx' => 'yes',
142
- ]
143
- ]
144
- );
145
-
146
- $element->start_popover();
147
-
148
- $element->add_control(
149
- 'ha_floating_fx_rotate_x',
150
- [
151
- 'label' => __( 'Rotate X', 'happy_addons' ),
152
- 'type' => Controls_Manager::SLIDER,
153
- 'size_units' => ['px'],
154
- 'range' => [
155
- 'px' => [
156
- 'min' => 0,
157
- 'max' => 360,
158
- ]
159
- ],
160
- 'condition' => [
161
- 'ha_floating_fx_rotate_toggle' => 'yes',
162
- 'ha_floating_fx' => 'yes',
163
- ],
164
- 'render_type' => 'none',
165
- 'frontend_available' => true,
166
- ]
167
- );
168
-
169
- $element->add_control(
170
- 'ha_floating_fx_rotate_y',
171
- [
172
- 'label' => __( 'Rotate Y', 'happy_addons' ),
173
- 'type' => Controls_Manager::SLIDER,
174
- 'size_units' => ['px'],
175
- 'range' => [
176
- 'px' => [
177
- 'min' => 0,
178
- 'max' => 360,
179
- ]
180
- ],
181
- 'condition' => [
182
- 'ha_floating_fx_rotate_toggle' => 'yes',
183
- 'ha_floating_fx' => 'yes',
184
- ],
185
- 'render_type' => 'none',
186
- 'frontend_available' => true,
187
- ]
188
- );
189
-
190
- $element->add_control(
191
- 'ha_floating_fx_rotate_z',
192
- [
193
- 'label' => __( 'Rotate Z', 'happy_addons' ),
194
- 'type' => Controls_Manager::SLIDER,
195
- 'size_units' => ['px'],
196
- 'range' => [
197
- 'px' => [
198
- 'min' => 0,
199
- 'max' => 360,
200
- ]
201
- ],
202
- 'condition' => [
203
- 'ha_floating_fx_rotate_toggle' => 'yes',
204
- 'ha_floating_fx' => 'yes',
205
- ],
206
- 'render_type' => 'none',
207
- 'frontend_available' => true,
208
- ]
209
- );
210
-
211
- $element->add_control(
212
- 'ha_floating_fx_rotate_duration',
213
- [
214
- 'label' => __( 'Duration', 'happy_addons' ),
215
- 'type' => Controls_Manager::SLIDER,
216
- 'size_units' => ['px'],
217
- 'range' => [
218
- 'px' => [
219
- 'min' => 0,
220
- 'max' => 10000,
221
- 'step' => 100
222
- ]
223
- ],
224
- 'default' => [
225
- 'size' => 1000,
226
- ],
227
- 'condition' => [
228
- 'ha_floating_fx_rotate_toggle' => 'yes',
229
- 'ha_floating_fx' => 'yes',
230
- ],
231
- 'render_type' => 'none',
232
- 'frontend_available' => true,
233
- ]
234
- );
235
-
236
- $element->add_control(
237
- 'ha_floating_fx_rotate_delay',
238
- [
239
- 'label' => __( 'Delay', 'happy_addons' ),
240
- 'type' => Controls_Manager::SLIDER,
241
- 'size_units' => ['px'],
242
- 'range' => [
243
- 'px' => [
244
- 'min' => 0,
245
- 'max' => 5000,
246
- 'step' => 100
247
- ]
248
- ],
249
- 'condition' => [
250
- 'ha_floating_fx_rotate_toggle' => 'yes',
251
- 'ha_floating_fx' => 'yes',
252
- ],
253
- 'render_type' => 'none',
254
- 'frontend_available' => true,
255
- ]
256
- );
257
-
258
- $element->end_popover();
259
-
260
- $element->add_control(
261
- 'ha_floating_fx_scale_toggle',
262
- [
263
- 'label' => __( 'Scale', 'happy_addons' ),
264
- 'type' => Controls_Manager::POPOVER_TOGGLE,
265
- 'return_value' => 'yes',
266
- 'frontend_available' => true,
267
- 'condition' => [
268
- 'ha_floating_fx' => 'yes',
269
- ]
270
- ]
271
- );
272
-
273
- $element->start_popover();
274
-
275
- $element->add_control(
276
- 'ha_floating_fx_scale_x',
277
- [
278
- 'label' => __( 'Scale X', 'happy_addons' ),
279
- 'type' => Controls_Manager::SLIDER,
280
- 'size_units' => ['px'],
281
- 'range' => [
282
- 'px' => [
283
- 'min' => 0,
284
- 'max' => 10,
285
- 'step' => .1
286
- ]
287
- ],
288
- 'condition' => [
289
- 'ha_floating_fx_scale_toggle' => 'yes',
290
- 'ha_floating_fx' => 'yes',
291
- ],
292
- 'render_type' => 'none',
293
- 'frontend_available' => true,
294
- ]
295
- );
296
-
297
- $element->add_control(
298
- 'ha_floating_fx_scale_y',
299
- [
300
- 'label' => __( 'Scale Y', 'happy_addons' ),
301
- 'type' => Controls_Manager::SLIDER,
302
- 'size_units' => ['px'],
303
- 'range' => [
304
- 'px' => [
305
- 'min' => 0,
306
- 'max' => 10,
307
- 'step' => .1
308
- ]
309
- ],
310
- 'condition' => [
311
- 'ha_floating_fx_scale_toggle' => 'yes',
312
- 'ha_floating_fx' => 'yes',
313
- ],
314
- 'render_type' => 'none',
315
- 'frontend_available' => true,
316
- ]
317
- );
318
-
319
- $element->add_control(
320
- 'ha_floating_fx_scale_duration',
321
- [
322
- 'label' => __( 'Duration', 'happy_addons' ),
323
- 'type' => Controls_Manager::SLIDER,
324
- 'size_units' => ['px'],
325
- 'range' => [
326
- 'px' => [
327
- 'min' => 0,
328
- 'max' => 10000,
329
- 'step' => 100
330
- ]
331
- ],
332
- 'default' => [
333
- 'size' => 1000,
334
- ],
335
- 'condition' => [
336
- 'ha_floating_fx_scale_toggle' => 'yes',
337
- 'ha_floating_fx' => 'yes',
338
- ],
339
- 'render_type' => 'none',
340
- 'frontend_available' => true,
341
- ]
342
- );
343
-
344
- $element->add_control(
345
- 'ha_floating_fx_scale_delay',
346
- [
347
- 'label' => __( 'Delay', 'happy_addons' ),
348
- 'type' => Controls_Manager::SLIDER,
349
- 'size_units' => ['px'],
350
- 'range' => [
351
- 'px' => [
352
- 'min' => 0,
353
- 'max' => 5000,
354
- 'step' => 100
355
- ]
356
- ],
357
- 'condition' => [
358
- 'ha_floating_fx_scale_toggle' => 'yes',
359
- 'ha_floating_fx' => 'yes',
360
- ],
361
- 'render_type' => 'none',
362
- 'frontend_available' => true,
363
- ]
364
- );
365
-
366
- $element->end_popover();
367
-
368
- $element->add_control(
369
- 'hr',
370
- [
371
- 'type' => Controls_Manager::DIVIDER,
372
- ]
373
- );
374
  }
375
 
376
  /**
@@ -382,7 +19,7 @@ class Widget_Manager {
382
  *
383
  * @access public
384
  */
385
- public function register_widgets() {
386
  require( HAPPY_DIR_PATH . 'base/widget-base.php' );
387
 
388
  $widgets = [
@@ -399,6 +36,7 @@ class Widget_Manager {
399
  'ninjaform',
400
  'calderaform',
401
  'weform',
 
402
  ];
403
 
404
  foreach ( $widgets as $widget ) {
1
  <?php
2
+ namespace Happy_Addons\Elementor\Manager;
3
 
 
 
4
  use Elementor\Plugin as Elementor;
 
5
 
6
  defined( 'ABSPATH' ) || die();
7
 
8
+ class Widgets {
9
+ public static function init() {
10
+ add_action( 'elementor/widgets/widgets_registered', [__CLASS__, 'register'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  }
12
 
13
  /**
19
  *
20
  * @access public
21
  */
22
+ public static function register() {
23
  require( HAPPY_DIR_PATH . 'base/widget-base.php' );
24
 
25
  $widgets = [
36
  'ninjaform',
37
  'calderaform',
38
  'weform',
39
+ 'dual-button',
40
  ];
41
 
42
  foreach ( $widgets as $widget ) {
controls/foreground.php CHANGED
@@ -60,11 +60,11 @@ class Group_Control_Foreground extends Group_Control_Base {
60
  'render_type' => 'ui',
61
  'options' => [
62
  'classic' => [
63
- 'title' => _x( 'Classic', 'Text Color Control', 'happy_addons' ),
64
  'icon' => 'fa fa-paint-brush',
65
  ],
66
  'gradient' => [
67
- 'title' => _x( 'Gradient', 'Text Color Control', 'happy_addons' ),
68
  'icon' => 'fa fa-barcode',
69
  ],
70
  ],
60
  'render_type' => 'ui',
61
  'options' => [
62
  'classic' => [
63
+ 'title' => _x( 'Classic', 'Text Color Control', 'happy-elementor-addons' ),
64
  'icon' => 'fa fa-paint-brush',
65
  ],
66
  'gradient' => [
67
+ 'title' => _x( 'Gradient', 'Text Color Control', 'happy-elementor-addons' ),
68
  'icon' => 'fa fa-barcode',
69
  ],
70
  ],
inc/functions.php CHANGED
@@ -85,14 +85,14 @@ if ( ! function_exists( 'ha_get_ninjaform' ) ) {
85
 
86
  if ( !empty($contact_forms) && !is_wp_error( $contact_forms ) ) {
87
 
88
- $options[0] = esc_html__( 'Select Ninja Form', 'happy_addons' );
89
 
90
  foreach ( $contact_forms as $form ) {
91
  $options[$form->get_id()] = $form->get_setting('title');
92
  }
93
  }
94
  } else {
95
- $options[0] = esc_html__( 'Create a Form First', 'happy_addons' );
96
  }
97
 
98
  return $options;
@@ -112,13 +112,13 @@ if ( ! function_exists( 'ha_get_caldera_form' ) ) {
112
  $contact_forms = \Caldera_Forms_Forms::get_forms(true, true);
113
 
114
  if ( !empty( $contact_forms ) && !is_wp_error( $contact_forms ) ) {
115
- $options[0] = esc_html__( 'Select a Caldera Form', 'happy_addons' );
116
  foreach ( $contact_forms as $form ) {
117
  $options[$form['ID']] = $form['name'];
118
  }
119
  }
120
  } else {
121
- $options[0] = esc_html__( 'Create a Form First', 'happy_addons' );
122
  }
123
 
124
  return $options;
@@ -165,7 +165,7 @@ if ( ! function_exists( 'ha_get_modula_gallery' ) ) {
165
  if ( ! empty( $gallery ) ) {
166
  return wp_list_pluck( $gallery, 'post_title', 'ID' );
167
  } else {
168
- __( 'Create a Gallery', 'happy_addons' );
169
  }
170
  return [];
171
  }
85
 
86
  if ( !empty($contact_forms) && !is_wp_error( $contact_forms ) ) {
87
 
88
+ $options[0] = esc_html__( 'Select Ninja Form', 'happy-elementor-addons' );
89
 
90
  foreach ( $contact_forms as $form ) {
91
  $options[$form->get_id()] = $form->get_setting('title');
92
  }
93
  }
94
  } else {
95
+ $options[0] = esc_html__( 'Create a Form First', 'happy-elementor-addons' );
96
  }
97
 
98
  return $options;
112
  $contact_forms = \Caldera_Forms_Forms::get_forms(true, true);
113
 
114
  if ( !empty( $contact_forms ) && !is_wp_error( $contact_forms ) ) {
115
+ $options[0] = esc_html__( 'Select a Caldera Form', 'happy-elementor-addons' );
116
  foreach ( $contact_forms as $form ) {
117
  $options[$form['ID']] = $form['name'];
118
  }
119
  }
120
  } else {
121
+ $options[0] = esc_html__( 'Create a Form First', 'happy-elementor-addons' );
122
  }
123
 
124
  return $options;
165
  if ( ! empty( $gallery ) ) {
166
  return wp_list_pluck( $gallery, 'post_title', 'ID' );
167
  } else {
168
+ __( 'Create a Gallery', 'happy-elementor-addons' );
169
  }
170
  return [];
171
  }
plugin.php CHANGED
@@ -3,12 +3,12 @@
3
  * Plugin Name: Happy Elementor Addons
4
  * Plugin URI: https://happyaddons.com/
5
  * Description: <a href="https://happyaddons.com/">HappyAddons</a> is a collection of slick, powerful widgets that works seamlessly with Elementor page builder. It’s trendy look with detail customization features allows to create extraordinary designs instantly. <a href="https://happyaddons.com/">HappyAddons</a> is free, rapidly growing and comes with great support.
6
- * Version: 1.0.4
7
  * Author: HappyMonster
8
  * Author URI: https://happymonster.me/
9
  * License: GPLv2
10
  * License URI: https://www.gnu.org/licenses/gpl-2.0.html
11
- * Text Domain: happy_addons
12
  * Domain Path: /languages/
13
  *
14
  * @package Happy_Addons
3
  * Plugin Name: Happy Elementor Addons
4
  * Plugin URI: https://happyaddons.com/
5
  * Description: <a href="https://happyaddons.com/">HappyAddons</a> is a collection of slick, powerful widgets that works seamlessly with Elementor page builder. It’s trendy look with detail customization features allows to create extraordinary designs instantly. <a href="https://happyaddons.com/">HappyAddons</a> is free, rapidly growing and comes with great support.
6
+ * Version: 1.0.5
7
  * Author: HappyMonster
8
  * Author URI: https://happymonster.me/
9
  * License: GPLv2
10
  * License URI: https://www.gnu.org/licenses/gpl-2.0.html
11
+ * Text Domain: happy-elementor-addons
12
  * Domain Path: /languages/
13
  *
14
  * @package Happy_Addons
readme.txt CHANGED
@@ -1,14 +1,14 @@
1
  === Happy Elementor Addons ===
2
  Plugin Name: Happy Elementor Addons
3
- Version: 1.0.4
4
  Author: HappyMonster
5
  Author URI: http://happymonster.me/
6
  Contributors: thehappymonster, happyaddons, hasinhayder, obiplabon, sourav926
7
  Tags: elementor, form, page builder, widget, addon
8
- Requires at least: 4.5
9
  Tested up to: 5.2.2
10
  Requires PHP: 5.4
11
- Stable tag: 1.0.4
12
  License: GPLv2
13
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
14
 
@@ -18,8 +18,6 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
18
 
19
  [HappyAddons](https://happyaddons.com/) is a collection of slick, powerful widgets that works seamlessly with Elementor page builder. It’s trendy look with detail customization features allows to create extraordinary designs instantly. [HappyAddons](https://happyaddons.com/) is free, rapidly growing and comes with great support.
20
 
21
- **[Get Support](https://happyaddons.com/happy-support/)** | **[Report an Issue](https://github.com/project-mmxix/happyaddons-issues/issues)**
22
-
23
  ### Included Free Widgets
24
 
25
  1. **[Card](https://happyaddons.com/elementor-card-widget-demo/)** - Incredibly powerful widget to demonstrate your products, articles, news, creative posts using a beautiful combination of texts, links, badge and image. Using built in positioning and offset feature you can create eye-candy designs in a twist. [Check demo](https://happyaddons.com/elementor-card-widget-demo/)
@@ -31,9 +29,19 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
31
  7. **[Review](https://happyaddons.com/elementor-review-widget-demo/)** - Showcase your user feedback, reviews and rating easily than ever using our review widget. Display user photo, texts and star ratings. Make them stand out using built in offsets and positioning features. [Check demo](https://happyaddons.com/elementor-review-widget-demo/)
32
  8. **[Skill Bars](https://happyaddons.com/elementor-skill-bars-widget-demo/)** - An essential building block to showcase user skills, task percentage, required tools and other progressive information in different ways. Comes with incredible customizing options to suit your needs. [Check demo](https://happyaddons.com/elementor-skill-bars-widget-demo/)
33
  9. **[Contact Form 7](https://happyaddons.com/elementor-contact-form-7-widget-demo/)** - This utility widget helps you to integrate existing forms built using CF7 plugin across your web pages without spending too much time. [Check demo](https://happyaddons.com/elementor-contact-form-7-widget-demo/)
34
- 10. **[Caldera Form](https://happyaddons.com/elementor-caldera-forms-widget-demo/)** - This widget can help you to display your caldera forms to display on your web pages designed with Elementor. [Check demo](https://happyaddons.com/elementor-caldera-forms-widget-demo/)
35
- 11. **[We Forms](https://happyaddons.com/elementor-we-forms-widget-demo/)** - Designed forms using weForms plugin and looking for a way to display those on your Elementor powered pages? This is the answer for that. [Check demo](https://happyaddons.com/elementor-we-forms-widget-demo/)
36
  12. **[Ninja Forms](https://happyaddons.com/elementor-ninja-form-widget-demo/)** - Use this widget to embed forms created using Ninja Forms to display seamlessly on your web pages. Various styling options will help you to look at them even better. [Check demo](https://happyaddons.com/elementor-ninja-form-widget-demo/)
 
 
 
 
 
 
 
 
 
 
37
 
38
  ### Features
39
 
@@ -64,8 +72,33 @@ It's really easy and super simple to install **Happy Elementor Addons** plugin b
64
  3. Upload the plugin files to the `/wp-content/plugins/happy-elementor-addons` directory.
65
  4. Activate the plugin through the 'Plugins' screen in WordPress.
66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  == Changelog ==
68
 
 
 
 
 
 
 
 
 
69
  = 1.0.4 =
70
 
71
  * Fix: Card widget responsive issue
1
  === Happy Elementor Addons ===
2
  Plugin Name: Happy Elementor Addons
3
+ Version: 1.0.5
4
  Author: HappyMonster
5
  Author URI: http://happymonster.me/
6
  Contributors: thehappymonster, happyaddons, hasinhayder, obiplabon, sourav926
7
  Tags: elementor, form, page builder, widget, addon
8
+ Requires at least: 4.7
9
  Tested up to: 5.2.2
10
  Requires PHP: 5.4
11
+ Stable tag: 1.0.5
12
  License: GPLv2
13
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
14
 
18
 
19
  [HappyAddons](https://happyaddons.com/) is a collection of slick, powerful widgets that works seamlessly with Elementor page builder. It’s trendy look with detail customization features allows to create extraordinary designs instantly. [HappyAddons](https://happyaddons.com/) is free, rapidly growing and comes with great support.
20
 
 
 
21
  ### Included Free Widgets
22
 
23
  1. **[Card](https://happyaddons.com/elementor-card-widget-demo/)** - Incredibly powerful widget to demonstrate your products, articles, news, creative posts using a beautiful combination of texts, links, badge and image. Using built in positioning and offset feature you can create eye-candy designs in a twist. [Check demo](https://happyaddons.com/elementor-card-widget-demo/)
29
  7. **[Review](https://happyaddons.com/elementor-review-widget-demo/)** - Showcase your user feedback, reviews and rating easily than ever using our review widget. Display user photo, texts and star ratings. Make them stand out using built in offsets and positioning features. [Check demo](https://happyaddons.com/elementor-review-widget-demo/)
30
  8. **[Skill Bars](https://happyaddons.com/elementor-skill-bars-widget-demo/)** - An essential building block to showcase user skills, task percentage, required tools and other progressive information in different ways. Comes with incredible customizing options to suit your needs. [Check demo](https://happyaddons.com/elementor-skill-bars-widget-demo/)
31
  9. **[Contact Form 7](https://happyaddons.com/elementor-contact-form-7-widget-demo/)** - This utility widget helps you to integrate existing forms built using CF7 plugin across your web pages without spending too much time. [Check demo](https://happyaddons.com/elementor-contact-form-7-widget-demo/)
32
+ 10. **[Caldera Forms](https://happyaddons.com/elementor-caldera-forms-widget-demo/)** - This widget can help you to display your caldera forms to display on your web pages designed with Elementor. [Check demo](https://happyaddons.com/elementor-caldera-forms-widget-demo/)
33
+ 11. **[weForms](https://happyaddons.com/elementor-we-forms-widget-demo/)** - Designed forms using weForms plugin and looking for a way to display those on your Elementor powered pages? This is the answer for that. [Check demo](https://happyaddons.com/elementor-we-forms-widget-demo/)
34
  12. **[Ninja Forms](https://happyaddons.com/elementor-ninja-form-widget-demo/)** - Use this widget to embed forms created using Ninja Forms to display seamlessly on your web pages. Various styling options will help you to look at them even better. [Check demo](https://happyaddons.com/elementor-ninja-form-widget-demo/)
35
+ 12. **WPForms** - Use this widget to embed forms created using WPForms to display seamlessly on your web pages. Various styling options will help you to look at them even better.
36
+ 13. **[Dual Button](https://happyaddons.com/elementor-dual-button-widget-demo/)** - DualButton widget allows you to add two flexible and trendy action buttons in your sections, in different styles.
37
+
38
+ ### Included Free Extensions
39
+ **Happy Effects**
40
+
41
+ 1. **[Floating Effects](https://happyaddons.com/elementor-floating-effect-demo/)**
42
+ 2. **[CSS Transform](https://happyaddons.com/elementor-css-transform-demo/)**
43
+
44
+ https://www.youtube.com/watch?v=LmtacsLcFPU
45
 
46
  ### Features
47
 
72
  3. Upload the plugin files to the `/wp-content/plugins/happy-elementor-addons` directory.
73
  4. Activate the plugin through the 'Plugins' screen in WordPress.
74
 
75
+ == Screenshots ==
76
+
77
+ 1. Review widget with image offset
78
+ 2. Icon box widget - capsule design
79
+ 3. Team member widget
80
+ 4. Info box widget
81
+ 5. Skill bars widget
82
+ 6. Dual button widget
83
+ 7. Icon box widget with label
84
+ 8. Happy Effects - available in all kinds of Elementor widgets. And works smoothly with all the 3rd party Elementor addons plugin, Elementor Pro and Elementor
85
+ 9. Happy Effects - CSS Transform - Rotate
86
+ 10. happy Effects - CSS Transform - Rotate and Translate
87
+ 11. Review widget - capsule design
88
+ 12. Card widget with Happy Effects (Floating Effects)
89
+ 13. Card widget - capsule design
90
+
91
+
92
  == Changelog ==
93
 
94
+ = 1.0.5 =
95
+
96
+ * New: Happy Effects (universal widget extension)
97
+ * New: CSS Transform (Happy Effects)
98
+ * New: Dual Button Widget
99
+ * Fix: Info box icon size issue
100
+ * Fix: Icon box icon size issue
101
+
102
  = 1.0.4 =
103
 
104
  * Fix: Card widget responsive issue
widgets/calderaform/widget.php CHANGED
@@ -24,7 +24,7 @@ class CalderaForm extends Base {
24
  * @return string Widget title.
25
  */
26
  public function get_title() {
27
- return __( 'Caldera Form', 'happy_addons' );
28
  }
29
 
30
  /**
@@ -47,8 +47,7 @@ class CalderaForm extends Base {
47
  $this->start_controls_section(
48
  '_section_calderaf',
49
  [
50
- 'label' => ha_is_calderaf_activated() ? __( 'Caldera Form', 'happy_addons' ) : __( 'Notice', 'happy_addons' ),
51
- 'tab' => Controls_Manager::TAB_CONTENT,
52
  ]
53
  );
54
 
@@ -58,9 +57,10 @@ class CalderaForm extends Base {
58
  [
59
  'type' => Controls_Manager::RAW_HTML,
60
  'raw' => sprintf(
61
- __( 'Hi, it seems %1$s is missing in your site. Please install and activate %1$s first.', 'happy_addons' ),
62
  '<a href="https://wordpress.org/plugins/caldera-forms/" target="_blank" rel="noopener">Caldera Form</a>'
63
- )
 
64
  ]
65
  );
66
  $this->end_controls_section();
@@ -70,10 +70,10 @@ class CalderaForm extends Base {
70
  $this->add_control(
71
  'form_id',
72
  [
73
- 'label' => __( 'Select Your Form', 'happy_addons' ),
74
  'type' => Controls_Manager::SELECT,
75
  'label_block' => true,
76
- 'options' => ['' => __( '', 'happy_addons' ) ] + \ha_get_caldera_form(),
77
  ]
78
  );
79
 
@@ -84,7 +84,7 @@ class CalderaForm extends Base {
84
  $this->start_controls_section(
85
  '_section_fields_style',
86
  [
87
- 'label' => __( 'Form Fields', 'happy_addons' ),
88
  'tab' => Controls_Manager::TAB_STYLE,
89
  ]
90
  );
@@ -92,7 +92,7 @@ class CalderaForm extends Base {
92
  $this->add_responsive_control(
93
  'field_margin',
94
  [
95
- 'label' => __( 'Field Spacing', 'happy_addons' ),
96
  'type' => Controls_Manager::DIMENSIONS,
97
  'size_units' => [ 'px', '%' ],
98
  'selectors' => [
@@ -104,7 +104,7 @@ class CalderaForm extends Base {
104
  $this->add_responsive_control(
105
  'field_padding',
106
  [
107
- 'label' => __( 'Padding', 'happy_addons' ),
108
  'type' => Controls_Manager::DIMENSIONS,
109
  'size_units' => [ 'px', 'em', '%' ],
110
  'selectors' => [
@@ -116,7 +116,7 @@ class CalderaForm extends Base {
116
  $this->add_responsive_control(
117
  'field_border_radius',
118
  [
119
- 'label' => __( 'Border Radius', 'happy_addons' ),
120
  'type' => Controls_Manager::DIMENSIONS,
121
  'size_units' => [ 'px', '%' ],
122
  'selectors' => [
@@ -129,7 +129,7 @@ class CalderaForm extends Base {
129
  Group_Control_Typography::get_type(),
130
  [
131
  'name' => 'field_typography',
132
- 'label' => __( 'Typography', 'happy_addons' ),
133
  'selector' => '{{WRAPPER}} .form-group input:not(.btn), {{WRAPPER}} .form-group textarea',
134
  ]
135
  );
@@ -137,7 +137,7 @@ class CalderaForm extends Base {
137
  $this->add_control(
138
  'field_textcolor',
139
  [
140
- 'label' => __( 'Field Text Color', 'happy_addons' ),
141
  'type' => Controls_Manager::COLOR,
142
  'selectors' => [
143
  '{{WRAPPER}} .form-group input:not(.btn), {{WRAPPER}} .form-group textarea' => 'color: {{VALUE}}',
@@ -148,7 +148,7 @@ class CalderaForm extends Base {
148
  $this->add_control(
149
  'field_placeholder_color',
150
  [
151
- 'label' => __( 'Field Placeholder Color', 'happy_addons' ),
152
  'type' => Controls_Manager::COLOR,
153
  'selectors' => [
154
  '{{WRAPPER}} ::-webkit-input-placeholder' => 'color: {{VALUE}};',
@@ -163,7 +163,7 @@ class CalderaForm extends Base {
163
  $this->start_controls_tab(
164
  'tab_field_normal',
165
  [
166
- 'label' => __( 'Normal', 'happy_addons' ),
167
  ]
168
  );
169
 
@@ -186,7 +186,7 @@ class CalderaForm extends Base {
186
  $this->add_control(
187
  'field_bg_color',
188
  [
189
- 'label' => __( 'Background Color', 'happy_addons' ),
190
  'type' => Controls_Manager::COLOR,
191
  'selectors' => [
192
  '{{WRAPPER}} .form-group input:not(.btn), {{WRAPPER}} .form-group textarea' => 'background-color: {{VALUE}}',
@@ -199,7 +199,7 @@ class CalderaForm extends Base {
199
  $this->start_controls_tab(
200
  'tab_field_focus',
201
  [
202
- 'label' => __( 'Focus', 'happy_addons' ),
203
  ]
204
  );
205
 
@@ -225,7 +225,7 @@ class CalderaForm extends Base {
225
  $this->add_control(
226
  'field_focus_bg_color',
227
  [
228
- 'label' => __( 'Background Color', 'happy_addons' ),
229
  'type' => Controls_Manager::COLOR,
230
  'selectors' => [
231
  '{{WRAPPER}} .form-group input:focus:not(.btn), {{WRAPPER}} .form-group textarea:focus' => 'background-color: {{VALUE}}',
@@ -242,7 +242,7 @@ class CalderaForm extends Base {
242
  $this->start_controls_section(
243
  'caldera-form-label',
244
  [
245
- 'label' => __( 'Form Fields Label', 'happy_addons' ),
246
  'tab' => Controls_Manager::TAB_STYLE,
247
  ]
248
  );
@@ -250,7 +250,7 @@ class CalderaForm extends Base {
250
  $this->add_responsive_control(
251
  'label_margin',
252
  [
253
- 'label' => __( 'Margin', 'happy_addons' ),
254
  'type' => Controls_Manager::DIMENSIONS,
255
  'size_units' => [ 'px', '%' ],
256
  'selectors' => [
@@ -262,7 +262,7 @@ class CalderaForm extends Base {
262
  $this->add_responsive_control(
263
  'label_padding',
264
  [
265
- 'label' => __( 'Padding', 'happy_addons' ),
266
  'type' => Controls_Manager::DIMENSIONS,
267
  'size_units' => [ 'px', 'em', '%' ],
268
  'selectors' => [
@@ -283,7 +283,7 @@ class CalderaForm extends Base {
283
  Group_Control_Typography::get_type(),
284
  [
285
  'name' => 'label_typography',
286
- 'label' => __( 'Label Typography', 'happy_addons' ),
287
  'selector' => '{{WRAPPER}} .caldera-grid label',
288
  ]
289
  );
@@ -292,7 +292,7 @@ class CalderaForm extends Base {
292
  Group_Control_Typography::get_type(),
293
  [
294
  'name' => 'desc_typography',
295
- 'label' => __( 'Description Typography', 'happy_addons' ),
296
  'selector' => '{{WRAPPER}} .caldera-grid .help-block',
297
  ]
298
  );
@@ -300,7 +300,7 @@ class CalderaForm extends Base {
300
  $this->add_control(
301
  'label_color',
302
  [
303
- 'label' => __( 'Label Text Color', 'happy_addons' ),
304
  'type' => Controls_Manager::COLOR,
305
  'selectors' => [
306
  '{{WRAPPER}} .caldera-grid label' => 'color: {{VALUE}}',
@@ -311,7 +311,7 @@ class CalderaForm extends Base {
311
  $this->add_control(
312
  'requered_label',
313
  [
314
- 'label' => __( 'Required Label Color', 'happy_addons' ),
315
  'type' => Controls_Manager::COLOR,
316
  'selectors' => [
317
  '{{WRAPPER}} .field_required' => 'color: {{VALUE}} !important',
@@ -322,7 +322,7 @@ class CalderaForm extends Base {
322
  $this->add_control(
323
  'desc_color',
324
  [
325
- 'label' => __( 'Description Text Color', 'happy_addons' ),
326
  'type' => Controls_Manager::COLOR,
327
  'selectors' => [
328
  '{{WRAPPER}} .caldera-grid .help-block' => 'color: {{VALUE}}',
@@ -335,7 +335,7 @@ class CalderaForm extends Base {
335
  $this->start_controls_section(
336
  'submit',
337
  [
338
- 'label' => __( 'Submit Button', 'happy_addons' ),
339
  'tab' => Controls_Manager::TAB_STYLE,
340
  ]
341
  );
@@ -343,10 +343,10 @@ class CalderaForm extends Base {
343
  $this->add_control(
344
  'submit_btn_width',
345
  [
346
- 'label' => __( 'Button Full Width?', 'happy_addons' ),
347
  'type' => Controls_Manager::SWITCHER,
348
- 'label_on' => __( 'Yes', 'happy_addons' ),
349
- 'label_off' => __( 'No', 'happy_addons' ),
350
  'return_value' => 'yes',
351
  'default' => 'yes',
352
  ]
@@ -355,7 +355,7 @@ class CalderaForm extends Base {
355
  $this->add_responsive_control(
356
  'button_width',
357
  [
358
- 'label' => __( 'Button Width', 'happy_addons' ),
359
  'type' => Controls_Manager::SLIDER,
360
  'size_units' => [ 'px', '%' ],
361
  'condition' => [
@@ -384,7 +384,7 @@ class CalderaForm extends Base {
384
  $this->add_responsive_control(
385
  'submit_margin',
386
  [
387
- 'label' => __( 'Margin', 'happy_addons' ),
388
  'type' => Controls_Manager::DIMENSIONS,
389
  'size_units' => [ 'px', '%' ],
390
  'selectors' => [
@@ -396,7 +396,7 @@ class CalderaForm extends Base {
396
  $this->add_responsive_control(
397
  'submit_padding',
398
  [
399
- 'label' => __( 'Padding', 'happy_addons' ),
400
  'type' => Controls_Manager::DIMENSIONS,
401
  'size_units' => [ 'px', 'em', '%' ],
402
  'selectors' => [
@@ -424,7 +424,7 @@ class CalderaForm extends Base {
424
  $this->add_control(
425
  'submit_border_radius',
426
  [
427
- 'label' => __( 'Border Radius', 'happy_addons' ),
428
  'type' => Controls_Manager::DIMENSIONS,
429
  'size_units' => [ 'px', '%' ],
430
  'selectors' => [
@@ -454,14 +454,14 @@ class CalderaForm extends Base {
454
  $this->start_controls_tab(
455
  'tab_button_normal',
456
  [
457
- 'label' => __( 'Normal', 'happy_addons' ),
458
  ]
459
  );
460
 
461
  $this->add_control(
462
  'submit_color',
463
  [
464
- 'label' => __( 'Text Color', 'happy_addons' ),
465
  'type' => Controls_Manager::COLOR,
466
  'default' => '',
467
  'selectors' => [
@@ -473,7 +473,7 @@ class CalderaForm extends Base {
473
  $this->add_control(
474
  'submit_bg_color',
475
  [
476
- 'label' => __( 'Background Color', 'happy_addons' ),
477
  'type' => Controls_Manager::COLOR,
478
  'selectors' => [
479
  '{{WRAPPER}} .form-group .btn' => 'background-color: {{VALUE}};',
@@ -486,14 +486,14 @@ class CalderaForm extends Base {
486
  $this->start_controls_tab(
487
  'tab_button_hover',
488
  [
489
- 'label' => __( 'Hover', 'happy_addons' ),
490
  ]
491
  );
492
 
493
  $this->add_control(
494
  'submit_hover_color',
495
  [
496
- 'label' => __( 'Text Color', 'happy_addons' ),
497
  'type' => Controls_Manager::COLOR,
498
  'selectors' => [
499
  '{{WRAPPER}} .form-group .btn:hover, {{WRAPPER}} .form-group .btn:focus' => 'color: {{VALUE}};',
@@ -504,7 +504,7 @@ class CalderaForm extends Base {
504
  $this->add_control(
505
  'submit_hover_bg_color',
506
  [
507
- 'label' => __( 'Background Color', 'happy_addons' ),
508
  'type' => Controls_Manager::COLOR,
509
  'selectors' => [
510
  '{{WRAPPER}} .form-group .btn:hover, {{WRAPPER}} .form-group .btn:focus' => 'background-color: {{VALUE}};',
@@ -515,7 +515,7 @@ class CalderaForm extends Base {
515
  $this->add_control(
516
  'submit_hover_border_color',
517
  [
518
- 'label' => __( 'Border Color', 'happy_addons' ),
519
  'type' => Controls_Manager::COLOR,
520
  'selectors' => [
521
  '{{WRAPPER}} .form-group .btn:hover, {{WRAPPER}} .form-group .btn:focus' => 'border-color: {{VALUE}};',
24
  * @return string Widget title.
25
  */
26
  public function get_title() {
27
+ return __( 'Caldera Forms', 'happy-elementor-addons' );
28
  }
29
 
30
  /**
47
  $this->start_controls_section(
48
  '_section_calderaf',
49
  [
50
+ 'label' => ha_is_calderaf_activated() ? __( 'Caldera Forms', 'happy-elementor-addons' ) : __( 'Notice', 'happy-elementor-addons' ),
 
51
  ]
52
  );
53
 
57
  [
58
  'type' => Controls_Manager::RAW_HTML,
59
  'raw' => sprintf(
60
+ __( 'Hi, it seems %1$s is missing in your site. Please install and activate %1$s first.', 'happy-elementor-addons' ),
61
  '<a href="https://wordpress.org/plugins/caldera-forms/" target="_blank" rel="noopener">Caldera Form</a>'
62
+ ),
63
+ 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning',
64
  ]
65
  );
66
  $this->end_controls_section();
70
  $this->add_control(
71
  'form_id',
72
  [
73
+ 'label' => __( 'Select Your Form', 'happy-elementor-addons' ),
74
  'type' => Controls_Manager::SELECT,
75
  'label_block' => true,
76
+ 'options' => ['' => __( '', 'happy-elementor-addons' ) ] + \ha_get_caldera_form(),
77
  ]
78
  );
79
 
84
  $this->start_controls_section(
85
  '_section_fields_style',
86
  [
87
+ 'label' => __( 'Form Fields', 'happy-elementor-addons' ),
88
  'tab' => Controls_Manager::TAB_STYLE,
89
  ]
90
  );
92
  $this->add_responsive_control(
93
  'field_margin',
94
  [
95
+ 'label' => __( 'Field Spacing', 'happy-elementor-addons' ),
96
  'type' => Controls_Manager::DIMENSIONS,
97
  'size_units' => [ 'px', '%' ],
98
  'selectors' => [
104
  $this->add_responsive_control(
105
  'field_padding',
106
  [
107
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
108
  'type' => Controls_Manager::DIMENSIONS,
109
  'size_units' => [ 'px', 'em', '%' ],
110
  'selectors' => [
116
  $this->add_responsive_control(
117
  'field_border_radius',
118
  [
119
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
120
  'type' => Controls_Manager::DIMENSIONS,
121
  'size_units' => [ 'px', '%' ],
122
  'selectors' => [
129
  Group_Control_Typography::get_type(),
130
  [
131
  'name' => 'field_typography',
132
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
133
  'selector' => '{{WRAPPER}} .form-group input:not(.btn), {{WRAPPER}} .form-group textarea',
134
  ]
135
  );
137
  $this->add_control(
138
  'field_textcolor',
139
  [
140
+ 'label' => __( 'Field Text Color', 'happy-elementor-addons' ),
141
  'type' => Controls_Manager::COLOR,
142
  'selectors' => [
143
  '{{WRAPPER}} .form-group input:not(.btn), {{WRAPPER}} .form-group textarea' => 'color: {{VALUE}}',
148
  $this->add_control(
149
  'field_placeholder_color',
150
  [
151
+ 'label' => __( 'Field Placeholder Color', 'happy-elementor-addons' ),
152
  'type' => Controls_Manager::COLOR,
153
  'selectors' => [
154
  '{{WRAPPER}} ::-webkit-input-placeholder' => 'color: {{VALUE}};',
163
  $this->start_controls_tab(
164
  'tab_field_normal',
165
  [
166
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
167
  ]
168
  );
169
 
186
  $this->add_control(
187
  'field_bg_color',
188
  [
189
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
190
  'type' => Controls_Manager::COLOR,
191
  'selectors' => [
192
  '{{WRAPPER}} .form-group input:not(.btn), {{WRAPPER}} .form-group textarea' => 'background-color: {{VALUE}}',
199
  $this->start_controls_tab(
200
  'tab_field_focus',
201
  [
202
+ 'label' => __( 'Focus', 'happy-elementor-addons' ),
203
  ]
204
  );
205
 
225
  $this->add_control(
226
  'field_focus_bg_color',
227
  [
228
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
229
  'type' => Controls_Manager::COLOR,
230
  'selectors' => [
231
  '{{WRAPPER}} .form-group input:focus:not(.btn), {{WRAPPER}} .form-group textarea:focus' => 'background-color: {{VALUE}}',
242
  $this->start_controls_section(
243
  'caldera-form-label',
244
  [
245
+ 'label' => __( 'Form Fields Label', 'happy-elementor-addons' ),
246
  'tab' => Controls_Manager::TAB_STYLE,
247
  ]
248
  );
250
  $this->add_responsive_control(
251
  'label_margin',
252
  [
253
+ 'label' => __( 'Margin', 'happy-elementor-addons' ),
254
  'type' => Controls_Manager::DIMENSIONS,
255
  'size_units' => [ 'px', '%' ],
256
  'selectors' => [
262
  $this->add_responsive_control(
263
  'label_padding',
264
  [
265
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
266
  'type' => Controls_Manager::DIMENSIONS,
267
  'size_units' => [ 'px', 'em', '%' ],
268
  'selectors' => [
283
  Group_Control_Typography::get_type(),
284
  [
285
  'name' => 'label_typography',
286
+ 'label' => __( 'Label Typography', 'happy-elementor-addons' ),
287
  'selector' => '{{WRAPPER}} .caldera-grid label',
288
  ]
289
  );
292
  Group_Control_Typography::get_type(),
293
  [
294
  'name' => 'desc_typography',
295
+ 'label' => __( 'Description Typography', 'happy-elementor-addons' ),
296
  'selector' => '{{WRAPPER}} .caldera-grid .help-block',
297
  ]
298
  );
300
  $this->add_control(
301
  'label_color',
302
  [
303
+ 'label' => __( 'Label Text Color', 'happy-elementor-addons' ),
304
  'type' => Controls_Manager::COLOR,
305
  'selectors' => [
306
  '{{WRAPPER}} .caldera-grid label' => 'color: {{VALUE}}',
311
  $this->add_control(
312
  'requered_label',
313
  [
314
+ 'label' => __( 'Required Label Color', 'happy-elementor-addons' ),
315
  'type' => Controls_Manager::COLOR,
316
  'selectors' => [
317
  '{{WRAPPER}} .field_required' => 'color: {{VALUE}} !important',
322
  $this->add_control(
323
  'desc_color',
324
  [
325
+ 'label' => __( 'Description Text Color', 'happy-elementor-addons' ),
326
  'type' => Controls_Manager::COLOR,
327
  'selectors' => [
328
  '{{WRAPPER}} .caldera-grid .help-block' => 'color: {{VALUE}}',
335
  $this->start_controls_section(
336
  'submit',
337
  [
338
+ 'label' => __( 'Submit Button', 'happy-elementor-addons' ),
339
  'tab' => Controls_Manager::TAB_STYLE,
340
  ]
341
  );
343
  $this->add_control(
344
  'submit_btn_width',
345
  [
346
+ 'label' => __( 'Button Full Width?', 'happy-elementor-addons' ),
347
  'type' => Controls_Manager::SWITCHER,
348
+ 'label_on' => __( 'Yes', 'happy-elementor-addons' ),
349
+ 'label_off' => __( 'No', 'happy-elementor-addons' ),
350
  'return_value' => 'yes',
351
  'default' => 'yes',
352
  ]
355
  $this->add_responsive_control(
356
  'button_width',
357
  [
358
+ 'label' => __( 'Button Width', 'happy-elementor-addons' ),
359
  'type' => Controls_Manager::SLIDER,
360
  'size_units' => [ 'px', '%' ],
361
  'condition' => [
384
  $this->add_responsive_control(
385
  'submit_margin',
386
  [
387
+ 'label' => __( 'Margin', 'happy-elementor-addons' ),
388
  'type' => Controls_Manager::DIMENSIONS,
389
  'size_units' => [ 'px', '%' ],
390
  'selectors' => [
396
  $this->add_responsive_control(
397
  'submit_padding',
398
  [
399
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
400
  'type' => Controls_Manager::DIMENSIONS,
401
  'size_units' => [ 'px', 'em', '%' ],
402
  'selectors' => [
424
  $this->add_control(
425
  'submit_border_radius',
426
  [
427
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
428
  'type' => Controls_Manager::DIMENSIONS,
429
  'size_units' => [ 'px', '%' ],
430
  'selectors' => [
454
  $this->start_controls_tab(
455
  'tab_button_normal',
456
  [
457
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
458
  ]
459
  );
460
 
461
  $this->add_control(
462
  'submit_color',
463
  [
464
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
465
  'type' => Controls_Manager::COLOR,
466
  'default' => '',
467
  'selectors' => [
473
  $this->add_control(
474
  'submit_bg_color',
475
  [
476
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
477
  'type' => Controls_Manager::COLOR,
478
  'selectors' => [
479
  '{{WRAPPER}} .form-group .btn' => 'background-color: {{VALUE}};',
486
  $this->start_controls_tab(
487
  'tab_button_hover',
488
  [
489
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
490
  ]
491
  );
492
 
493
  $this->add_control(
494
  'submit_hover_color',
495
  [
496
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
497
  'type' => Controls_Manager::COLOR,
498
  'selectors' => [
499
  '{{WRAPPER}} .form-group .btn:hover, {{WRAPPER}} .form-group .btn:focus' => 'color: {{VALUE}};',
504
  $this->add_control(
505
  'submit_hover_bg_color',
506
  [
507
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
508
  'type' => Controls_Manager::COLOR,
509
  'selectors' => [
510
  '{{WRAPPER}} .form-group .btn:hover, {{WRAPPER}} .form-group .btn:focus' => 'background-color: {{VALUE}};',
515
  $this->add_control(
516
  'submit_hover_border_color',
517
  [
518
+ 'label' => __( 'Border Color', 'happy-elementor-addons' ),
519
  'type' => Controls_Manager::COLOR,
520
  'selectors' => [
521
  '{{WRAPPER}} .form-group .btn:hover, {{WRAPPER}} .form-group .btn:focus' => 'border-color: {{VALUE}};',
widgets/card/widget.php CHANGED
@@ -28,15 +28,15 @@ class Card extends Base {
28
  * @return string Widget title.
29
  */
30
  public function get_title() {
31
- return __( 'Card', 'happy_addons' );
32
  }
33
 
34
  protected function get_presets() {
35
  return [
36
- 'design-1' => __( 'Design 1', 'happy_addons' ),
37
- 'design-2' => __( 'Design 2', 'happy_addons' ),
38
- 'design-3' => __( 'Design 3', 'happy_addons' ),
39
- 'design-4' => __( 'Design 4', 'happy_addons' ),
40
  ];
41
  }
42
 
@@ -60,7 +60,7 @@ class Card extends Base {
60
  $this->start_controls_section(
61
  '_section_image',
62
  [
63
- 'label' => __( 'Image & Badge', 'happy_addons' ),
64
  'tab' => Controls_Manager::TAB_CONTENT,
65
  ]
66
  );
@@ -68,7 +68,7 @@ class Card extends Base {
68
  $this->add_control(
69
  'image',
70
  [
71
- 'label' => __( 'Image', 'happy_addons' ),
72
  'type' => Controls_Manager::MEDIA,
73
  'default' => [
74
  'url' => Utils::get_placeholder_image_src(),
@@ -88,20 +88,20 @@ class Card extends Base {
88
  $this->add_control(
89
  'image_position',
90
  [
91
- 'label' => __( 'Image Position', 'happy_addons' ),
92
  'type' => Controls_Manager::CHOOSE,
93
  'label_block' => false,
94
  'options' => [
95
  'left' => [
96
- 'title' => __( 'Left', 'happy_addons' ),
97
  'icon' => 'eicon-h-align-left',
98
  ],
99
  'top' => [
100
- 'title' => __( 'Top', 'happy_addons' ),
101
  'icon' => 'eicon-v-align-top',
102
  ],
103
  'right' => [
104
- 'title' => __( 'Right', 'happy_addons' ),
105
  'icon' => 'eicon-h-align-right',
106
  ],
107
  ],
@@ -114,12 +114,12 @@ class Card extends Base {
114
  $this->add_control(
115
  'badge_text',
116
  [
117
- 'label' => __( 'Badge Text', 'happy_addons' ),
118
  'type' => Controls_Manager::TEXT,
119
- 'default' => __( 'Badget Text', 'happy_addons' ),
120
- 'placeholder' => __( 'Type badge text', 'happy_addons' ),
121
  'separator' => 'before',
122
- 'description' => __( 'Set badget position and control all the style settings from Style tab', 'happy_addons' ),
123
  ]
124
  );
125
 
@@ -128,7 +128,7 @@ class Card extends Base {
128
  $this->start_controls_section(
129
  '_section_title',
130
  [
131
- 'label' => __( 'Title & Description', 'happy_addons' ),
132
  'tab' => Controls_Manager::TAB_CONTENT,
133
  ]
134
  );
@@ -136,21 +136,21 @@ class Card extends Base {
136
  $this->add_control(
137
  'title',
138
  [
139
- 'label' => __( 'Title', 'happy_addons' ),
140
  'label_block' => true,
141
  'type' => Controls_Manager::TEXT,
142
- 'default' => __( 'Happy Card Title', 'happy_addons' ),
143
- 'placeholder' => __( 'Type Card Title', 'happy_addons' ),
144
  ]
145
  );
146
 
147
  $this->add_control(
148
  'description',
149
  [
150
- 'label' => __( 'Description', 'happy_addons' ),
151
  'type' => Controls_Manager::TEXTAREA,
152
- 'default' => __( 'Happy card description goes here', 'happy_addons' ),
153
- 'placeholder' => __( 'Type card description', 'happy_addons' ),
154
  'rows' => 5
155
  ]
156
  );
@@ -158,31 +158,31 @@ class Card extends Base {
158
  $this->add_control(
159
  'title_tag',
160
  [
161
- 'label' => __( 'Title HTML Tag', 'happy_addons' ),
162
  'type' => Controls_Manager::CHOOSE,
163
  'options' => [
164
  'h1' => [
165
- 'title' => __( 'H1', 'happy_addons' ),
166
  'icon' => 'eicon-editor-h1'
167
  ],
168
  'h2' => [
169
- 'title' => __( 'H2', 'happy_addons' ),
170
  'icon' => 'eicon-editor-h2'
171
  ],
172
  'h3' => [
173
- 'title' => __( 'H3', 'happy_addons' ),
174
  'icon' => 'eicon-editor-h3'
175
  ],
176
  'h4' => [
177
- 'title' => __( 'H4', 'happy_addons' ),
178
  'icon' => 'eicon-editor-h4'
179
  ],
180
  'h5' => [
181
- 'title' => __( 'H5', 'happy_addons' ),
182
  'icon' => 'eicon-editor-h5'
183
  ],
184
  'h6' => [
185
- 'title' => __( 'H6', 'happy_addons' ),
186
  'icon' => 'eicon-editor-h6'
187
  ]
188
  ],
@@ -194,23 +194,23 @@ class Card extends Base {
194
  $this->add_responsive_control(
195
  'align',
196
  [
197
- 'label' => __( 'Alignment', 'happy_addons' ),
198
  'type' => Controls_Manager::CHOOSE,
199
  'options' => [
200
  'left' => [
201
- 'title' => __( 'Left', 'happy_addons' ),
202
  'icon' => 'fa fa-align-left',
203
  ],
204
  'center' => [
205
- 'title' => __( 'Center', 'happy_addons' ),
206
  'icon' => 'fa fa-align-center',
207
  ],
208
  'right' => [
209
- 'title' => __( 'Right', 'happy_addons' ),
210
  'icon' => 'fa fa-align-right',
211
  ],
212
  'justify' => [
213
- 'title' => __( 'Justify', 'happy_addons' ),
214
  'icon' => 'fa fa-align-justify',
215
  ],
216
  ],
@@ -226,7 +226,7 @@ class Card extends Base {
226
  $this->start_controls_section(
227
  '_section_button',
228
  [
229
- 'label' => __( 'Button', 'happy_addons' ),
230
  'tab' => Controls_Manager::TAB_CONTENT,
231
  ]
232
  );
@@ -234,10 +234,10 @@ class Card extends Base {
234
  $this->add_control(
235
  'button_text',
236
  [
237
- 'label' => __( 'Text', 'happy_addons' ),
238
  'type' => Controls_Manager::TEXT,
239
- 'default' => __( 'Button Text', 'happy_addons' ),
240
- 'placeholder' => __( 'Type button text here', 'happy_addons' ),
241
  'label_block' => true,
242
  ]
243
  );
@@ -245,16 +245,16 @@ class Card extends Base {
245
  $this->add_control(
246
  'button_link',
247
  [
248
- 'label' => __( 'Link', 'happy_addons' ),
249
  'type' => Controls_Manager::URL,
250
- 'placeholder' => __( 'https://example.com/', 'happy_addons' ),
251
  ]
252
  );
253
 
254
  $this->add_control(
255
  'button_icon',
256
  [
257
- 'label' => __( 'Icon', 'happy_addons' ),
258
  'type' => Controls_Manager::ICON,
259
  'options' => ha_get_happy_icons(),
260
  ]
@@ -263,16 +263,16 @@ class Card extends Base {
263
  $this->add_control(
264
  'button_icon_position',
265
  [
266
- 'label' => __( 'Icon Position', 'happy_addons' ),
267
  'type' => Controls_Manager::CHOOSE,
268
  'label_block' => false,
269
  'options' => [
270
  'before' => [
271
- 'title' => __( 'Before', 'happy_addons' ),
272
  'icon' => 'eicon-h-align-left',
273
  ],
274
  'after' => [
275
- 'title' => __( 'After', 'happy_addons' ),
276
  'icon' => 'eicon-h-align-right',
277
  ],
278
  ],
@@ -287,7 +287,7 @@ class Card extends Base {
287
  $this->add_control(
288
  'button_icon_spacing',
289
  [
290
- 'label' => __( 'Icon Spacing', 'happy_addons' ),
291
  'type' => Controls_Manager::SLIDER,
292
  'condition' => [
293
  'button_icon!' => '',
@@ -306,7 +306,7 @@ class Card extends Base {
306
  $this->start_controls_section(
307
  '_section_style_image',
308
  [
309
- 'label' => __( 'Image', 'happy_addons' ),
310
  'tab' => Controls_Manager::TAB_STYLE,
311
  ]
312
  );
@@ -314,7 +314,7 @@ class Card extends Base {
314
  $this->add_responsive_control(
315
  'image_width',
316
  [
317
- 'label' => __( 'Width', 'happy_addons' ),
318
  'type' => Controls_Manager::SLIDER,
319
  'size_units' => [ '%', 'px' ],
320
  'desktop_default' => [
@@ -346,7 +346,7 @@ class Card extends Base {
346
  $this->add_responsive_control(
347
  'image_height',
348
  [
349
- 'label' => __( 'Height', 'happy_addons' ),
350
  'type' => Controls_Manager::SLIDER,
351
  'size_units' => [ 'px' ],
352
  'range' => [
@@ -364,10 +364,10 @@ class Card extends Base {
364
  $this->add_control(
365
  'offset_toggle',
366
  [
367
- 'label' => __( 'Offset', 'happy_addons' ),
368
  'type' => Controls_Manager::POPOVER_TOGGLE,
369
- 'label_off' => __( 'None', 'happy_addons' ),
370
- 'label_on' => __( 'Custom', 'happy_addons' ),
371
  'return_value' => 'yes',
372
  ]
373
  );
@@ -377,7 +377,7 @@ class Card extends Base {
377
  $this->add_responsive_control(
378
  'image_offset_x',
379
  [
380
- 'label' => __( 'Offset Left', 'happy_addons' ),
381
  'type' => Controls_Manager::SLIDER,
382
  'size_units' => ['px'],
383
  'condition' => [
@@ -396,7 +396,7 @@ class Card extends Base {
396
  $this->add_responsive_control(
397
  'image_offset_y',
398
  [
399
- 'label' => __( 'Offset Top', 'happy_addons' ),
400
  'type' => Controls_Manager::SLIDER,
401
  'size_units' => ['px'],
402
  'condition' => [
@@ -431,7 +431,7 @@ class Card extends Base {
431
  $this->add_responsive_control(
432
  'image_padding',
433
  [
434
- 'label' => __( 'Padding', 'happy_addons' ),
435
  'type' => Controls_Manager::DIMENSIONS,
436
  'size_units' => [ 'px', 'em', '%' ],
437
  'selectors' => [
@@ -451,7 +451,7 @@ class Card extends Base {
451
  $this->add_responsive_control(
452
  'image_border_radius',
453
  [
454
- 'label' => __( 'Border Radius', 'happy_addons' ),
455
  'type' => Controls_Manager::DIMENSIONS,
456
  'size_units' => [ 'px', '%' ],
457
  'selectors' => [
@@ -476,7 +476,7 @@ class Card extends Base {
476
  $this->start_controls_section(
477
  '_section_style_badge',
478
  [
479
- 'label' => __( 'Badge', 'happy_addons' ),
480
  'tab' => Controls_Manager::TAB_STYLE,
481
  ]
482
  );
@@ -484,18 +484,18 @@ class Card extends Base {
484
  $this->add_control(
485
  'badge_position',
486
  [
487
- 'label' => __( 'Position', 'happy_addons' ),
488
  'type' => Controls_Manager::SELECT,
489
  'options' => [
490
- 'top-left' => __( 'Top Left', 'happy_addons' ),
491
- 'top-center' => __( 'Top Center', 'happy_addons' ),
492
- 'top-right' => __( 'Top Right', 'happy_addons' ),
493
- 'middle-left' => __( 'Middle Left', 'happy_addons' ),
494
- 'middle-center' => __( 'Middle Center', 'happy_addons' ),
495
- 'middle-right' => __( 'Middle Right', 'happy_addons' ),
496
- 'bottom-left' => __( 'Bottom Left', 'happy_addons' ),
497
- 'bottom-center' => __( 'Bottom Center', 'happy_addons' ),
498
- 'bottom-right' => __( 'Bottom Right', 'happy_addons' ),
499
  ],
500
  'default' => 'top-right',
501
  ]
@@ -504,10 +504,10 @@ class Card extends Base {
504
  $this->add_control(
505
  'badge_offset_toggle',
506
  [
507
- 'label' => __( 'Offset', 'happy_addons' ),
508
  'type' => Controls_Manager::POPOVER_TOGGLE,
509
- 'label_off' => __( 'None', 'happy_addons' ),
510
- 'label_on' => __( 'Custom', 'happy_addons' ),
511
  'return_value' => 'yes',
512
  ]
513
  );
@@ -517,7 +517,7 @@ class Card extends Base {
517
  $this->add_responsive_control(
518
  'badge_offset_x',
519
  [
520
- 'label' => __( 'Offset Left', 'happy_addons' ),
521
  'type' => Controls_Manager::SLIDER,
522
  'size_units' => ['px'],
523
  'condition' => [
@@ -536,7 +536,7 @@ class Card extends Base {
536
  $this->add_responsive_control(
537
  'badge_offset_y',
538
  [
539
- 'label' => __( 'Offset Top', 'happy_addons' ),
540
  'type' => Controls_Manager::SLIDER,
541
  'size_units' => ['px'],
542
  'condition' => [
@@ -560,7 +560,7 @@ class Card extends Base {
560
  $this->add_responsive_control(
561
  'badge_padding',
562
  [
563
- 'label' => __( 'Padding', 'happy_addons' ),
564
  'type' => Controls_Manager::DIMENSIONS,
565
  'size_units' => [ 'px', 'em', '%' ],
566
  'selectors' => [
@@ -572,7 +572,7 @@ class Card extends Base {
572
  $this->add_control(
573
  'badge_color',
574
  [
575
- 'label' => __( 'Text Color', 'happy_addons' ),
576
  'type' => Controls_Manager::COLOR,
577
  'selectors' => [
578
  '{{WRAPPER}} .ha-badge' => 'color: {{VALUE}}',
@@ -583,7 +583,7 @@ class Card extends Base {
583
  $this->add_control(
584
  'badge_bg_color',
585
  [
586
- 'label' => __( 'Background Color', 'happy_addons' ),
587
  'type' => Controls_Manager::COLOR,
588
  'selectors' => [
589
  '{{WRAPPER}} .ha-badge' => 'background-color: {{VALUE}}',
@@ -602,7 +602,7 @@ class Card extends Base {
602
  $this->add_responsive_control(
603
  'badge_border_radius',
604
  [
605
- 'label' => __( 'Border Radius', 'happy_addons' ),
606
  'type' => Controls_Manager::DIMENSIONS,
607
  'size_units' => [ 'px', '%' ],
608
  'selectors' => [
@@ -626,7 +626,7 @@ class Card extends Base {
626
  Group_Control_Typography::get_type(),
627
  [
628
  'name' => 'badge_typography',
629
- 'label' => __( 'Typography', 'happy_addons' ),
630
  'exclude' => [
631
  'line_height'
632
  ],
@@ -643,7 +643,7 @@ class Card extends Base {
643
  $this->start_controls_section(
644
  '_section_style_content',
645
  [
646
- 'label' => __( 'Title & Description', 'happy_addons' ),
647
  'tab' => Controls_Manager::TAB_STYLE,
648
  ]
649
  );
@@ -651,7 +651,7 @@ class Card extends Base {
651
  $this->add_responsive_control(
652
  'content_padding',
653
  [
654
- 'label' => __( 'Content Padding', 'happy_addons' ),
655
  'type' => Controls_Manager::DIMENSIONS,
656
  'size_units' => [ 'px', 'em', '%' ],
657
  'selectors' => [
@@ -664,7 +664,7 @@ class Card extends Base {
664
  '_heading_title',
665
  [
666
  'type' => Controls_Manager::HEADING,
667
- 'label' => __( 'Title', 'happy_addons' ),
668
  'separator' => 'before'
669
  ]
670
  );
@@ -672,7 +672,7 @@ class Card extends Base {
672
  $this->add_responsive_control(
673
  'title_spacing',
674
  [
675
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
676
  'type' => Controls_Manager::SLIDER,
677
  'size_units' => ['px'],
678
  'selectors' => [
@@ -684,7 +684,7 @@ class Card extends Base {
684
  $this->add_control(
685
  'title_color',
686
  [
687
- 'label' => __( 'Text Color', 'happy_addons' ),
688
  'type' => Controls_Manager::COLOR,
689
  'selectors' => [
690
  '{{WRAPPER}} .ha-card-title' => 'color: {{VALUE}}',
@@ -696,7 +696,7 @@ class Card extends Base {
696
  Group_Control_Typography::get_type(),
697
  [
698
  'name' => 'title_typography',
699
- 'label' => __( 'Typography', 'happy_addons' ),
700
  'selector' => '{{WRAPPER}} .ha-card-title',
701
  'scheme' => Scheme_Typography::TYPOGRAPHY_2,
702
  ]
@@ -706,7 +706,7 @@ class Card extends Base {
706
  '_heading_description',
707
  [
708
  'type' => Controls_Manager::HEADING,
709
- 'label' => __( 'Description', 'happy_addons' ),
710
  'separator' => 'before'
711
  ]
712
  );
@@ -714,7 +714,7 @@ class Card extends Base {
714
  $this->add_responsive_control(
715
  'description_spacing',
716
  [
717
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
718
  'type' => Controls_Manager::SLIDER,
719
  'size_units' => ['px'],
720
  'selectors' => [
@@ -726,7 +726,7 @@ class Card extends Base {
726
  $this->add_control(
727
  'description_color',
728
  [
729
- 'label' => __( 'Text Color', 'happy_addons' ),
730
  'type' => Controls_Manager::COLOR,
731
  'selectors' => [
732
  '{{WRAPPER}} .ha-card-text' => 'color: {{VALUE}}',
@@ -738,7 +738,7 @@ class Card extends Base {
738
  Group_Control_Typography::get_type(),
739
  [
740
  'name' => 'description_typography',
741
- 'label' => __( 'Typography', 'happy_addons' ),
742
  'selector' => '{{WRAPPER}} .ha-card-text',
743
  'scheme' => Scheme_Typography::TYPOGRAPHY_3,
744
  ]
@@ -749,7 +749,7 @@ class Card extends Base {
749
  $this->start_controls_section(
750
  '_section_style_button',
751
  [
752
- 'label' => __( 'Button', 'happy_addons' ),
753
  'tab' => Controls_Manager::TAB_STYLE,
754
  ]
755
  );
@@ -757,7 +757,7 @@ class Card extends Base {
757
  $this->add_responsive_control(
758
  'button_padding',
759
  [
760
- 'label' => __( 'Padding', 'happy_addons' ),
761
  'type' => Controls_Manager::DIMENSIONS,
762
  'size_units' => [ 'px', 'em', '%' ],
763
  'selectors' => [
@@ -786,7 +786,7 @@ class Card extends Base {
786
  $this->add_control(
787
  'button_border_radius',
788
  [
789
- 'label' => __( 'Border Radius', 'happy_addons' ),
790
  'type' => Controls_Manager::DIMENSIONS,
791
  'size_units' => [ 'px', '%' ],
792
  'selectors' => [
@@ -816,14 +816,14 @@ class Card extends Base {
816
  $this->start_controls_tab(
817
  '_tab_button_normal',
818
  [
819
- 'label' => __( 'Normal', 'happy_addons' ),
820
  ]
821
  );
822
 
823
  $this->add_control(
824
  'button_color',
825
  [
826
- 'label' => __( 'Text Color', 'happy_addons' ),
827
  'type' => Controls_Manager::COLOR,
828
  'default' => '',
829
  'selectors' => [
@@ -835,7 +835,7 @@ class Card extends Base {
835
  $this->add_control(
836
  'button_bg_color',
837
  [
838
- 'label' => __( 'Background Color', 'happy_addons' ),
839
  'type' => Controls_Manager::COLOR,
840
  'selectors' => [
841
  '{{WRAPPER}} .ha-btn' => 'background-color: {{VALUE}};',
@@ -848,14 +848,14 @@ class Card extends Base {
848
  $this->start_controls_tab(
849
  '_tab_button_hover',
850
  [
851
- 'label' => __( 'Hover', 'happy_addons' ),
852
  ]
853
  );
854
 
855
  $this->add_control(
856
  'button_hover_color',
857
  [
858
- 'label' => __( 'Text Color', 'happy_addons' ),
859
  'type' => Controls_Manager::COLOR,
860
  'selectors' => [
861
  '{{WRAPPER}} .ha-btn:hover, {{WRAPPER}} .ha-btn:focus' => 'color: {{VALUE}};',
@@ -866,7 +866,7 @@ class Card extends Base {
866
  $this->add_control(
867
  'button_hover_bg_color',
868
  [
869
- 'label' => __( 'Background Color', 'happy_addons' ),
870
  'type' => Controls_Manager::COLOR,
871
  'selectors' => [
872
  '{{WRAPPER}} .ha-btn:hover, {{WRAPPER}} .ha-btn:focus' => 'background-color: {{VALUE}};',
@@ -877,7 +877,7 @@ class Card extends Base {
877
  $this->add_control(
878
  'button_hover_border_color',
879
  [
880
- 'label' => __( 'Border Color', 'happy_addons' ),
881
  'type' => Controls_Manager::COLOR,
882
  'condition' => [
883
  'button_border_border!' => '',
@@ -1009,6 +1009,8 @@ class Card extends Base {
1009
  view.addRenderAttribute( 'button', 'class', 'ha-btn' );
1010
  view.addRenderAttribute( 'button', 'href', settings.button_link.url );
1011
 
 
 
1012
  if ( settings.image.url || settings.image.id ) {
1013
  var image = {
1014
  id: settings.image.id,
28
  * @return string Widget title.
29
  */
30
  public function get_title() {
31
+ return __( 'Card', 'happy-elementor-addons' );
32
  }
33
 
34
  protected function get_presets() {
35
  return [
36
+ 'design-1' => __( 'Design 1', 'happy-elementor-addons' ),
37
+ 'design-2' => __( 'Design 2', 'happy-elementor-addons' ),
38
+ 'design-3' => __( 'Design 3', 'happy-elementor-addons' ),
39
+ 'design-4' => __( 'Design 4', 'happy-elementor-addons' ),
40
  ];
41
  }
42
 
60
  $this->start_controls_section(
61
  '_section_image',
62
  [
63
+ 'label' => __( 'Image & Badge', 'happy-elementor-addons' ),
64
  'tab' => Controls_Manager::TAB_CONTENT,
65
  ]
66
  );
68
  $this->add_control(
69
  'image',
70
  [
71
+ 'label' => __( 'Image', 'happy-elementor-addons' ),
72
  'type' => Controls_Manager::MEDIA,
73
  'default' => [
74
  'url' => Utils::get_placeholder_image_src(),
88
  $this->add_control(
89
  'image_position',
90
  [
91
+ 'label' => __( 'Image Position', 'happy-elementor-addons' ),
92
  'type' => Controls_Manager::CHOOSE,
93
  'label_block' => false,
94
  'options' => [
95
  'left' => [
96
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
97
  'icon' => 'eicon-h-align-left',
98
  ],
99
  'top' => [
100
+ 'title' => __( 'Top', 'happy-elementor-addons' ),
101
  'icon' => 'eicon-v-align-top',
102
  ],
103
  'right' => [
104
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
105
  'icon' => 'eicon-h-align-right',
106
  ],
107
  ],
114
  $this->add_control(
115
  'badge_text',
116
  [
117
+ 'label' => __( 'Badge Text', 'happy-elementor-addons' ),
118
  'type' => Controls_Manager::TEXT,
119
+ 'default' => __( 'Badget Text', 'happy-elementor-addons' ),
120
+ 'placeholder' => __( 'Type badge text', 'happy-elementor-addons' ),
121
  'separator' => 'before',
122
+ 'description' => __( 'Set badget position and control all the style settings from Style tab', 'happy-elementor-addons' ),
123
  ]
124
  );
125
 
128
  $this->start_controls_section(
129
  '_section_title',
130
  [
131
+ 'label' => __( 'Title & Description', 'happy-elementor-addons' ),
132
  'tab' => Controls_Manager::TAB_CONTENT,
133
  ]
134
  );
136
  $this->add_control(
137
  'title',
138
  [
139
+ 'label' => __( 'Title', 'happy-elementor-addons' ),
140
  'label_block' => true,
141
  'type' => Controls_Manager::TEXT,
142
+ 'default' => __( 'Happy Card Title', 'happy-elementor-addons' ),
143
+ 'placeholder' => __( 'Type Card Title', 'happy-elementor-addons' ),
144
  ]
145
  );
146
 
147
  $this->add_control(
148
  'description',
149
  [
150
+ 'label' => __( 'Description', 'happy-elementor-addons' ),
151
  'type' => Controls_Manager::TEXTAREA,
152
+ 'default' => __( 'Happy card description goes here', 'happy-elementor-addons' ),
153
+ 'placeholder' => __( 'Type card description', 'happy-elementor-addons' ),
154
  'rows' => 5
155
  ]
156
  );
158
  $this->add_control(
159
  'title_tag',
160
  [
161
+ 'label' => __( 'Title HTML Tag', 'happy-elementor-addons' ),
162
  'type' => Controls_Manager::CHOOSE,
163
  'options' => [
164
  'h1' => [
165
+ 'title' => __( 'H1', 'happy-elementor-addons' ),
166
  'icon' => 'eicon-editor-h1'
167
  ],
168
  'h2' => [
169
+ 'title' => __( 'H2', 'happy-elementor-addons' ),
170
  'icon' => 'eicon-editor-h2'
171
  ],
172
  'h3' => [
173
+ 'title' => __( 'H3', 'happy-elementor-addons' ),
174
  'icon' => 'eicon-editor-h3'
175
  ],
176
  'h4' => [
177
+ 'title' => __( 'H4', 'happy-elementor-addons' ),
178
  'icon' => 'eicon-editor-h4'
179
  ],
180
  'h5' => [
181
+ 'title' => __( 'H5', 'happy-elementor-addons' ),
182
  'icon' => 'eicon-editor-h5'
183
  ],
184
  'h6' => [
185
+ 'title' => __( 'H6', 'happy-elementor-addons' ),
186
  'icon' => 'eicon-editor-h6'
187
  ]
188
  ],
194
  $this->add_responsive_control(
195
  'align',
196
  [
197
+ 'label' => __( 'Alignment', 'happy-elementor-addons' ),
198
  'type' => Controls_Manager::CHOOSE,
199
  'options' => [
200
  'left' => [
201
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
202
  'icon' => 'fa fa-align-left',
203
  ],
204
  'center' => [
205
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
206
  'icon' => 'fa fa-align-center',
207
  ],
208
  'right' => [
209
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
210
  'icon' => 'fa fa-align-right',
211
  ],
212
  'justify' => [
213
+ 'title' => __( 'Justify', 'happy-elementor-addons' ),
214
  'icon' => 'fa fa-align-justify',
215
  ],
216
  ],
226
  $this->start_controls_section(
227
  '_section_button',
228
  [
229
+ 'label' => __( 'Button', 'happy-elementor-addons' ),
230
  'tab' => Controls_Manager::TAB_CONTENT,
231
  ]
232
  );
234
  $this->add_control(
235
  'button_text',
236
  [
237
+ 'label' => __( 'Text', 'happy-elementor-addons' ),
238
  'type' => Controls_Manager::TEXT,
239
+ 'default' => __( 'Button Text', 'happy-elementor-addons' ),
240
+ 'placeholder' => __( 'Type button text here', 'happy-elementor-addons' ),
241
  'label_block' => true,
242
  ]
243
  );
245
  $this->add_control(
246
  'button_link',
247
  [
248
+ 'label' => __( 'Link', 'happy-elementor-addons' ),
249
  'type' => Controls_Manager::URL,
250
+ 'placeholder' => __( 'https://example.com/', 'happy-elementor-addons' ),
251
  ]
252
  );
253
 
254
  $this->add_control(
255
  'button_icon',
256
  [
257
+ 'label' => __( 'Icon', 'happy-elementor-addons' ),
258
  'type' => Controls_Manager::ICON,
259
  'options' => ha_get_happy_icons(),
260
  ]
263
  $this->add_control(
264
  'button_icon_position',
265
  [
266
+ 'label' => __( 'Icon Position', 'happy-elementor-addons' ),
267
  'type' => Controls_Manager::CHOOSE,
268
  'label_block' => false,
269
  'options' => [
270
  'before' => [
271
+ 'title' => __( 'Before', 'happy-elementor-addons' ),
272
  'icon' => 'eicon-h-align-left',
273
  ],
274
  'after' => [
275
+ 'title' => __( 'After', 'happy-elementor-addons' ),
276
  'icon' => 'eicon-h-align-right',
277
  ],
278
  ],
287
  $this->add_control(
288
  'button_icon_spacing',
289
  [
290
+ 'label' => __( 'Icon Spacing', 'happy-elementor-addons' ),
291
  'type' => Controls_Manager::SLIDER,
292
  'condition' => [
293
  'button_icon!' => '',
306
  $this->start_controls_section(
307
  '_section_style_image',
308
  [
309
+ 'label' => __( 'Image', 'happy-elementor-addons' ),
310
  'tab' => Controls_Manager::TAB_STYLE,
311
  ]
312
  );
314
  $this->add_responsive_control(
315
  'image_width',
316
  [
317
+ 'label' => __( 'Width', 'happy-elementor-addons' ),
318
  'type' => Controls_Manager::SLIDER,
319
  'size_units' => [ '%', 'px' ],
320
  'desktop_default' => [
346
  $this->add_responsive_control(
347
  'image_height',
348
  [
349
+ 'label' => __( 'Height', 'happy-elementor-addons' ),
350
  'type' => Controls_Manager::SLIDER,
351
  'size_units' => [ 'px' ],
352
  'range' => [
364
  $this->add_control(
365
  'offset_toggle',
366
  [
367
+ 'label' => __( 'Offset', 'happy-elementor-addons' ),
368
  'type' => Controls_Manager::POPOVER_TOGGLE,
369
+ 'label_off' => __( 'None', 'happy-elementor-addons' ),
370
+ 'label_on' => __( 'Custom', 'happy-elementor-addons' ),
371
  'return_value' => 'yes',
372
  ]
373
  );
377
  $this->add_responsive_control(
378
  'image_offset_x',
379
  [
380
+ 'label' => __( 'Offset Left', 'happy-elementor-addons' ),
381
  'type' => Controls_Manager::SLIDER,
382
  'size_units' => ['px'],
383
  'condition' => [
396
  $this->add_responsive_control(
397
  'image_offset_y',
398
  [
399
+ 'label' => __( 'Offset Top', 'happy-elementor-addons' ),
400
  'type' => Controls_Manager::SLIDER,
401
  'size_units' => ['px'],
402
  'condition' => [
431
  $this->add_responsive_control(
432
  'image_padding',
433
  [
434
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
435
  'type' => Controls_Manager::DIMENSIONS,
436
  'size_units' => [ 'px', 'em', '%' ],
437
  'selectors' => [
451
  $this->add_responsive_control(
452
  'image_border_radius',
453
  [
454
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
455
  'type' => Controls_Manager::DIMENSIONS,
456
  'size_units' => [ 'px', '%' ],
457
  'selectors' => [
476
  $this->start_controls_section(
477
  '_section_style_badge',
478
  [
479
+ 'label' => __( 'Badge', 'happy-elementor-addons' ),
480
  'tab' => Controls_Manager::TAB_STYLE,
481
  ]
482
  );
484
  $this->add_control(
485
  'badge_position',
486
  [
487
+ 'label' => __( 'Position', 'happy-elementor-addons' ),
488
  'type' => Controls_Manager::SELECT,
489
  'options' => [
490
+ 'top-left' => __( 'Top Left', 'happy-elementor-addons' ),
491
+ 'top-center' => __( 'Top Center', 'happy-elementor-addons' ),
492
+ 'top-right' => __( 'Top Right', 'happy-elementor-addons' ),
493
+ 'middle-left' => __( 'Middle Left', 'happy-elementor-addons' ),
494
+ 'middle-center' => __( 'Middle Center', 'happy-elementor-addons' ),
495
+ 'middle-right' => __( 'Middle Right', 'happy-elementor-addons' ),
496
+ 'bottom-left' => __( 'Bottom Left', 'happy-elementor-addons' ),
497
+ 'bottom-center' => __( 'Bottom Center', 'happy-elementor-addons' ),
498
+ 'bottom-right' => __( 'Bottom Right', 'happy-elementor-addons' ),
499
  ],
500
  'default' => 'top-right',
501
  ]
504
  $this->add_control(
505
  'badge_offset_toggle',
506
  [
507
+ 'label' => __( 'Offset', 'happy-elementor-addons' ),
508
  'type' => Controls_Manager::POPOVER_TOGGLE,
509
+ 'label_off' => __( 'None', 'happy-elementor-addons' ),
510
+ 'label_on' => __( 'Custom', 'happy-elementor-addons' ),
511
  'return_value' => 'yes',
512
  ]
513
  );
517
  $this->add_responsive_control(
518
  'badge_offset_x',
519
  [
520
+ 'label' => __( 'Offset Left', 'happy-elementor-addons' ),
521
  'type' => Controls_Manager::SLIDER,
522
  'size_units' => ['px'],
523
  'condition' => [
536
  $this->add_responsive_control(
537
  'badge_offset_y',
538
  [
539
+ 'label' => __( 'Offset Top', 'happy-elementor-addons' ),
540
  'type' => Controls_Manager::SLIDER,
541
  'size_units' => ['px'],
542
  'condition' => [
560
  $this->add_responsive_control(
561
  'badge_padding',
562
  [
563
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
564
  'type' => Controls_Manager::DIMENSIONS,
565
  'size_units' => [ 'px', 'em', '%' ],
566
  'selectors' => [
572
  $this->add_control(
573
  'badge_color',
574
  [
575
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
576
  'type' => Controls_Manager::COLOR,
577
  'selectors' => [
578
  '{{WRAPPER}} .ha-badge' => 'color: {{VALUE}}',
583
  $this->add_control(
584
  'badge_bg_color',
585
  [
586
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
587
  'type' => Controls_Manager::COLOR,
588
  'selectors' => [
589
  '{{WRAPPER}} .ha-badge' => 'background-color: {{VALUE}}',
602
  $this->add_responsive_control(
603
  'badge_border_radius',
604
  [
605
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
606
  'type' => Controls_Manager::DIMENSIONS,
607
  'size_units' => [ 'px', '%' ],
608
  'selectors' => [
626
  Group_Control_Typography::get_type(),
627
  [
628
  'name' => 'badge_typography',
629
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
630
  'exclude' => [
631
  'line_height'
632
  ],
643
  $this->start_controls_section(
644
  '_section_style_content',
645
  [
646
+ 'label' => __( 'Title & Description', 'happy-elementor-addons' ),
647
  'tab' => Controls_Manager::TAB_STYLE,
648
  ]
649
  );
651
  $this->add_responsive_control(
652
  'content_padding',
653
  [
654
+ 'label' => __( 'Content Padding', 'happy-elementor-addons' ),
655
  'type' => Controls_Manager::DIMENSIONS,
656
  'size_units' => [ 'px', 'em', '%' ],
657
  'selectors' => [
664
  '_heading_title',
665
  [
666
  'type' => Controls_Manager::HEADING,
667
+ 'label' => __( 'Title', 'happy-elementor-addons' ),
668
  'separator' => 'before'
669
  ]
670
  );
672
  $this->add_responsive_control(
673
  'title_spacing',
674
  [
675
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
676
  'type' => Controls_Manager::SLIDER,
677
  'size_units' => ['px'],
678
  'selectors' => [
684
  $this->add_control(
685
  'title_color',
686
  [
687
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
688
  'type' => Controls_Manager::COLOR,
689
  'selectors' => [
690
  '{{WRAPPER}} .ha-card-title' => 'color: {{VALUE}}',
696
  Group_Control_Typography::get_type(),
697
  [
698
  'name' => 'title_typography',
699
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
700
  'selector' => '{{WRAPPER}} .ha-card-title',
701
  'scheme' => Scheme_Typography::TYPOGRAPHY_2,
702
  ]
706
  '_heading_description',
707
  [
708
  'type' => Controls_Manager::HEADING,
709
+ 'label' => __( 'Description', 'happy-elementor-addons' ),
710
  'separator' => 'before'
711
  ]
712
  );
714
  $this->add_responsive_control(
715
  'description_spacing',
716
  [
717
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
718
  'type' => Controls_Manager::SLIDER,
719
  'size_units' => ['px'],
720
  'selectors' => [
726
  $this->add_control(
727
  'description_color',
728
  [
729
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
730
  'type' => Controls_Manager::COLOR,
731
  'selectors' => [
732
  '{{WRAPPER}} .ha-card-text' => 'color: {{VALUE}}',
738
  Group_Control_Typography::get_type(),
739
  [
740
  'name' => 'description_typography',
741
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
742
  'selector' => '{{WRAPPER}} .ha-card-text',
743
  'scheme' => Scheme_Typography::TYPOGRAPHY_3,
744
  ]
749
  $this->start_controls_section(
750
  '_section_style_button',
751
  [
752
+ 'label' => __( 'Button', 'happy-elementor-addons' ),
753
  'tab' => Controls_Manager::TAB_STYLE,
754
  ]
755
  );
757
  $this->add_responsive_control(
758
  'button_padding',
759
  [
760
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
761
  'type' => Controls_Manager::DIMENSIONS,
762
  'size_units' => [ 'px', 'em', '%' ],
763
  'selectors' => [
786
  $this->add_control(
787
  'button_border_radius',
788
  [
789
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
790
  'type' => Controls_Manager::DIMENSIONS,
791
  'size_units' => [ 'px', '%' ],
792
  'selectors' => [
816
  $this->start_controls_tab(
817
  '_tab_button_normal',
818
  [
819
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
820
  ]
821
  );
822
 
823
  $this->add_control(
824
  'button_color',
825
  [
826
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
827
  'type' => Controls_Manager::COLOR,
828
  'default' => '',
829
  'selectors' => [
835
  $this->add_control(
836
  'button_bg_color',
837
  [
838
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
839
  'type' => Controls_Manager::COLOR,
840
  'selectors' => [
841
  '{{WRAPPER}} .ha-btn' => 'background-color: {{VALUE}};',
848
  $this->start_controls_tab(
849
  '_tab_button_hover',
850
  [
851
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
852
  ]
853
  );
854
 
855
  $this->add_control(
856
  'button_hover_color',
857
  [
858
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
859
  'type' => Controls_Manager::COLOR,
860
  'selectors' => [
861
  '{{WRAPPER}} .ha-btn:hover, {{WRAPPER}} .ha-btn:focus' => 'color: {{VALUE}};',
866
  $this->add_control(
867
  'button_hover_bg_color',
868
  [
869
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
870
  'type' => Controls_Manager::COLOR,
871
  'selectors' => [
872
  '{{WRAPPER}} .ha-btn:hover, {{WRAPPER}} .ha-btn:focus' => 'background-color: {{VALUE}};',
877
  $this->add_control(
878
  'button_hover_border_color',
879
  [
880
+ 'label' => __( 'Border Color', 'happy-elementor-addons' ),
881
  'type' => Controls_Manager::COLOR,
882
  'condition' => [
883
  'button_border_border!' => '',
1009
  view.addRenderAttribute( 'button', 'class', 'ha-btn' );
1010
  view.addRenderAttribute( 'button', 'href', settings.button_link.url );
1011
 
1012
+ HappyHelloWorld();
1013
+
1014
  if ( settings.image.url || settings.image.id ) {
1015
  var image = {
1016
  id: settings.image.id,
widgets/cf7/widget.php CHANGED
@@ -24,7 +24,7 @@ class CF7 extends Base {
24
  * @return string Widget title.
25
  */
26
  public function get_title() {
27
- return __( 'Contact Form 7', 'happy_addons' );
28
  }
29
 
30
  /**
@@ -47,7 +47,7 @@ class CF7 extends Base {
47
  $this->start_controls_section(
48
  '_section_cf7',
49
  [
50
- 'label' => ha_is_cf7_activated() ? __( 'Contact Form 7', 'happy_addons' ) : __( 'Notice', 'happy_addons' ),
51
  'tab' => Controls_Manager::TAB_CONTENT,
52
  ]
53
  );
@@ -58,9 +58,10 @@ class CF7 extends Base {
58
  [
59
  'type' => Controls_Manager::RAW_HTML,
60
  'raw' => sprintf(
61
- __( 'Hi, it seems %1$s is missing in your site. Please install and activate %1$s first.', 'happy_addons' ),
62
  '<a href="https://wordpress.org/plugins/contact-form-7/" target="_blank" rel="noopener">Contact Form 7</a>'
63
- )
 
64
  ]
65
  );
66
  $this->end_controls_section();
@@ -70,20 +71,20 @@ class CF7 extends Base {
70
  $this->add_control(
71
  'form_id',
72
  [
73
- 'label' => __( 'Select Your Form', 'happy_addons' ),
74
  'type' => Controls_Manager::SELECT,
75
  'label_block' => true,
76
- 'options' => ['' => __( '', 'happy_addons' ) ] + \ha_get_cf7_forms(),
77
  ]
78
  );
79
 
80
  $this->add_control(
81
  'html_class',
82
  [
83
- 'label' => __( 'HTML Class', 'happy_addons' ),
84
  'type' => Controls_Manager::TEXT,
85
  'label_block' => true,
86
- 'description' => __( 'Add CSS custom class to the form.', 'happy_addons' ),
87
  ]
88
  );
89
 
@@ -94,7 +95,7 @@ class CF7 extends Base {
94
  $this->start_controls_section(
95
  '_section_fields_style',
96
  [
97
- 'label' => __( 'Form Fields', 'happy_addons' ),
98
  'tab' => Controls_Manager::TAB_STYLE,
99
  ]
100
  );
@@ -102,7 +103,7 @@ class CF7 extends Base {
102
  $this->add_responsive_control(
103
  'field_width',
104
  [
105
- 'label' => __( 'Width', 'happy_addons' ),
106
  'type' => Controls_Manager::SLIDER,
107
  'default' => [
108
  'unit' => '%',
@@ -134,7 +135,7 @@ class CF7 extends Base {
134
  $this->add_responsive_control(
135
  'field_margin',
136
  [
137
- 'label' => __( 'Spacing Bottom', 'happy_addons' ),
138
  'type' => Controls_Manager::SLIDER,
139
  'size_units' => [ 'px' ],
140
  'range' => [
@@ -152,7 +153,7 @@ class CF7 extends Base {
152
  $this->add_responsive_control(
153
  'field_padding',
154
  [
155
- 'label' => __( 'Padding', 'happy_addons' ),
156
  'type' => Controls_Manager::DIMENSIONS,
157
  'size_units' => [ 'px', 'em', '%' ],
158
  'selectors' => [
@@ -164,7 +165,7 @@ class CF7 extends Base {
164
  $this->add_responsive_control(
165
  'field_border_radius',
166
  [
167
- 'label' => __( 'Border Radius', 'happy_addons' ),
168
  'type' => Controls_Manager::DIMENSIONS,
169
  'size_units' => [ 'px', '%' ],
170
  'selectors' => [
@@ -185,7 +186,7 @@ class CF7 extends Base {
185
  Group_Control_Typography::get_type(),
186
  [
187
  'name' => 'field_typography',
188
- 'label' => __( 'Typography', 'happy_addons' ),
189
  'selector' => '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)',
190
  ]
191
  );
@@ -193,7 +194,7 @@ class CF7 extends Base {
193
  $this->add_control(
194
  'field_color',
195
  [
196
- 'label' => __( 'Text Color', 'happy_addons' ),
197
  'type' => Controls_Manager::COLOR,
198
  'selectors' => [
199
  '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)' => 'color: {{VALUE}}',
@@ -204,7 +205,7 @@ class CF7 extends Base {
204
  $this->add_control(
205
  'field_placeholder_color',
206
  [
207
- 'label' => __( 'Placeholder Text Color', 'happy_addons' ),
208
  'type' => Controls_Manager::COLOR,
209
  'selectors' => [
210
  '{{WRAPPER}} ::-webkit-input-placeholder' => 'color: {{VALUE}};',
@@ -219,7 +220,7 @@ class CF7 extends Base {
219
  $this->start_controls_tab(
220
  'tab_field_normal',
221
  [
222
- 'label' => __( 'Normal', 'happy_addons' ),
223
  ]
224
  );
225
 
@@ -242,7 +243,7 @@ class CF7 extends Base {
242
  $this->add_control(
243
  'field_bg_color',
244
  [
245
- 'label' => __( 'Background Color', 'happy_addons' ),
246
  'type' => Controls_Manager::COLOR,
247
  'selectors' => [
248
  '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)' => 'background-color: {{VALUE}}',
@@ -255,7 +256,7 @@ class CF7 extends Base {
255
  $this->start_controls_tab(
256
  'tab_field_focus',
257
  [
258
- 'label' => __( 'Focus', 'happy_addons' ),
259
  ]
260
  );
261
 
@@ -281,7 +282,7 @@ class CF7 extends Base {
281
  $this->add_control(
282
  'field_focus_bg_color',
283
  [
284
- 'label' => __( 'Background Color', 'happy_addons' ),
285
  'type' => Controls_Manager::COLOR,
286
  'selectors' => [
287
  '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit):focus' => 'background-color: {{VALUE}}',
@@ -298,7 +299,7 @@ class CF7 extends Base {
298
  $this->start_controls_section(
299
  'cf7-form-label',
300
  [
301
- 'label' => __( 'Form Fields Label', 'happy_addons' ),
302
  'tab' => Controls_Manager::TAB_STYLE,
303
  ]
304
  );
@@ -306,7 +307,7 @@ class CF7 extends Base {
306
  $this->add_responsive_control(
307
  'label_margin',
308
  [
309
- 'label' => __( 'Spacing Bottom', 'happy_addons' ),
310
  'type' => Controls_Manager::SLIDER,
311
  'size_units' => [ 'px' ],
312
  'range' => [
@@ -333,7 +334,7 @@ class CF7 extends Base {
333
  Group_Control_Typography::get_type(),
334
  [
335
  'name' => 'label_typography',
336
- 'label' => __( 'Typography', 'happy_addons' ),
337
  'selector' => '{{WRAPPER}} label',
338
  ]
339
  );
@@ -341,7 +342,7 @@ class CF7 extends Base {
341
  $this->add_control(
342
  'label_color',
343
  [
344
- 'label' => __( 'Text Color', 'happy_addons' ),
345
  'type' => Controls_Manager::COLOR,
346
  'selectors' => [
347
  '{{WRAPPER}} label' => 'color: {{VALUE}}',
@@ -354,7 +355,7 @@ class CF7 extends Base {
354
  $this->start_controls_section(
355
  'submit',
356
  [
357
- 'label' => __( 'Submit Button', 'happy_addons' ),
358
  'tab' => Controls_Manager::TAB_STYLE,
359
  ]
360
  );
@@ -362,7 +363,7 @@ class CF7 extends Base {
362
  $this->add_responsive_control(
363
  'submit_margin',
364
  [
365
- 'label' => __( 'Margin', 'happy_addons' ),
366
  'type' => Controls_Manager::DIMENSIONS,
367
  'size_units' => [ 'px', '%' ],
368
  'selectors' => [
@@ -374,7 +375,7 @@ class CF7 extends Base {
374
  $this->add_responsive_control(
375
  'submit_padding',
376
  [
377
- 'label' => __( 'Padding', 'happy_addons' ),
378
  'type' => Controls_Manager::DIMENSIONS,
379
  'size_units' => [ 'px', 'em', '%' ],
380
  'selectors' => [
@@ -402,7 +403,7 @@ class CF7 extends Base {
402
  $this->add_control(
403
  'submit_border_radius',
404
  [
405
- 'label' => __( 'Border Radius', 'happy_addons' ),
406
  'type' => Controls_Manager::DIMENSIONS,
407
  'size_units' => [ 'px', '%' ],
408
  'selectors' => [
@@ -432,14 +433,14 @@ class CF7 extends Base {
432
  $this->start_controls_tab(
433
  'tab_button_normal',
434
  [
435
- 'label' => __( 'Normal', 'happy_addons' ),
436
  ]
437
  );
438
 
439
  $this->add_control(
440
  'submit_color',
441
  [
442
- 'label' => __( 'Text Color', 'happy_addons' ),
443
  'type' => Controls_Manager::COLOR,
444
  'default' => '',
445
  'selectors' => [
@@ -451,7 +452,7 @@ class CF7 extends Base {
451
  $this->add_control(
452
  'submit_bg_color',
453
  [
454
- 'label' => __( 'Background Color', 'happy_addons' ),
455
  'type' => Controls_Manager::COLOR,
456
  'selectors' => [
457
  '{{WRAPPER}} .wpcf7-submit' => 'background-color: {{VALUE}};',
@@ -464,14 +465,14 @@ class CF7 extends Base {
464
  $this->start_controls_tab(
465
  'tab_button_hover',
466
  [
467
- 'label' => __( 'Hover', 'happy_addons' ),
468
  ]
469
  );
470
 
471
  $this->add_control(
472
  'submit_hover_color',
473
  [
474
- 'label' => __( 'Text Color', 'happy_addons' ),
475
  'type' => Controls_Manager::COLOR,
476
  'selectors' => [
477
  '{{WRAPPER}} .wpcf7-submit:hover, {{WRAPPER}} .wpcf7-submit:focus' => 'color: {{VALUE}};',
@@ -482,7 +483,7 @@ class CF7 extends Base {
482
  $this->add_control(
483
  'submit_hover_bg_color',
484
  [
485
- 'label' => __( 'Background Color', 'happy_addons' ),
486
  'type' => Controls_Manager::COLOR,
487
  'selectors' => [
488
  '{{WRAPPER}} .wpcf7-submit:hover, {{WRAPPER}} .wpcf7-submit:focus' => 'background-color: {{VALUE}};',
@@ -493,7 +494,7 @@ class CF7 extends Base {
493
  $this->add_control(
494
  'submit_hover_border_color',
495
  [
496
- 'label' => __( 'Border Color', 'happy_addons' ),
497
  'type' => Controls_Manager::COLOR,
498
  'selectors' => [
499
  '{{WRAPPER}} .wpcf7-submit:hover, {{WRAPPER}} .wpcf7-submit:focus' => 'border-color: {{VALUE}};',
24
  * @return string Widget title.
25
  */
26
  public function get_title() {
27
+ return __( 'Contact Form 7', 'happy-elementor-addons' );
28
  }
29
 
30
  /**
47
  $this->start_controls_section(
48
  '_section_cf7',
49
  [
50
+ 'label' => ha_is_cf7_activated() ? __( 'Contact Form 7', 'happy-elementor-addons' ) : __( 'Notice', 'happy-elementor-addons' ),
51
  'tab' => Controls_Manager::TAB_CONTENT,
52
  ]
53
  );
58
  [
59
  'type' => Controls_Manager::RAW_HTML,
60
  'raw' => sprintf(
61
+ __( 'Hi, it seems %1$s is missing in your site. Please install and activate %1$s first.', 'happy-elementor-addons' ),
62
  '<a href="https://wordpress.org/plugins/contact-form-7/" target="_blank" rel="noopener">Contact Form 7</a>'
63
+ ),
64
+ 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning',
65
  ]
66
  );
67
  $this->end_controls_section();
71
  $this->add_control(
72
  'form_id',
73
  [
74
+ 'label' => __( 'Select Your Form', 'happy-elementor-addons' ),
75
  'type' => Controls_Manager::SELECT,
76
  'label_block' => true,
77
+ 'options' => ['' => __( '', 'happy-elementor-addons' ) ] + \ha_get_cf7_forms(),
78
  ]
79
  );
80
 
81
  $this->add_control(
82
  'html_class',
83
  [
84
+ 'label' => __( 'HTML Class', 'happy-elementor-addons' ),
85
  'type' => Controls_Manager::TEXT,
86
  'label_block' => true,
87
+ 'description' => __( 'Add CSS custom class to the form.', 'happy-elementor-addons' ),
88
  ]
89
  );
90
 
95
  $this->start_controls_section(
96
  '_section_fields_style',
97
  [
98
+ 'label' => __( 'Form Fields', 'happy-elementor-addons' ),
99
  'tab' => Controls_Manager::TAB_STYLE,
100
  ]
101
  );
103
  $this->add_responsive_control(
104
  'field_width',
105
  [
106
+ 'label' => __( 'Width', 'happy-elementor-addons' ),
107
  'type' => Controls_Manager::SLIDER,
108
  'default' => [
109
  'unit' => '%',
135
  $this->add_responsive_control(
136
  'field_margin',
137
  [
138
+ 'label' => __( 'Spacing Bottom', 'happy-elementor-addons' ),
139
  'type' => Controls_Manager::SLIDER,
140
  'size_units' => [ 'px' ],
141
  'range' => [
153
  $this->add_responsive_control(
154
  'field_padding',
155
  [
156
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
157
  'type' => Controls_Manager::DIMENSIONS,
158
  'size_units' => [ 'px', 'em', '%' ],
159
  'selectors' => [
165
  $this->add_responsive_control(
166
  'field_border_radius',
167
  [
168
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
169
  'type' => Controls_Manager::DIMENSIONS,
170
  'size_units' => [ 'px', '%' ],
171
  'selectors' => [
186
  Group_Control_Typography::get_type(),
187
  [
188
  'name' => 'field_typography',
189
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
190
  'selector' => '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)',
191
  ]
192
  );
194
  $this->add_control(
195
  'field_color',
196
  [
197
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
198
  'type' => Controls_Manager::COLOR,
199
  'selectors' => [
200
  '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)' => 'color: {{VALUE}}',
205
  $this->add_control(
206
  'field_placeholder_color',
207
  [
208
+ 'label' => __( 'Placeholder Text Color', 'happy-elementor-addons' ),
209
  'type' => Controls_Manager::COLOR,
210
  'selectors' => [
211
  '{{WRAPPER}} ::-webkit-input-placeholder' => 'color: {{VALUE}};',
220
  $this->start_controls_tab(
221
  'tab_field_normal',
222
  [
223
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
224
  ]
225
  );
226
 
243
  $this->add_control(
244
  'field_bg_color',
245
  [
246
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
247
  'type' => Controls_Manager::COLOR,
248
  'selectors' => [
249
  '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)' => 'background-color: {{VALUE}}',
256
  $this->start_controls_tab(
257
  'tab_field_focus',
258
  [
259
+ 'label' => __( 'Focus', 'happy-elementor-addons' ),
260
  ]
261
  );
262
 
282
  $this->add_control(
283
  'field_focus_bg_color',
284
  [
285
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
286
  'type' => Controls_Manager::COLOR,
287
  'selectors' => [
288
  '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit):focus' => 'background-color: {{VALUE}}',
299
  $this->start_controls_section(
300
  'cf7-form-label',
301
  [
302
+ 'label' => __( 'Form Fields Label', 'happy-elementor-addons' ),
303
  'tab' => Controls_Manager::TAB_STYLE,
304
  ]
305
  );
307
  $this->add_responsive_control(
308
  'label_margin',
309
  [
310
+ 'label' => __( 'Spacing Bottom', 'happy-elementor-addons' ),
311
  'type' => Controls_Manager::SLIDER,
312
  'size_units' => [ 'px' ],
313
  'range' => [
334
  Group_Control_Typography::get_type(),
335
  [
336
  'name' => 'label_typography',
337
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
338
  'selector' => '{{WRAPPER}} label',
339
  ]
340
  );
342
  $this->add_control(
343
  'label_color',
344
  [
345
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
346
  'type' => Controls_Manager::COLOR,
347
  'selectors' => [
348
  '{{WRAPPER}} label' => 'color: {{VALUE}}',
355
  $this->start_controls_section(
356
  'submit',
357
  [
358
+ 'label' => __( 'Submit Button', 'happy-elementor-addons' ),
359
  'tab' => Controls_Manager::TAB_STYLE,
360
  ]
361
  );
363
  $this->add_responsive_control(
364
  'submit_margin',
365
  [
366
+ 'label' => __( 'Margin', 'happy-elementor-addons' ),
367
  'type' => Controls_Manager::DIMENSIONS,
368
  'size_units' => [ 'px', '%' ],
369
  'selectors' => [
375
  $this->add_responsive_control(
376
  'submit_padding',
377
  [
378
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
379
  'type' => Controls_Manager::DIMENSIONS,
380
  'size_units' => [ 'px', 'em', '%' ],
381
  'selectors' => [
403
  $this->add_control(
404
  'submit_border_radius',
405
  [
406
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
407
  'type' => Controls_Manager::DIMENSIONS,
408
  'size_units' => [ 'px', '%' ],
409
  'selectors' => [
433
  $this->start_controls_tab(
434
  'tab_button_normal',
435
  [
436
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
437
  ]
438
  );
439
 
440
  $this->add_control(
441
  'submit_color',
442
  [
443
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
444
  'type' => Controls_Manager::COLOR,
445
  'default' => '',
446
  'selectors' => [
452
  $this->add_control(
453
  'submit_bg_color',
454
  [
455
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
456
  'type' => Controls_Manager::COLOR,
457
  'selectors' => [
458
  '{{WRAPPER}} .wpcf7-submit' => 'background-color: {{VALUE}};',
465
  $this->start_controls_tab(
466
  'tab_button_hover',
467
  [
468
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
469
  ]
470
  );
471
 
472
  $this->add_control(
473
  'submit_hover_color',
474
  [
475
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
476
  'type' => Controls_Manager::COLOR,
477
  'selectors' => [
478
  '{{WRAPPER}} .wpcf7-submit:hover, {{WRAPPER}} .wpcf7-submit:focus' => 'color: {{VALUE}};',
483
  $this->add_control(
484
  'submit_hover_bg_color',
485
  [
486
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
487
  'type' => Controls_Manager::COLOR,
488
  'selectors' => [
489
  '{{WRAPPER}} .wpcf7-submit:hover, {{WRAPPER}} .wpcf7-submit:focus' => 'background-color: {{VALUE}};',
494
  $this->add_control(
495
  'submit_hover_border_color',
496
  [
497
+ 'label' => __( 'Border Color', 'happy-elementor-addons' ),
498
  'type' => Controls_Manager::COLOR,
499
  'selectors' => [
500
  '{{WRAPPER}} .wpcf7-submit:hover, {{WRAPPER}} .wpcf7-submit:focus' => 'border-color: {{VALUE}};',
widgets/dual-button/widget.php ADDED
@@ -0,0 +1,855 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Dual Button widget class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+ namespace Happy_Addons\Elementor\Widget;
8
+
9
+ use Elementor\Controls_Manager;
10
+ use Elementor\Group_Control_Border;
11
+ use Elementor\Group_Control_Box_Shadow;
12
+ use Elementor\Group_Control_Typography;
13
+ use Elementor\Scheme_Typography;
14
+
15
+ defined( 'ABSPATH' ) || die();
16
+
17
+ class Dual_Button extends Base {
18
+
19
+ /**
20
+ * Get widget title.
21
+ *
22
+ * @since 1.0.0
23
+ * @access public
24
+ *
25
+ * @return string Widget title.
26
+ */
27
+ public function get_title() {
28
+ return __( 'Dual Button', 'happy-elementor-addons' );
29
+ }
30
+
31
+ /**
32
+ * Get widget icon.
33
+ *
34
+ * @since 1.0.0
35
+ * @access public
36
+ *
37
+ * @return string Widget icon.
38
+ */
39
+ public function get_icon() {
40
+ return 'hm hm-accordion-horizontal';
41
+ }
42
+
43
+ public function get_keywords() {
44
+ return [ 'button', 'btn', 'dual', 'advance', 'link' ];
45
+ }
46
+
47
+ protected function register_content_controls() {
48
+ $this->start_controls_section(
49
+ '_section_button',
50
+ [
51
+ 'label' => __( 'Dual Buttons', 'happy-elementor-addons' ),
52
+ 'tab' => Controls_Manager::TAB_CONTENT,
53
+ ]
54
+ );
55
+
56
+ $this->start_controls_tabs( '_tabs_buttons' );
57
+
58
+ $this->start_controls_tab(
59
+ '_tab_button_left',
60
+ [
61
+ 'label' => __( 'Left', 'happy-elementor-addons' ),
62
+ ]
63
+ );
64
+
65
+ $this->add_control(
66
+ 'left_button_text',
67
+ [
68
+ 'label' => __( 'Text', 'happy-elementor-addons' ),
69
+ 'label_block'=> true,
70
+ 'type' => Controls_Manager::TEXT,
71
+ 'default' => __( 'Button Text', 'happy-elementor-addons' )
72
+ ]
73
+ );
74
+
75
+ $this->add_control(
76
+ 'left_button_link',
77
+ [
78
+ 'label' => __( 'Link', 'happy-elementor-addons' ),
79
+ 'type' => Controls_Manager::URL,
80
+ ]
81
+ );
82
+
83
+ $this->add_control(
84
+ 'left_button_icon',
85
+ [
86
+ 'label' => __( 'Icon', 'happy-elementor-addons' ),
87
+ 'type' => Controls_Manager::ICON,
88
+ 'options' => ha_get_happy_icons(),
89
+ ]
90
+ );
91
+
92
+ $this->add_control(
93
+ 'left_button_icon_position',
94
+ [
95
+ 'label' => __( 'Icon Position', 'happy-elementor-addons' ),
96
+ 'type' => Controls_Manager::CHOOSE,
97
+ 'label_block' => false,
98
+ 'options' => [
99
+ 'before' => [
100
+ 'title' => __( 'Before', 'happy-elementor-addons' ),
101
+ 'icon' => 'eicon-h-align-left',
102
+ ],
103
+ 'after' => [
104
+ 'title' => __( 'After', 'happy-elementor-addons' ),
105
+ 'icon' => 'eicon-h-align-right',
106
+ ]
107
+ ],
108
+ 'toggle' => false,
109
+ 'default' => 'before',
110
+ 'condition' => [
111
+ 'left_button_icon!' => '',
112
+ ]
113
+ ]
114
+ );
115
+
116
+ $this->add_control(
117
+ 'left_button_icon_spacing',
118
+ [
119
+ 'label' => __( 'Icon Spacing', 'happy-elementor-addons' ),
120
+ 'type' => Controls_Manager::SLIDER,
121
+ 'condition' => [
122
+ 'left_button_icon!' => '',
123
+ ],
124
+ 'selectors' => [
125
+ '{{WRAPPER}} .ha-dual-btn--left .ha-dual-btn-icon--before' => 'margin-right: {{SIZE}}{{UNIT}};',
126
+ '{{WRAPPER}} .ha-dual-btn--left .ha-dual-btn-icon--after' => 'margin-left: {{SIZE}}{{UNIT}};',
127
+ ],
128
+ ]
129
+ );
130
+
131
+ $this->end_controls_tab();
132
+
133
+ $this->start_controls_tab(
134
+ '_tab_button_connector',
135
+ [
136
+ 'label' => __( 'Connector', 'happy-elementor-addons' ),
137
+ ]
138
+ );
139
+
140
+ $this->add_control(
141
+ 'button_connector_hide',
142
+ [
143
+ 'label' => __( 'Hide Connector?', 'happy-elementor-addons' ),
144
+ 'type' => Controls_Manager::SWITCHER,
145
+ 'label_on' => __( 'Hide', 'happy-elementor-addons' ),
146
+ 'label_off' => __( 'Show', 'happy-elementor-addons' ),
147
+ ]
148
+ );
149
+
150
+ $this->add_control(
151
+ 'button_connector_type',
152
+ [
153
+ 'label' => __( 'Connector Type', 'happy-elementor-addons' ),
154
+ 'type' => Controls_Manager::CHOOSE,
155
+ 'label_block' => false,
156
+ 'options' => [
157
+ 'text' => [
158
+ 'title' => __( 'Text', 'happy-elementor-addons' ),
159
+ 'icon' => 'fa fa-text-width',
160
+ ],
161
+ 'icon' => [
162
+ 'title' => __( 'Icon', 'happy-elementor-addons' ),
163
+ 'icon' => 'fa fa-star',
164
+ ]
165
+ ],
166
+ 'toggle' => false,
167
+ 'default' => 'text',
168
+ 'condition' => [
169
+ 'button_connector_hide!' => 'yes',
170
+ ]
171
+ ]
172
+ );
173
+
174
+ $this->add_control(
175
+ 'button_connector_text',
176
+ [
177
+ 'label' => __( 'Text', 'happy-elementor-addons' ),
178
+ 'type' => Controls_Manager::TEXT,
179
+ 'default' => __( 'Or', 'happy-elementor-addons' ),
180
+ 'condition' => [
181
+ 'button_connector_hide!' => 'yes',
182
+ 'button_connector_type' => 'text',
183
+ ]
184
+ ]
185
+ );
186
+
187
+ $this->add_control(
188
+ 'button_connector_icon',
189
+ [
190
+ 'label' => __( 'Icon', 'happy-elementor-addons' ),
191
+ 'type' => Controls_Manager::ICON,
192
+ 'options' => ha_get_happy_icons(),
193
+ 'condition' => [
194
+ 'button_connector_hide!' => 'yes',
195
+ 'button_connector_type' => 'icon',
196
+ ]
197
+ ]
198
+ );
199
+
200
+ $this->end_controls_tab();
201
+
202
+ $this->start_controls_tab(
203
+ '_tab_button_right',
204
+ [
205
+ 'label' => __( 'Right', 'happy-elementor-addons' ),
206
+ ]
207
+ );
208
+
209
+ $this->add_control(
210
+ 'right_button_text',
211
+ [
212
+ 'label' => __( 'Text', 'happy-elementor-addons' ),
213
+ 'label_block'=> true,
214
+ 'type' => Controls_Manager::TEXT,
215
+ 'default' => __( 'Button Text', 'happy-elementor-addons' )
216
+ ]
217
+ );
218
+
219
+ $this->add_control(
220
+ 'right_button_link',
221
+ [
222
+ 'label' => __( 'Link', 'happy-elementor-addons' ),
223
+ 'type' => Controls_Manager::URL
224
+ ]
225
+ );
226
+
227
+ $this->add_control(
228
+ 'right_button_icon',
229
+ [
230
+ 'label' => __( 'Icon', 'happy-elementor-addons' ),
231
+ 'type' => Controls_Manager::ICON,
232
+ 'options' => ha_get_happy_icons(),
233
+ ]
234
+ );
235
+
236
+ $this->add_control(
237
+ 'right_button_icon_position',
238
+ [
239
+ 'label' => __( 'Icon Position', 'happy-elementor-addons' ),
240
+ 'type' => Controls_Manager::CHOOSE,
241
+ 'label_block' => false,
242
+ 'options' => [
243
+ 'before' => [
244
+ 'title' => __( 'Before', 'happy-elementor-addons' ),
245
+ 'icon' => 'eicon-h-align-left',
246
+ ],
247
+ 'after' => [
248
+ 'title' => __( 'After', 'happy-elementor-addons' ),
249
+ 'icon' => 'eicon-h-align-right',
250
+ ]
251
+ ],
252
+ 'toggle' => false,
253
+ 'default' => 'after',
254
+ 'condition' => [
255
+ 'right_button_icon!' => ''
256
+ ]
257
+ ]
258
+ );
259
+
260
+ $this->add_control(
261
+ 'right_button_icon_spacing',
262
+ [
263
+ 'label' => __( 'Icon Spacing', 'happy-elementor-addons' ),
264
+ 'type' => Controls_Manager::SLIDER,
265
+ 'condition' => [
266
+ 'right_button_icon!' => '',
267
+ ],
268
+ 'selectors' => [
269
+ '{{WRAPPER}} .ha-dual-btn--right .ha-dual-btn-icon--before' => 'margin-right: {{SIZE}}{{UNIT}};',
270
+ '{{WRAPPER}} .ha-dual-btn--right .ha-dual-btn-icon--after' => 'margin-left: {{SIZE}}{{UNIT}};',
271
+ ],
272
+ ]
273
+ );
274
+
275
+ $this->end_controls_tab();
276
+ $this->end_controls_tabs();
277
+
278
+ $this->end_controls_section();
279
+ }
280
+
281
+ protected function register_style_controls() {
282
+ $this->start_controls_section(
283
+ '_section_style_common',
284
+ [
285
+ 'label' => __( 'Common', 'happy-elementor-addons' ),
286
+ 'tab' => Controls_Manager::TAB_STYLE,
287
+ ]
288
+ );
289
+
290
+ $this->add_responsive_control(
291
+ 'button_padding',
292
+ [
293
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
294
+ 'type' => Controls_Manager::DIMENSIONS,
295
+ 'size_units' => ['px', 'em', '%'],
296
+ 'selectors' => [
297
+ '{{WRAPPER}} .ha-dual-btn' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
298
+ ],
299
+ ]
300
+ );
301
+
302
+ $this->add_responsive_control(
303
+ 'button_gap',
304
+ [
305
+ 'label' => __( 'Space Between Buttons', 'happy-elementor-addons' ),
306
+ 'type' => Controls_Manager::SLIDER,
307
+ 'size_units' => ['px'],
308
+ 'selectors' => [
309
+ '{{WRAPPER}} .ha-dual-btn--left' => 'margin-right: calc({{SIZE}}{{UNIT}}/2);',
310
+ '{{WRAPPER}} .ha-dual-btn--right' => 'margin-left: calc({{SIZE}}{{UNIT}}/2);',
311
+ ],
312
+ ]
313
+ );
314
+
315
+ $this->add_group_control(
316
+ Group_Control_Typography::get_type(),
317
+ [
318
+ 'name' => 'button_typography',
319
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
320
+ 'selector' => '{{WRAPPER}} .ha-dual-btn',
321
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_4,
322
+ ]
323
+ );
324
+
325
+ $this->add_group_control(
326
+ Group_Control_Box_Shadow::get_type(),
327
+ [
328
+ 'name' => 'button_box_shadow',
329
+ 'selector' => '{{WRAPPER}} .ha-dual-btn'
330
+ ]
331
+ );
332
+
333
+ $this->add_control(
334
+ 'button_align_x',
335
+ [
336
+ 'label' => __( 'Horizontal Alignment', 'happy-elementor-addons' ),
337
+ 'type' => Controls_Manager::CHOOSE,
338
+ 'label_block' => false,
339
+ 'options' => [
340
+ 'flex-start' => [
341
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
342
+ 'icon' => 'eicon-h-align-left',
343
+ ],
344
+ 'center' => [
345
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
346
+ 'icon' => 'eicon-h-align-center',
347
+ ],
348
+ 'flex-end' => [
349
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
350
+ 'icon' => 'eicon-h-align-right',
351
+ ]
352
+ ],
353
+ 'toggle' => true,
354
+ 'selectors' => [
355
+ '{{WRAPPER}} .elementor-widget-container' => 'justify-content: {{VALUE}};',
356
+ ],
357
+ ]
358
+ );
359
+
360
+ $this->add_control(
361
+ 'button_align_y',
362
+ [
363
+ 'label' => __( 'Vertical Alignment', 'happy-elementor-addons' ),
364
+ 'description' => __( 'Only works when buttons have different height', 'happy-elementor-addons' ),
365
+ 'type' => Controls_Manager::CHOOSE,
366
+ 'label_block' => false,
367
+ 'options' => [
368
+ 'flex-start' => [
369
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
370
+ 'icon' => 'eicon-v-align-top',
371
+ ],
372
+ 'center' => [
373
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
374
+ 'icon' => 'eicon-v-align-middle',
375
+ ],
376
+ 'flex-end' => [
377
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
378
+ 'icon' => 'eicon-v-align-bottom',
379
+ ]
380
+ ],
381
+ 'toggle' => true,
382
+ 'selectors' => [
383
+ '{{WRAPPER}} .elementor-widget-container' => 'align-items: {{VALUE}};',
384
+ ],
385
+ ]
386
+ );
387
+
388
+ $this->end_controls_section();
389
+
390
+ $this->start_controls_section(
391
+ '_section_style_left_button',
392
+ [
393
+ 'label' => __( 'Left Button', 'happy-elementor-addons' ),
394
+ 'tab' => Controls_Manager::TAB_STYLE,
395
+ ]
396
+ );
397
+
398
+ $this->add_responsive_control(
399
+ 'left_button_padding',
400
+ [
401
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
402
+ 'type' => Controls_Manager::DIMENSIONS,
403
+ 'size_units' => ['px', 'em', '%'],
404
+ 'selectors' => [
405
+ '{{WRAPPER}} .ha-dual-btn--left' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
406
+ ],
407
+ ]
408
+ );
409
+
410
+ $this->add_group_control(
411
+ Group_Control_Border::get_type(),
412
+ [
413
+ 'name' => 'left_button_border',
414
+ 'selector' => '{{WRAPPER}} .ha-dual-btn--left'
415
+ ]
416
+ );
417
+
418
+ $this->add_responsive_control(
419
+ 'left_button_border_radius',
420
+ [
421
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
422
+ 'type' => Controls_Manager::DIMENSIONS,
423
+ 'size_units' => [ 'px', '%' ],
424
+ 'selectors' => [
425
+ '{{WRAPPER}} .ha-dual-btn--left' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
426
+ ],
427
+ ]
428
+ );
429
+
430
+ $this->add_group_control(
431
+ Group_Control_Typography::get_type(),
432
+ [
433
+ 'name' => 'left_button_typography',
434
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
435
+ 'selector' => '{{WRAPPER}} .ha-dual-btn--left',
436
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_4,
437
+ ]
438
+ );
439
+
440
+ $this->add_group_control(
441
+ Group_Control_Box_Shadow::get_type(),
442
+ [
443
+ 'name' => 'left_button_box_shadow',
444
+ 'selector' => '{{WRAPPER}} .ha-dual-btn--left'
445
+ ]
446
+ );
447
+
448
+ $this->start_controls_tabs( '_tabs_left_button' );
449
+
450
+ $this->start_controls_tab(
451
+ '_tab_left_button_normal',
452
+ [
453
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
454
+ ]
455
+ );
456
+
457
+ $this->add_control(
458
+ 'left_button_bg_color',
459
+ [
460
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
461
+ 'type' => Controls_Manager::COLOR,
462
+ 'selectors' => [
463
+ '{{WRAPPER}} .ha-dual-btn--left' => 'background-color: {{VALUE}}',
464
+ ],
465
+ ]
466
+ );
467
+
468
+ $this->add_control(
469
+ 'left_button_text_color',
470
+ [
471
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
472
+ 'type' => Controls_Manager::COLOR,
473
+ 'selectors' => [
474
+ '{{WRAPPER}} .ha-dual-btn--left' => 'color: {{VALUE}}',
475
+ ],
476
+ ]
477
+ );
478
+
479
+ $this->end_controls_tab();
480
+
481
+ $this->start_controls_tab(
482
+ '_tabs_left_button_hover',
483
+ [
484
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
485
+ ]
486
+ );
487
+
488
+ $this->add_control(
489
+ 'left_button_hover_bg_color',
490
+ [
491
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
492
+ 'type' => Controls_Manager::COLOR,
493
+ 'selectors' => [
494
+ '{{WRAPPER}} .ha-dual-btn--left:hover' => 'background-color: {{VALUE}}',
495
+ ],
496
+ ]
497
+ );
498
+
499
+ $this->add_control(
500
+ 'left_button_hover_text_color',
501
+ [
502
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
503
+ 'type' => Controls_Manager::COLOR,
504
+ 'selectors' => [
505
+ '{{WRAPPER}} .ha-dual-btn--left:hover' => 'color: {{VALUE}}',
506
+ ],
507
+ ]
508
+ );
509
+
510
+ $this->add_control(
511
+ 'left_button_hover_border_color',
512
+ [
513
+ 'label' => __( 'Border Color', 'happy-elementor-addons' ),
514
+ 'type' => Controls_Manager::COLOR,
515
+ 'selectors' => [
516
+ '{{WRAPPER}} .ha-dual-btn--left:hover' => 'border-color: {{VALUE}}',
517
+ ],
518
+ 'condition' => [
519
+ 'left_button_border_border!' => ''
520
+ ]
521
+ ]
522
+ );
523
+
524
+ $this->end_controls_tab();
525
+ $this->end_controls_tabs();
526
+
527
+ $this->end_controls_section();
528
+
529
+ $this->start_controls_section(
530
+ '_section_style_connector',
531
+ [
532
+ 'label' => __( 'Connector', 'happy-elementor-addons' ),
533
+ 'tab' => Controls_Manager::TAB_STYLE,
534
+ ]
535
+ );
536
+
537
+ $this->add_control(
538
+ 'connector_notice',
539
+ [
540
+ 'type' => Controls_Manager::RAW_HTML,
541
+ 'raw' => __( 'Connector is hidden now, please enable connector from Content > Connector tab.', 'happy-elementor-addons' ),
542
+ 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
543
+ 'condition' => [
544
+ 'button_connector_hide' => 'yes'
545
+ ]
546
+ ]
547
+ );
548
+
549
+ $this->add_control(
550
+ 'connector_text_color',
551
+ [
552
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
553
+ 'type' => Controls_Manager::COLOR,
554
+ 'selectors' => [
555
+ '{{WRAPPER}} .ha-dual-btn-connector' => 'color: {{VALUE}}',
556
+ ],
557
+ ]
558
+ );
559
+
560
+ $this->add_control(
561
+ 'connector_bg_color',
562
+ [
563
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
564
+ 'type' => Controls_Manager::COLOR,
565
+ 'selectors' => [
566
+ '{{WRAPPER}} .ha-dual-btn-connector' => 'background-color: {{VALUE}}',
567
+ ],
568
+ ]
569
+ );
570
+
571
+ $this->add_group_control(
572
+ Group_Control_Typography::get_type(),
573
+ [
574
+ 'name' => 'connector_typography',
575
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
576
+ 'selector' => '{{WRAPPER}} .ha-dual-btn-connector',
577
+ ]
578
+ );
579
+
580
+ $this->add_group_control(
581
+ Group_Control_Box_Shadow::get_type(),
582
+ [
583
+ 'name' => 'connector_box_shadow',
584
+ 'selector' => '{{WRAPPER}} .ha-dual-btn-connector'
585
+ ]
586
+ );
587
+
588
+ $this->end_controls_section();
589
+
590
+ $this->start_controls_section(
591
+ '_section_style_right_button',
592
+ [
593
+ 'label' => __( 'Right Button', 'happy-elementor-addons' ),
594
+ 'tab' => Controls_Manager::TAB_STYLE,
595
+ ]
596
+ );
597
+
598
+ $this->add_responsive_control(
599
+ 'right_button_padding',
600
+ [
601
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
602
+ 'type' => Controls_Manager::DIMENSIONS,
603
+ 'size_units' => ['px', 'em', '%'],
604
+ 'selectors' => [
605
+ '{{WRAPPER}} .ha-dual-btn--right' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
606
+ ],
607
+ ]
608
+ );
609
+
610
+ $this->add_group_control(
611
+ Group_Control_Border::get_type(),
612
+ [
613
+ 'name' => 'right_button_border',
614
+ 'selector' => '{{WRAPPER}} .ha-dual-btn--right'
615
+ ]
616
+ );
617
+
618
+ $this->add_responsive_control(
619
+ 'right_button_border_radius',
620
+ [
621
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
622
+ 'type' => Controls_Manager::DIMENSIONS,
623
+ 'size_units' => [ 'px', '%' ],
624
+ 'selectors' => [
625
+ '{{WRAPPER}} .ha-dual-btn--right' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
626
+ ],
627
+ ]
628
+ );
629
+
630
+ $this->add_group_control(
631
+ Group_Control_Typography::get_type(),
632
+ [
633
+ 'name' => 'right_button_typography',
634
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
635
+ 'selector' => '{{WRAPPER}} .ha-dual-btn--right',
636
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_4,
637
+ ]
638
+ );
639
+
640
+ $this->add_group_control(
641
+ Group_Control_Box_Shadow::get_type(),
642
+ [
643
+ 'name' => 'right_button_box_shadow',
644
+ 'selector' => '{{WRAPPER}} .ha-dual-btn--right'
645
+ ]
646
+ );
647
+
648
+ $this->start_controls_tabs( '_tabs_right_button' );
649
+
650
+ $this->start_controls_tab(
651
+ '_tab_right_button_normal',
652
+ [
653
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
654
+ ]
655
+ );
656
+
657
+ $this->add_control(
658
+ 'right_button_bg_color',
659
+ [
660
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
661
+ 'type' => Controls_Manager::COLOR,
662
+ 'selectors' => [
663
+ '{{WRAPPER}} .ha-dual-btn--right' => 'background-color: {{VALUE}}',
664
+ ],
665
+ ]
666
+ );
667
+
668
+ $this->add_control(
669
+ 'right_button_text_color',
670
+ [
671
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
672
+ 'type' => Controls_Manager::COLOR,
673
+ 'selectors' => [
674
+ '{{WRAPPER}} .ha-dual-btn--right' => 'color: {{VALUE}}',
675
+ ],
676
+ ]
677
+ );
678
+
679
+ $this->end_controls_tab();
680
+
681
+ $this->start_controls_tab(
682
+ '_tabs_right_button_hover',
683
+ [
684
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
685
+ ]
686
+ );
687
+
688
+ $this->add_control(
689
+ 'right_button_hover_bg_color',
690
+ [
691
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
692
+ 'type' => Controls_Manager::COLOR,
693
+ 'selectors' => [
694
+ '{{WRAPPER}} .ha-dual-btn--right:hover' => 'background-color: {{VALUE}}',
695
+ ],
696
+ ]
697
+ );
698
+
699
+ $this->add_control(
700
+ 'right_button_hover_text_color',
701
+ [
702
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
703
+ 'type' => Controls_Manager::COLOR,
704
+ 'selectors' => [
705
+ '{{WRAPPER}} .ha-dual-btn--right:hover' => 'color: {{VALUE}}',
706
+ ],
707
+ ]
708
+ );
709
+
710
+ $this->add_control(
711
+ 'right_button_hover_border_color',
712
+ [
713
+ 'label' => __( 'Border Color', 'happy-elementor-addons' ),
714
+ 'type' => Controls_Manager::COLOR,
715
+ 'selectors' => [
716
+ '{{WRAPPER}} .ha-dual-btn--right:hover' => 'border-color: {{VALUE}}',
717
+ ],
718
+ 'condition' => [
719
+ 'right_button_border_border!' => ''
720
+ ]
721
+ ]
722
+ );
723
+
724
+ $this->end_controls_tab();
725
+ $this->end_controls_tabs();
726
+
727
+ $this->end_controls_section();
728
+ }
729
+
730
+ protected function render() {
731
+ $settings = $this->get_settings_for_display();
732
+
733
+ // Left button
734
+ $this->add_render_attribute( 'left_button', 'class', 'ha-dual-btn ha-dual-btn--left' );
735
+ $this->add_render_attribute( 'left_button', 'href', esc_url( $settings['left_button_link']['url'] ) );
736
+ if ( ! empty( $settings['left_button_link']['is_external'] ) ) {
737
+ $this->add_render_attribute( 'left_button', 'target', '_blank' );
738
+ }
739
+ if ( ! empty( $settings['left_button_link']['nofollow'] ) ) {
740
+ $this->add_render_attribute( 'left_button', 'rel', 'nofollow' );
741
+ }
742
+ $this->add_inline_editing_attributes( 'left_button_text', 'none' );
743
+
744
+ if ( $settings['left_button_icon'] ) {
745
+ $this->add_render_attribute( 'left_button_icon', 'class', [
746
+ 'ha-dual-btn-icon',
747
+ 'ha-dual-btn-icon--' . esc_attr( $settings['left_button_icon_position'] ),
748
+ esc_attr( $settings['left_button_icon'] )
749
+ ] );
750
+ }
751
+
752
+ // Button connector
753
+ $this->add_render_attribute( 'button_connector', 'class', 'ha-dual-btn-connector' );
754
+ if ( $settings['button_connector_type'] === 'icon' ) {
755
+ $this->add_render_attribute( 'button_connector', 'class', 'ha-dual-btn-connector--icon' );
756
+ $connector = sprintf( '<i class="%s"></i>', esc_attr( $settings['button_connector_icon'] ) );
757
+ } else {
758
+ $this->add_render_attribute( 'button_connector', 'class', 'ha-dual-btn-connector--text' );
759
+ $this->add_inline_editing_attributes( 'button_connector', 'none' );
760
+ $connector = esc_html( $settings['button_connector_text'] );
761
+ }
762
+
763
+ // Right button
764
+ $this->add_render_attribute( 'right_button', 'class', 'ha-dual-btn ha-dual-btn--right' );
765
+ $this->add_render_attribute( 'right_button', 'href', esc_url( $settings['right_button_link']['url'] ) );
766
+ if ( ! empty( $settings['right_button_link']['is_external'] ) ) {
767
+ $this->add_render_attribute( 'right_button', 'target', '_blank' );
768
+ }
769
+ if ( ! empty( $settings['right_button_link']['nofollow'] ) ) {
770
+ $this->add_render_attribute( 'right_button', 'rel', 'nofollow' );
771
+ }
772
+ $this->add_inline_editing_attributes( 'right_button_text', 'none' );
773
+
774
+ if ( $settings['right_button_icon'] ) {
775
+ $this->add_render_attribute( 'right_button_icon', 'class', [
776
+ 'ha-dual-btn-icon',
777
+ 'ha-dual-btn-icon--' . esc_attr( $settings['right_button_icon_position'] ),
778
+ esc_attr( $settings['right_button_icon'] )
779
+ ] );
780
+ }
781
+ ?>
782
+ <div class="ha-dual-btn-wrapper">
783
+ <a <?php echo $this->get_render_attribute_string( 'left_button' ); ?>>
784
+ <?php if ( $settings['left_button_icon_position'] === 'before' ) : ?>
785
+ <i <?php echo $this->get_render_attribute_string( 'left_button_icon' ); ?>></i>
786
+ <?php endif; ?>
787
+ <span <?php echo $this->get_render_attribute_string( 'left_button_text' ); ?>><?php echo esc_html( $settings['left_button_text'] ); ?></span>
788
+ <?php if ( $settings['left_button_icon_position'] === 'after' ) : ?>
789
+ <i <?php echo $this->get_render_attribute_string( 'left_button_icon' ); ?>></i>
790
+ <?php endif; ?>
791
+ </a>
792
+ <?php if ( $settings['button_connector_hide'] !== 'yes' ) : ?>
793
+ <span <?php echo $this->get_render_attribute_string( 'button_connector' ); ?>><?php echo $connector; ?></span>
794
+ <?php endif; ?>
795
+ </div>
796
+ <div class="ha-dual-btn-wrapper">
797
+ <a <?php echo $this->get_render_attribute_string( 'right_button' ); ?>>
798
+ <?php if ( $settings['right_button_icon_position'] === 'before' ) : ?>
799
+ <i <?php echo $this->get_render_attribute_string( 'right_button_icon' ); ?>></i>
800
+ <?php endif; ?>
801
+ <span <?php echo $this->get_render_attribute_string( 'right_button_text' ); ?>><?php echo esc_html( $settings['right_button_text'] ); ?></span>
802
+ <?php if ( $settings['right_button_icon_position'] === 'after' ) : ?>
803
+ <i <?php echo $this->get_render_attribute_string( 'right_button_icon' ); ?>></i>
804
+ <?php endif; ?>
805
+ </a>
806
+ </div>
807
+ <?php
808
+ }
809
+
810
+ /*
811
+ public function _content_template() {
812
+ ?>
813
+ <#
814
+ view.addInlineEditingAttributes( 'left_button_text', 'none' );
815
+ view.addInlineEditingAttributes( 'right_button_text', 'none' );
816
+
817
+ view.addInlineEditingAttributes( 'button_direction_text', 'none' );
818
+ view.addRenderAttribute( 'button_direction_text', 'class', 'ha-middle-text' );
819
+ #>
820
+ <div class="ha-dual-btn">
821
+
822
+ <div class="ha-dual-btn-link">
823
+ <a href="{{{ settings.left_button_link.url }}}" class="ha-dual-btn-link-primary">
824
+
825
+ <i class="{{{ settings.left_icon_picker }}}"></i>
826
+ <span {{{ view.getRenderAttributeString( 'left_button_text' ) }}}>
827
+ {{{ settings.left_button_text }}}
828
+ </span>
829
+
830
+ </a>
831
+ <# if ( settings.button_direction_show === 'yes' ) { #>
832
+ <div {{{ view.getRenderAttributeString( 'button_direction_text' ) }}}>
833
+ {{{ settings.button_direction_text }}}
834
+ </div>
835
+ <# } #>
836
+ </div>
837
+
838
+ <div class="ha-dual-btn-link">
839
+ <a href="{{{ settings.right_button_link.url }}}" class="ha-dual-btn-link-secondary">
840
+
841
+ <i class="{{{ settings.right_icon_picker }}}"></i>
842
+ <span {{{ view.getRenderAttributeString( 'right_button_text' ) }}}>
843
+ {{{ settings.right_button_text }}}
844
+ </span>
845
+
846
+ </a>
847
+ </div>
848
+
849
+ </div>
850
+
851
+ <?php
852
+ }
853
+ */
854
+
855
+ }
widgets/gradient-heading/widget.php CHANGED
@@ -25,7 +25,7 @@ class Gradient_Heading extends Base {
25
  * @return string Widget title.
26
  */
27
  public function get_title() {
28
- return __( 'Gradient Heading', 'happy_addons' );
29
  }
30
 
31
  /**
@@ -48,7 +48,7 @@ class Gradient_Heading extends Base {
48
  $this->start_controls_section(
49
  '_section_title',
50
  [
51
- 'label' => __( 'Title', 'happy_addons' ),
52
  'tab' => Controls_Manager::TAB_CONTENT,
53
  ]
54
  );
@@ -56,51 +56,51 @@ class Gradient_Heading extends Base {
56
  $this->add_control(
57
  'title',
58
  [
59
- 'label' => __( 'Title', 'happy_addons' ),
60
  'type' => Controls_Manager::TEXTAREA,
61
- 'default' => __( 'Happy Gradient Heading', 'happy_addons' ),
62
- 'placeholder' => __( 'Type Gradient Heading Text', 'happy_addons' ),
63
  ]
64
  );
65
 
66
  $this->add_control(
67
  'link',
68
  [
69
- 'label' => __( 'Link', 'happy_addons' ),
70
  'type' => Controls_Manager::URL,
71
  'separator' => 'before',
72
- 'placeholder' => __( 'https://example.com/', 'happy_addons' ),
73
  ]
74
  );
75
 
76
  $this->add_control(
77
  'title_tag',
78
  [
79
- 'label' => __( 'Title HTML Tag', 'happy_addons' ),
80
  'type' => Controls_Manager::CHOOSE,
81
  'options' => [
82
  'h1' => [
83
- 'title' => __( 'H1', 'happy_addons' ),
84
  'icon' => 'eicon-editor-h1'
85
  ],
86
  'h2' => [
87
- 'title' => __( 'H2', 'happy_addons' ),
88
  'icon' => 'eicon-editor-h2'
89
  ],
90
  'h3' => [
91
- 'title' => __( 'H3', 'happy_addons' ),
92
  'icon' => 'eicon-editor-h3'
93
  ],
94
  'h4' => [
95
- 'title' => __( 'H4', 'happy_addons' ),
96
  'icon' => 'eicon-editor-h4'
97
  ],
98
  'h5' => [
99
- 'title' => __( 'H5', 'happy_addons' ),
100
  'icon' => 'eicon-editor-h5'
101
  ],
102
  'h6' => [
103
- 'title' => __( 'H6', 'happy_addons' ),
104
  'icon' => 'eicon-editor-h6'
105
  ]
106
  ],
@@ -112,23 +112,23 @@ class Gradient_Heading extends Base {
112
  $this->add_responsive_control(
113
  'align',
114
  [
115
- 'label' => __( 'Alignment', 'happy_addons' ),
116
  'type' => Controls_Manager::CHOOSE,
117
  'options' => [
118
  'left' => [
119
- 'title' => __( 'Left', 'happy_addons' ),
120
  'icon' => 'fa fa-align-left',
121
  ],
122
  'center' => [
123
- 'title' => __( 'Center', 'happy_addons' ),
124
  'icon' => 'fa fa-align-center',
125
  ],
126
  'right' => [
127
- 'title' => __( 'Right', 'happy_addons' ),
128
  'icon' => 'fa fa-align-right',
129
  ],
130
  'justify' => [
131
- 'title' => __( 'Justify', 'happy_addons' ),
132
  'icon' => 'fa fa-align-justify',
133
  ],
134
  ],
@@ -146,7 +146,7 @@ class Gradient_Heading extends Base {
146
  $this->start_controls_section(
147
  '_section_style_title',
148
  [
149
- 'label' => __( 'Title', 'happy_addons' ),
150
  'tab' => Controls_Manager::TAB_STYLE,
151
  ]
152
  );
@@ -172,7 +172,7 @@ class Gradient_Heading extends Base {
172
  Group_Control_Text_Shadow::get_type(),
173
  [
174
  'name' => 'title',
175
- 'label' => __( 'Text Shadow', 'happy_addons' ),
176
  'selector' => '{{WRAPPER}} .ha-gradient-heading',
177
  ]
178
  );
@@ -180,10 +180,10 @@ class Gradient_Heading extends Base {
180
  $this->add_control(
181
  'blend_mode',
182
  [
183
- 'label' => __( 'Blend Mode', 'happy_addons' ),
184
  'type' => Controls_Manager::SELECT,
185
  'options' => [
186
- '' => __( 'Normal', 'happy_addons' ),
187
  'multiply' => 'Multiply',
188
  'screen' => 'Screen',
189
  'overlay' => 'Overlay',
25
  * @return string Widget title.
26
  */
27
  public function get_title() {
28
+ return __( 'Gradient Heading', 'happy-elementor-addons' );
29
  }
30
 
31
  /**
48
  $this->start_controls_section(
49
  '_section_title',
50
  [
51
+ 'label' => __( 'Title', 'happy-elementor-addons' ),
52
  'tab' => Controls_Manager::TAB_CONTENT,
53
  ]
54
  );
56
  $this->add_control(
57
  'title',
58
  [
59
+ 'label' => __( 'Title', 'happy-elementor-addons' ),
60
  'type' => Controls_Manager::TEXTAREA,
61
+ 'default' => __( 'Happy Gradient Heading', 'happy-elementor-addons' ),
62
+ 'placeholder' => __( 'Type Gradient Heading Text', 'happy-elementor-addons' ),
63
  ]
64
  );
65
 
66
  $this->add_control(
67
  'link',
68
  [
69
+ 'label' => __( 'Link', 'happy-elementor-addons' ),
70
  'type' => Controls_Manager::URL,
71
  'separator' => 'before',
72
+ 'placeholder' => __( 'https://example.com/', 'happy-elementor-addons' ),
73
  ]
74
  );
75
 
76
  $this->add_control(
77
  'title_tag',
78
  [
79
+ 'label' => __( 'Title HTML Tag', 'happy-elementor-addons' ),
80
  'type' => Controls_Manager::CHOOSE,
81
  'options' => [
82
  'h1' => [
83
+ 'title' => __( 'H1', 'happy-elementor-addons' ),
84
  'icon' => 'eicon-editor-h1'
85
  ],
86
  'h2' => [
87
+ 'title' => __( 'H2', 'happy-elementor-addons' ),
88
  'icon' => 'eicon-editor-h2'
89
  ],
90
  'h3' => [
91
+ 'title' => __( 'H3', 'happy-elementor-addons' ),
92
  'icon' => 'eicon-editor-h3'
93
  ],
94
  'h4' => [
95
+ 'title' => __( 'H4', 'happy-elementor-addons' ),
96
  'icon' => 'eicon-editor-h4'
97
  ],
98
  'h5' => [
99
+ 'title' => __( 'H5', 'happy-elementor-addons' ),
100
  'icon' => 'eicon-editor-h5'
101
  ],
102
  'h6' => [
103
+ 'title' => __( 'H6', 'happy-elementor-addons' ),
104
  'icon' => 'eicon-editor-h6'
105
  ]
106
  ],
112
  $this->add_responsive_control(
113
  'align',
114
  [
115
+ 'label' => __( 'Alignment', 'happy-elementor-addons' ),
116
  'type' => Controls_Manager::CHOOSE,
117
  'options' => [
118
  'left' => [
119
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
120
  'icon' => 'fa fa-align-left',
121
  ],
122
  'center' => [
123
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
124
  'icon' => 'fa fa-align-center',
125
  ],
126
  'right' => [
127
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
128
  'icon' => 'fa fa-align-right',
129
  ],
130
  'justify' => [
131
+ 'title' => __( 'Justify', 'happy-elementor-addons' ),
132
  'icon' => 'fa fa-align-justify',
133
  ],
134
  ],
146
  $this->start_controls_section(
147
  '_section_style_title',
148
  [
149
+ 'label' => __( 'Title', 'happy-elementor-addons' ),
150
  'tab' => Controls_Manager::TAB_STYLE,
151
  ]
152
  );
172
  Group_Control_Text_Shadow::get_type(),
173
  [
174
  'name' => 'title',
175
+ 'label' => __( 'Text Shadow', 'happy-elementor-addons' ),
176
  'selector' => '{{WRAPPER}} .ha-gradient-heading',
177
  ]
178
  );
180
  $this->add_control(
181
  'blend_mode',
182
  [
183
+ 'label' => __( 'Blend Mode', 'happy-elementor-addons' ),
184
  'type' => Controls_Manager::SELECT,
185
  'options' => [
186
+ '' => __( 'Normal', 'happy-elementor-addons' ),
187
  'multiply' => 'Multiply',
188
  'screen' => 'Screen',
189
  'overlay' => 'Overlay',
widgets/icon-box/widget.php CHANGED
@@ -26,7 +26,7 @@ class Icon_Box extends Base {
26
  * @return string Widget title.
27
  */
28
  public function get_title() {
29
- return __( 'Icon Box', 'happy_addons' );
30
  }
31
 
32
  /**
@@ -49,7 +49,7 @@ class Icon_Box extends Base {
49
  $this->start_controls_section(
50
  '_section_icon',
51
  [
52
- 'label' => __( 'Content', 'happy_addons' ),
53
  'tab' => Controls_Manager::TAB_CONTENT,
54
  ]
55
  );
@@ -68,63 +68,63 @@ class Icon_Box extends Base {
68
  $this->add_control(
69
  'title',
70
  [
71
- 'label' => __( 'Title', 'happy_addons' ),
72
  'type' => Controls_Manager::TEXT,
73
  'label_block' => true,
74
- 'default' => __( 'Happy Icon Box', 'happy_addons' ),
75
- 'placeholder' => __( 'Type Icon Box Title', 'happy_addons' ),
76
  ]
77
  );
78
 
79
  $this->add_control(
80
  'badge_text',
81
  [
82
- 'label' => __( 'Badge Text', 'happy_addons' ),
83
  'type' => Controls_Manager::TEXT,
84
  'label_block' => true,
85
- 'placeholder' => __( 'Type Icon Badge Text', 'happy_addons' ),
86
  ]
87
  );
88
 
89
  $this->add_control(
90
  'link',
91
  [
92
- 'label' => __( 'Box Link', 'happy_addons' ),
93
  'separator' => 'before',
94
  'type' => Controls_Manager::URL,
95
- 'placeholder' => __( 'https://example.com/', 'happy_addons' ),
96
  ]
97
  );
98
 
99
  $this->add_control(
100
  'title_tag',
101
  [
102
- 'label' => __( 'Title HTML Tag', 'happy_addons' ),
103
  'type' => Controls_Manager::CHOOSE,
104
  'separator' => 'before',
105
  'options' => [
106
  'h1' => [
107
- 'title' => __( 'H1', 'happy_addons' ),
108
  'icon' => 'eicon-editor-h1'
109
  ],
110
  'h2' => [
111
- 'title' => __( 'H2', 'happy_addons' ),
112
  'icon' => 'eicon-editor-h2'
113
  ],
114
  'h3' => [
115
- 'title' => __( 'H3', 'happy_addons' ),
116
  'icon' => 'eicon-editor-h3'
117
  ],
118
  'h4' => [
119
- 'title' => __( 'H4', 'happy_addons' ),
120
  'icon' => 'eicon-editor-h4'
121
  ],
122
  'h5' => [
123
- 'title' => __( 'H5', 'happy_addons' ),
124
  'icon' => 'eicon-editor-h5'
125
  ],
126
  'h6' => [
127
- 'title' => __( 'H6', 'happy_addons' ),
128
  'icon' => 'eicon-editor-h6'
129
  ]
130
  ],
@@ -136,23 +136,23 @@ class Icon_Box extends Base {
136
  $this->add_responsive_control(
137
  'align',
138
  [
139
- 'label' => __( 'Alignment', 'happy_addons' ),
140
  'type' => Controls_Manager::CHOOSE,
141
  'options' => [
142
  'left' => [
143
- 'title' => __( 'Left', 'happy_addons' ),
144
  'icon' => 'fa fa-align-left',
145
  ],
146
  'center' => [
147
- 'title' => __( 'Center', 'happy_addons' ),
148
  'icon' => 'fa fa-align-center',
149
  ],
150
  'right' => [
151
- 'title' => __( 'Right', 'happy_addons' ),
152
  'icon' => 'fa fa-align-right',
153
  ],
154
  'justify' => [
155
- 'title' => __( 'Justify', 'happy_addons' ),
156
  'icon' => 'fa fa-align-justify',
157
  ],
158
  ],
@@ -170,7 +170,7 @@ class Icon_Box extends Base {
170
  $this->start_controls_section(
171
  '_section_style_icon',
172
  [
173
- 'label' => __( 'Icon', 'happy_addons' ),
174
  'tab' => Controls_Manager::TAB_STYLE,
175
  ]
176
  );
@@ -178,7 +178,7 @@ class Icon_Box extends Base {
178
  $this->add_responsive_control(
179
  'icon_size',
180
  [
181
- 'label' => __( 'Size', 'happy_addons' ),
182
  'type' => Controls_Manager::SLIDER,
183
  'size_units' => [ 'px' ],
184
  'range' => [
@@ -196,7 +196,7 @@ class Icon_Box extends Base {
196
  $this->add_responsive_control(
197
  'icon_padding',
198
  [
199
- 'label' => __( 'Padding', 'happy_addons' ),
200
  'type' => Controls_Manager::SLIDER,
201
  'size_units' => ['px'],
202
  'selectors' => [
@@ -208,7 +208,7 @@ class Icon_Box extends Base {
208
  $this->add_responsive_control(
209
  'icon_spacing',
210
  [
211
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
212
  'type' => Controls_Manager::SLIDER,
213
  'size_units' => ['px'],
214
  'range' => [
@@ -233,7 +233,7 @@ class Icon_Box extends Base {
233
  $this->add_responsive_control(
234
  'icon_border_radius',
235
  [
236
- 'label' => __( 'Border Radius', 'happy_addons' ),
237
  'type' => Controls_Manager::DIMENSIONS,
238
  'size_units' => [ 'px', '%' ],
239
  'selectors' => [
@@ -258,14 +258,14 @@ class Icon_Box extends Base {
258
  $this->start_controls_tab(
259
  '_tab_icon_normal',
260
  [
261
- 'label' => __( 'Normal', 'happy_addons' ),
262
  ]
263
  );
264
 
265
  $this->add_control(
266
  'icon_color',
267
  [
268
- 'label' => __( 'Color', 'happy_addons' ),
269
  'type' => Controls_Manager::COLOR,
270
  'selectors' => [
271
  '{{WRAPPER}} .ha-icon-box-icon' => 'color: {{VALUE}}',
@@ -276,7 +276,7 @@ class Icon_Box extends Base {
276
  $this->add_control(
277
  'icon_bg_color',
278
  [
279
- 'label' => __( 'Background Color', 'happy_addons' ),
280
  'type' => Controls_Manager::COLOR,
281
  'selectors' => [
282
  '{{WRAPPER}} .ha-icon-box-icon' => 'background-color: {{VALUE}}',
@@ -287,7 +287,7 @@ class Icon_Box extends Base {
287
  $this->add_control(
288
  'icon_bg_rotate',
289
  [
290
- 'label' => __( 'Rotate Icon Box', 'happy_addons' ),
291
  'type' => Controls_Manager::SLIDER,
292
  'size_units' => [ 'deg' ],
293
  'default' => [
@@ -314,14 +314,14 @@ class Icon_Box extends Base {
314
  $this->start_controls_tab(
315
  '_tab_button_hover',
316
  [
317
- 'label' => __( 'Hover', 'happy_addons' ),
318
  ]
319
  );
320
 
321
  $this->add_control(
322
  'icon_hover_color',
323
  [
324
- 'label' => __( 'Color', 'happy_addons' ),
325
  'type' => Controls_Manager::COLOR,
326
  'selectors' => [
327
  '{{WRAPPER}}:hover .ha-icon-box-icon' => 'color: {{VALUE}}',
@@ -332,7 +332,7 @@ class Icon_Box extends Base {
332
  $this->add_control(
333
  'icon_hover_bg_color',
334
  [
335
- 'label' => __( 'Background Color', 'happy_addons' ),
336
  'type' => Controls_Manager::COLOR,
337
  'selectors' => [
338
  '{{WRAPPER}}:hover .ha-icon-box-icon' => 'background-color: {{VALUE}}',
@@ -343,7 +343,7 @@ class Icon_Box extends Base {
343
  $this->add_control(
344
  'icon_hover_border_color',
345
  [
346
- 'label' => __( 'Border Color', 'happy_addons' ),
347
  'type' => Controls_Manager::COLOR,
348
  'selectors' => [
349
  '{{WRAPPER}}:hover .ha-icon-box-icon' => 'border-color: {{VALUE}}',
@@ -357,7 +357,7 @@ class Icon_Box extends Base {
357
  $this->add_control(
358
  'icon_hover_bg_rotate',
359
  [
360
- 'label' => __( 'Rotate Icon Box', 'happy_addons' ),
361
  'type' => Controls_Manager::SLIDER,
362
  'size_units' => [ 'deg' ],
363
  'default' => [
@@ -387,7 +387,7 @@ class Icon_Box extends Base {
387
  $this->start_controls_section(
388
  '_section_style_title',
389
  [
390
- 'label' => __( 'Title', 'happy_addons' ),
391
  'tab' => Controls_Manager::TAB_STYLE,
392
  ]
393
  );
@@ -414,14 +414,14 @@ class Icon_Box extends Base {
414
  $this->start_controls_tab(
415
  '_tab_title_normal',
416
  [
417
- 'label' => __( 'Normal', 'happy_addons' ),
418
  ]
419
  );
420
 
421
  $this->add_control(
422
  'title_color',
423
  [
424
- 'label' => __( 'Text Color', 'happy_addons' ),
425
  'type' => Controls_Manager::COLOR,
426
  'selectors' => [
427
  '{{WRAPPER}} .ha-icon-box-title' => 'color: {{VALUE}}',
@@ -434,14 +434,14 @@ class Icon_Box extends Base {
434
  $this->start_controls_tab(
435
  '_tab_title_hover',
436
  [
437
- 'label' => __( 'Hover', 'happy_addons' ),
438
  ]
439
  );
440
 
441
  $this->add_control(
442
  'title_hover_color',
443
  [
444
- 'label' => __( 'Text Color', 'happy_addons' ),
445
  'type' => Controls_Manager::COLOR,
446
  'selectors' => [
447
  '{{WRAPPER}}:hover .ha-icon-box-title' => 'color: {{VALUE}}',
@@ -457,7 +457,7 @@ class Icon_Box extends Base {
457
  $this->start_controls_section(
458
  '_section_style_badge',
459
  [
460
- 'label' => __( 'Badge', 'happy_addons' ),
461
  'tab' => Controls_Manager::TAB_STYLE,
462
  ]
463
  );
@@ -465,10 +465,10 @@ class Icon_Box extends Base {
465
  $this->add_control(
466
  'badge_offset_toggle',
467
  [
468
- 'label' => __( 'Offset', 'happy_addons' ),
469
  'type' => Controls_Manager::POPOVER_TOGGLE,
470
- 'label_off' => __( 'None', 'happy_addons' ),
471
- 'label_on' => __( 'Custom', 'happy_addons' ),
472
  'return_value' => 'yes',
473
  ]
474
  );
@@ -478,7 +478,7 @@ class Icon_Box extends Base {
478
  $this->add_responsive_control(
479
  'badge_offset_x',
480
  [
481
- 'label' => __( 'Offset Left', 'happy_addons' ),
482
  'type' => Controls_Manager::SLIDER,
483
  'size_units' => ['px'],
484
  'condition' => [
@@ -500,7 +500,7 @@ class Icon_Box extends Base {
500
  $this->add_responsive_control(
501
  'badge_offset_y',
502
  [
503
- 'label' => __( 'Offset Top', 'happy_addons' ),
504
  'type' => Controls_Manager::SLIDER,
505
  'size_units' => ['px'],
506
  'condition' => [
@@ -525,7 +525,7 @@ class Icon_Box extends Base {
525
  $this->add_responsive_control(
526
  'badge_padding',
527
  [
528
- 'label' => __( 'Padding', 'happy_addons' ),
529
  'type' => Controls_Manager::DIMENSIONS,
530
  'size_units' => [ 'px', 'em', '%' ],
531
  'selectors' => [
@@ -537,7 +537,7 @@ class Icon_Box extends Base {
537
  $this->add_control(
538
  'badge_color',
539
  [
540
- 'label' => __( 'Text Color', 'happy_addons' ),
541
  'type' => Controls_Manager::COLOR,
542
  'selectors' => [
543
  '{{WRAPPER}} .ha-badge' => 'color: {{VALUE}}',
@@ -548,7 +548,7 @@ class Icon_Box extends Base {
548
  $this->add_control(
549
  'badge_bg_color',
550
  [
551
- 'label' => __( 'Background Color', 'happy_addons' ),
552
  'type' => Controls_Manager::COLOR,
553
  'selectors' => [
554
  '{{WRAPPER}} .ha-badge' => 'background-color: {{VALUE}}',
@@ -567,7 +567,7 @@ class Icon_Box extends Base {
567
  $this->add_responsive_control(
568
  'badge_border_radius',
569
  [
570
- 'label' => __( 'Border Radius', 'happy_addons' ),
571
  'type' => Controls_Manager::DIMENSIONS,
572
  'size_units' => [ 'px', '%' ],
573
  'selectors' => [
@@ -591,7 +591,7 @@ class Icon_Box extends Base {
591
  Group_Control_Typography::get_type(),
592
  [
593
  'name' => 'badge_typography',
594
- 'label' => __( 'Typography', 'happy_addons' ),
595
  'exclude' => [
596
  'font_family',
597
  'line_height'
26
  * @return string Widget title.
27
  */
28
  public function get_title() {
29
+ return __( 'Icon Box', 'happy-elementor-addons' );
30
  }
31
 
32
  /**
49
  $this->start_controls_section(
50
  '_section_icon',
51
  [
52
+ 'label' => __( 'Content', 'happy-elementor-addons' ),
53
  'tab' => Controls_Manager::TAB_CONTENT,
54
  ]
55
  );
68
  $this->add_control(
69
  'title',
70
  [
71
+ 'label' => __( 'Title', 'happy-elementor-addons' ),
72
  'type' => Controls_Manager::TEXT,
73
  'label_block' => true,
74
+ 'default' => __( 'Happy Icon Box', 'happy-elementor-addons' ),
75
+ 'placeholder' => __( 'Type Icon Box Title', 'happy-elementor-addons' ),
76
  ]
77
  );
78
 
79
  $this->add_control(
80
  'badge_text',
81
  [
82
+ 'label' => __( 'Badge Text', 'happy-elementor-addons' ),
83
  'type' => Controls_Manager::TEXT,
84
  'label_block' => true,
85
+ 'placeholder' => __( 'Type Icon Badge Text', 'happy-elementor-addons' ),
86
  ]
87
  );
88
 
89
  $this->add_control(
90
  'link',
91
  [
92
+ 'label' => __( 'Box Link', 'happy-elementor-addons' ),
93
  'separator' => 'before',
94
  'type' => Controls_Manager::URL,
95
+ 'placeholder' => __( 'https://example.com/', 'happy-elementor-addons' ),
96
  ]
97
  );
98
 
99
  $this->add_control(
100
  'title_tag',
101
  [
102
+ 'label' => __( 'Title HTML Tag', 'happy-elementor-addons' ),
103
  'type' => Controls_Manager::CHOOSE,
104
  'separator' => 'before',
105
  'options' => [
106
  'h1' => [
107
+ 'title' => __( 'H1', 'happy-elementor-addons' ),
108
  'icon' => 'eicon-editor-h1'
109
  ],
110
  'h2' => [
111
+ 'title' => __( 'H2', 'happy-elementor-addons' ),
112
  'icon' => 'eicon-editor-h2'
113
  ],
114
  'h3' => [
115
+ 'title' => __( 'H3', 'happy-elementor-addons' ),
116
  'icon' => 'eicon-editor-h3'
117
  ],
118
  'h4' => [
119
+ 'title' => __( 'H4', 'happy-elementor-addons' ),
120
  'icon' => 'eicon-editor-h4'
121
  ],
122
  'h5' => [
123
+ 'title' => __( 'H5', 'happy-elementor-addons' ),
124
  'icon' => 'eicon-editor-h5'
125
  ],
126
  'h6' => [
127
+ 'title' => __( 'H6', 'happy-elementor-addons' ),
128
  'icon' => 'eicon-editor-h6'
129
  ]
130
  ],
136
  $this->add_responsive_control(
137
  'align',
138
  [
139
+ 'label' => __( 'Alignment', 'happy-elementor-addons' ),
140
  'type' => Controls_Manager::CHOOSE,
141
  'options' => [
142
  'left' => [
143
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
144
  'icon' => 'fa fa-align-left',
145
  ],
146
  'center' => [
147
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
148
  'icon' => 'fa fa-align-center',
149
  ],
150
  'right' => [
151
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
152
  'icon' => 'fa fa-align-right',
153
  ],
154
  'justify' => [
155
+ 'title' => __( 'Justify', 'happy-elementor-addons' ),
156
  'icon' => 'fa fa-align-justify',
157
  ],
158
  ],
170
  $this->start_controls_section(
171
  '_section_style_icon',
172
  [
173
+ 'label' => __( 'Icon', 'happy-elementor-addons' ),
174
  'tab' => Controls_Manager::TAB_STYLE,
175
  ]
176
  );
178
  $this->add_responsive_control(
179
  'icon_size',
180
  [
181
+ 'label' => __( 'Size', 'happy-elementor-addons' ),
182
  'type' => Controls_Manager::SLIDER,
183
  'size_units' => [ 'px' ],
184
  'range' => [
196
  $this->add_responsive_control(
197
  'icon_padding',
198
  [
199
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
200
  'type' => Controls_Manager::SLIDER,
201
  'size_units' => ['px'],
202
  'selectors' => [
208
  $this->add_responsive_control(
209
  'icon_spacing',
210
  [
211
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
212
  'type' => Controls_Manager::SLIDER,
213
  'size_units' => ['px'],
214
  'range' => [
233
  $this->add_responsive_control(
234
  'icon_border_radius',
235
  [
236
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
237
  'type' => Controls_Manager::DIMENSIONS,
238
  'size_units' => [ 'px', '%' ],
239
  'selectors' => [
258
  $this->start_controls_tab(
259
  '_tab_icon_normal',
260
  [
261
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
262
  ]
263
  );
264
 
265
  $this->add_control(
266
  'icon_color',
267
  [
268
+ 'label' => __( 'Color', 'happy-elementor-addons' ),
269
  'type' => Controls_Manager::COLOR,
270
  'selectors' => [
271
  '{{WRAPPER}} .ha-icon-box-icon' => 'color: {{VALUE}}',
276
  $this->add_control(
277
  'icon_bg_color',
278
  [
279
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
280
  'type' => Controls_Manager::COLOR,
281
  'selectors' => [
282
  '{{WRAPPER}} .ha-icon-box-icon' => 'background-color: {{VALUE}}',
287
  $this->add_control(
288
  'icon_bg_rotate',
289
  [
290
+ 'label' => __( 'Rotate Icon Box', 'happy-elementor-addons' ),
291
  'type' => Controls_Manager::SLIDER,
292
  'size_units' => [ 'deg' ],
293
  'default' => [
314
  $this->start_controls_tab(
315
  '_tab_button_hover',
316
  [
317
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
318
  ]
319
  );
320
 
321
  $this->add_control(
322
  'icon_hover_color',
323
  [
324
+ 'label' => __( 'Color', 'happy-elementor-addons' ),
325
  'type' => Controls_Manager::COLOR,
326
  'selectors' => [
327
  '{{WRAPPER}}:hover .ha-icon-box-icon' => 'color: {{VALUE}}',
332
  $this->add_control(
333
  'icon_hover_bg_color',
334
  [
335
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
336
  'type' => Controls_Manager::COLOR,
337
  'selectors' => [
338
  '{{WRAPPER}}:hover .ha-icon-box-icon' => 'background-color: {{VALUE}}',
343
  $this->add_control(
344
  'icon_hover_border_color',
345
  [
346
+ 'label' => __( 'Border Color', 'happy-elementor-addons' ),
347
  'type' => Controls_Manager::COLOR,
348
  'selectors' => [
349
  '{{WRAPPER}}:hover .ha-icon-box-icon' => 'border-color: {{VALUE}}',
357
  $this->add_control(
358
  'icon_hover_bg_rotate',
359
  [
360
+ 'label' => __( 'Rotate Icon Box', 'happy-elementor-addons' ),
361
  'type' => Controls_Manager::SLIDER,
362
  'size_units' => [ 'deg' ],
363
  'default' => [
387
  $this->start_controls_section(
388
  '_section_style_title',
389
  [
390
+ 'label' => __( 'Title', 'happy-elementor-addons' ),
391
  'tab' => Controls_Manager::TAB_STYLE,
392
  ]
393
  );
414
  $this->start_controls_tab(
415
  '_tab_title_normal',
416
  [
417
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
418
  ]
419
  );
420
 
421
  $this->add_control(
422
  'title_color',
423
  [
424
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
425
  'type' => Controls_Manager::COLOR,
426
  'selectors' => [
427
  '{{WRAPPER}} .ha-icon-box-title' => 'color: {{VALUE}}',
434
  $this->start_controls_tab(
435
  '_tab_title_hover',
436
  [
437
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
438
  ]
439
  );
440
 
441
  $this->add_control(
442
  'title_hover_color',
443
  [
444
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
445
  'type' => Controls_Manager::COLOR,
446
  'selectors' => [
447
  '{{WRAPPER}}:hover .ha-icon-box-title' => 'color: {{VALUE}}',
457
  $this->start_controls_section(
458
  '_section_style_badge',
459
  [
460
+ 'label' => __( 'Badge', 'happy-elementor-addons' ),
461
  'tab' => Controls_Manager::TAB_STYLE,
462
  ]
463
  );
465
  $this->add_control(
466
  'badge_offset_toggle',
467
  [
468
+ 'label' => __( 'Offset', 'happy-elementor-addons' ),
469
  'type' => Controls_Manager::POPOVER_TOGGLE,
470
+ 'label_off' => __( 'None', 'happy-elementor-addons' ),
471
+ 'label_on' => __( 'Custom', 'happy-elementor-addons' ),
472
  'return_value' => 'yes',
473
  ]
474
  );
478
  $this->add_responsive_control(
479
  'badge_offset_x',
480
  [
481
+ 'label' => __( 'Offset Left', 'happy-elementor-addons' ),
482
  'type' => Controls_Manager::SLIDER,
483
  'size_units' => ['px'],
484
  'condition' => [
500
  $this->add_responsive_control(
501
  'badge_offset_y',
502
  [
503
+ 'label' => __( 'Offset Top', 'happy-elementor-addons' ),
504
  'type' => Controls_Manager::SLIDER,
505
  'size_units' => ['px'],
506
  'condition' => [
525
  $this->add_responsive_control(
526
  'badge_padding',
527
  [
528
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
529
  'type' => Controls_Manager::DIMENSIONS,
530
  'size_units' => [ 'px', 'em', '%' ],
531
  'selectors' => [
537
  $this->add_control(
538
  'badge_color',
539
  [
540
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
541
  'type' => Controls_Manager::COLOR,
542
  'selectors' => [
543
  '{{WRAPPER}} .ha-badge' => 'color: {{VALUE}}',
548
  $this->add_control(
549
  'badge_bg_color',
550
  [
551
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
552
  'type' => Controls_Manager::COLOR,
553
  'selectors' => [
554
  '{{WRAPPER}} .ha-badge' => 'background-color: {{VALUE}}',
567
  $this->add_responsive_control(
568
  'badge_border_radius',
569
  [
570
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
571
  'type' => Controls_Manager::DIMENSIONS,
572
  'size_units' => [ 'px', '%' ],
573
  'selectors' => [
591
  Group_Control_Typography::get_type(),
592
  [
593
  'name' => 'badge_typography',
594
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
595
  'exclude' => [
596
  'font_family',
597
  'line_height'
widgets/image-compare/widget.php CHANGED
@@ -28,7 +28,7 @@ class Image_Compare extends Base {
28
  * @return string Widget title.
29
  */
30
  public function get_title() {
31
- return __( 'Image Compare', 'happy_addons' );
32
  }
33
 
34
  /**
@@ -51,7 +51,7 @@ class Image_Compare extends Base {
51
  $this->start_controls_section(
52
  '_section_images',
53
  [
54
- 'label' => __( 'Images', 'happy_addons' ),
55
  'tab' => Controls_Manager::TAB_CONTENT,
56
  ]
57
  );
@@ -60,14 +60,14 @@ class Image_Compare extends Base {
60
  $this->start_controls_tab(
61
  '_tab_before_image',
62
  [
63
- 'label' => __( 'Before', 'happy_addons' ),
64
  ]
65
  );
66
 
67
  $this->add_control(
68
  'before_image',
69
  [
70
- 'label' => __( 'Image', 'happy_addons' ),
71
  'type' => Controls_Manager::MEDIA,
72
  'default' => [
73
  'url' => Utils::get_placeholder_image_src(),
@@ -78,11 +78,11 @@ class Image_Compare extends Base {
78
  $this->add_control(
79
  'before_label',
80
  [
81
- 'label' => __( 'Label', 'happy_addons' ),
82
  'type' => Controls_Manager::TEXT,
83
- 'default' => __( 'Before', 'happy_addons' ),
84
- 'placeholder' => __( 'Type before image label', 'happy_addons' ),
85
- 'description' => __( 'Label will not be shown if Hide Overlay is enabled in Settings', 'happy_addons' ),
86
  ]
87
  );
88
 
@@ -91,14 +91,14 @@ class Image_Compare extends Base {
91
  $this->start_controls_tab(
92
  '_tab_after_image',
93
  [
94
- 'label' => __( 'After', 'happy_addons' ),
95
  ]
96
  );
97
 
98
  $this->add_control(
99
  'after_image',
100
  [
101
- 'label' => __( 'Image', 'happy_addons' ),
102
  'type' => Controls_Manager::MEDIA,
103
  'default' => [
104
  'url' => Utils::get_placeholder_image_src(),
@@ -109,11 +109,11 @@ class Image_Compare extends Base {
109
  $this->add_control(
110
  'after_label',
111
  [
112
- 'label' => __( 'Label', 'happy_addons' ),
113
  'type' => Controls_Manager::TEXT,
114
- 'default' => __( 'After', 'happy_addons' ),
115
- 'placeholder' => __( 'Type after image label', 'happy_addons' ),
116
- 'description' => __( 'Label will not be shown if Hide Overlay is enabled in Settings', 'happy_addons' ),
117
  ]
118
  );
119
 
@@ -134,7 +134,7 @@ class Image_Compare extends Base {
134
  $this->start_controls_section(
135
  '_section_settings',
136
  [
137
- 'label' => __( 'Settings', 'happy_addons' ),
138
  'tab' => Controls_Manager::TAB_CONTENT,
139
  ]
140
  );
@@ -142,7 +142,7 @@ class Image_Compare extends Base {
142
  $this->add_control(
143
  'offset',
144
  [
145
- 'label' => __( 'Visibility Ratio', 'happy_addons' ),
146
  'type' => Controls_Manager::SLIDER,
147
  'size_units' => ['px'],
148
  'range' => [
@@ -161,16 +161,16 @@ class Image_Compare extends Base {
161
  $this->add_control(
162
  'orientation',
163
  [
164
- 'label' => __( 'Orientation', 'happy_addons' ),
165
  'type' => Controls_Manager::CHOOSE,
166
  'label_block' => false,
167
  'options' => [
168
  'horizontal' => [
169
- 'title' => __( 'Horizontal', 'happy_addons' ),
170
  'icon' => 'fa fa-arrows-h',
171
  ],
172
  'vertical' => [
173
- 'title' => __( 'Vertical', 'happy_addons' ),
174
  'icon' => 'fa fa-arrows-v',
175
  ],
176
  ],
@@ -181,27 +181,27 @@ class Image_Compare extends Base {
181
  $this->add_control(
182
  'hide_overlay',
183
  [
184
- 'label' => __( 'Hide Overlay', 'happy_addons' ),
185
  'type' => Controls_Manager::SWITCHER,
186
- 'label_on' => __( 'Yes', 'happy_addons' ),
187
- 'label_off' => __( 'No', 'happy_addons' ),
188
  'return_value' => 'yes',
189
- 'description' => __( 'Hide overlay with before and after label', 'happy_addons' )
190
  ]
191
  );
192
 
193
  $this->add_control(
194
  'move_handle',
195
  [
196
- 'label' => __( 'Move Handle', 'happy_addons' ),
197
  'type' => Controls_Manager::SELECT,
198
  'default' => 'on_swipe',
199
  'options' => [
200
- 'on_hover' => __( 'On Hover', 'happy_addons' ),
201
- 'on_click' => __( 'On Click', 'happy_addons' ),
202
- 'on_swipe' => __( 'On Swipe', 'happy_addons' ),
203
  ],
204
- 'description' => __( 'Select handle movement type. Note: overlay does not work with On Hover.', 'happy_addons' )
205
  ]
206
  );
207
 
@@ -212,7 +212,7 @@ class Image_Compare extends Base {
212
  $this->start_controls_section(
213
  '_section_style_handle',
214
  [
215
- 'label' => __( 'Handle', 'happy_addons' ),
216
  'tab' => Controls_Manager::TAB_STYLE,
217
  ]
218
  );
@@ -220,7 +220,7 @@ class Image_Compare extends Base {
220
  $this->add_control(
221
  'handle_color',
222
  [
223
- 'label' => __( 'Color', 'happy_addons' ),
224
  'type' => Controls_Manager::COLOR,
225
  'selectors' => [
226
  '{{WRAPPER}} .twentytwenty-handle:before, {{WRAPPER}} .twentytwenty-handle:after' => 'background-color: {{VALUE}}',
@@ -251,7 +251,7 @@ class Image_Compare extends Base {
251
  $this->add_responsive_control(
252
  'bar_size',
253
  [
254
- 'label' => __( 'Size', 'happy_addons' ),
255
  'type' => Controls_Manager::SLIDER,
256
  'size_units' => [ 'px' ],
257
  'range' => [
@@ -279,7 +279,7 @@ class Image_Compare extends Base {
279
  $this->add_responsive_control(
280
  'arrow_box_width',
281
  [
282
- 'label' => __( 'Box Width', 'happy_addons' ),
283
  'type' => Controls_Manager::SLIDER,
284
  'size_units' => [ 'px' ],
285
  'range' => [
@@ -298,7 +298,7 @@ class Image_Compare extends Base {
298
  $this->add_responsive_control(
299
  'arrow_box_height',
300
  [
301
- 'label' => __( 'Box Height', 'happy_addons' ),
302
  'type' => Controls_Manager::SLIDER,
303
  'size_units' => [ 'px' ],
304
  'range' => [
@@ -329,7 +329,7 @@ class Image_Compare extends Base {
329
  $this->add_responsive_control(
330
  'box_border_radius',
331
  [
332
- 'label' => __( 'Border Radius', 'happy_addons' ),
333
  'type' => Controls_Manager::DIMENSIONS,
334
  'size_units' => [ 'px', '%' ],
335
  'selectors' => [
@@ -343,7 +343,7 @@ class Image_Compare extends Base {
343
  $this->start_controls_section(
344
  '_section_style_label',
345
  [
346
- 'label' => __( 'Label', 'happy_addons' ),
347
  'tab' => Controls_Manager::TAB_STYLE,
348
  ]
349
  );
@@ -351,7 +351,7 @@ class Image_Compare extends Base {
351
  $this->add_responsive_control(
352
  'label_padding',
353
  [
354
- 'label' => __( 'Padding', 'happy_addons' ),
355
  'type' => Controls_Manager::DIMENSIONS,
356
  'size_units' => [ 'px', 'em', '%' ],
357
  'selectors' => [
@@ -363,10 +363,10 @@ class Image_Compare extends Base {
363
  $this->add_control(
364
  'position_toggle',
365
  [
366
- 'label' => __( 'Position', 'happy_addons' ),
367
  'type' => Controls_Manager::POPOVER_TOGGLE,
368
- 'label_off' => __( 'None', 'happy_addons' ),
369
- 'label_on' => __( 'Custom', 'happy_addons' ),
370
  'return_value' => 'yes',
371
  ]
372
  );
@@ -376,7 +376,7 @@ class Image_Compare extends Base {
376
  $this->add_responsive_control(
377
  'label_offset_y',
378
  [
379
- 'label' => __( 'Vertical', 'happy_addons' ),
380
  'type' => Controls_Manager::SLIDER,
381
  'size_units' => ['px'],
382
  'range' => [
@@ -399,7 +399,7 @@ class Image_Compare extends Base {
399
  $this->add_responsive_control(
400
  'label_offset_x',
401
  [
402
- 'label' => __( 'Horizontal', 'happy_addons' ),
403
  'type' => Controls_Manager::SLIDER,
404
  'size_units' => ['px'],
405
  'range' => [
@@ -432,7 +432,7 @@ class Image_Compare extends Base {
432
  $this->add_responsive_control(
433
  'label_border_radius',
434
  [
435
- 'label' => __( 'Border Radius', 'happy_addons' ),
436
  'type' => Controls_Manager::DIMENSIONS,
437
  'size_units' => [ 'px', '%' ],
438
  'selectors' => [
@@ -444,7 +444,7 @@ class Image_Compare extends Base {
444
  $this->add_control(
445
  'label_color',
446
  [
447
- 'label' => __( 'Color', 'happy_addons' ),
448
  'type' => Controls_Manager::COLOR,
449
  'selectors' => [
450
  '{{WRAPPER}} .twentytwenty-before-label:before, {{WRAPPER}} .twentytwenty-after-label:before' => 'color: {{VALUE}}',
@@ -455,7 +455,7 @@ class Image_Compare extends Base {
455
  $this->add_control(
456
  'label_bg_color',
457
  [
458
- 'label' => __( 'Background Color', 'happy_addons' ),
459
  'type' => Controls_Manager::COLOR,
460
  'selectors' => [
461
  '{{WRAPPER}} .twentytwenty-before-label:before, {{WRAPPER}} .twentytwenty-after-label:before' => 'background-color: {{VALUE}}',
28
  * @return string Widget title.
29
  */
30
  public function get_title() {
31
+ return __( 'Image Compare', 'happy-elementor-addons' );
32
  }
33
 
34
  /**
51
  $this->start_controls_section(
52
  '_section_images',
53
  [
54
+ 'label' => __( 'Images', 'happy-elementor-addons' ),
55
  'tab' => Controls_Manager::TAB_CONTENT,
56
  ]
57
  );
60
  $this->start_controls_tab(
61
  '_tab_before_image',
62
  [
63
+ 'label' => __( 'Before', 'happy-elementor-addons' ),
64
  ]
65
  );
66
 
67
  $this->add_control(
68
  'before_image',
69
  [
70
+ 'label' => __( 'Image', 'happy-elementor-addons' ),
71
  'type' => Controls_Manager::MEDIA,
72
  'default' => [
73
  'url' => Utils::get_placeholder_image_src(),
78
  $this->add_control(
79
  'before_label',
80
  [
81
+ 'label' => __( 'Label', 'happy-elementor-addons' ),
82
  'type' => Controls_Manager::TEXT,
83
+ 'default' => __( 'Before', 'happy-elementor-addons' ),
84
+ 'placeholder' => __( 'Type before image label', 'happy-elementor-addons' ),
85
+ 'description' => __( 'Label will not be shown if Hide Overlay is enabled in Settings', 'happy-elementor-addons' ),
86
  ]
87
  );
88
 
91
  $this->start_controls_tab(
92
  '_tab_after_image',
93
  [
94
+ 'label' => __( 'After', 'happy-elementor-addons' ),
95
  ]
96
  );
97
 
98
  $this->add_control(
99
  'after_image',
100
  [
101
+ 'label' => __( 'Image', 'happy-elementor-addons' ),
102
  'type' => Controls_Manager::MEDIA,
103
  'default' => [
104
  'url' => Utils::get_placeholder_image_src(),
109
  $this->add_control(
110
  'after_label',
111
  [
112
+ 'label' => __( 'Label', 'happy-elementor-addons' ),
113
  'type' => Controls_Manager::TEXT,
114
+ 'default' => __( 'After', 'happy-elementor-addons' ),
115
+ 'placeholder' => __( 'Type after image label', 'happy-elementor-addons' ),
116
+ 'description' => __( 'Label will not be shown if Hide Overlay is enabled in Settings', 'happy-elementor-addons' ),
117
  ]
118
  );
119
 
134
  $this->start_controls_section(
135
  '_section_settings',
136
  [
137
+ 'label' => __( 'Settings', 'happy-elementor-addons' ),
138
  'tab' => Controls_Manager::TAB_CONTENT,
139
  ]
140
  );
142
  $this->add_control(
143
  'offset',
144
  [
145
+ 'label' => __( 'Visibility Ratio', 'happy-elementor-addons' ),
146
  'type' => Controls_Manager::SLIDER,
147
  'size_units' => ['px'],
148
  'range' => [
161
  $this->add_control(
162
  'orientation',
163
  [
164
+ 'label' => __( 'Orientation', 'happy-elementor-addons' ),
165
  'type' => Controls_Manager::CHOOSE,
166
  'label_block' => false,
167
  'options' => [
168
  'horizontal' => [
169
+ 'title' => __( 'Horizontal', 'happy-elementor-addons' ),
170
  'icon' => 'fa fa-arrows-h',
171
  ],
172
  'vertical' => [
173
+ 'title' => __( 'Vertical', 'happy-elementor-addons' ),
174
  'icon' => 'fa fa-arrows-v',
175
  ],
176
  ],
181
  $this->add_control(
182
  'hide_overlay',
183
  [
184
+ 'label' => __( 'Hide Overlay', 'happy-elementor-addons' ),
185
  'type' => Controls_Manager::SWITCHER,
186
+ 'label_on' => __( 'Yes', 'happy-elementor-addons' ),
187
+ 'label_off' => __( 'No', 'happy-elementor-addons' ),
188
  'return_value' => 'yes',
189
+ 'description' => __( 'Hide overlay with before and after label', 'happy-elementor-addons' )
190
  ]
191
  );
192
 
193
  $this->add_control(
194
  'move_handle',
195
  [
196
+ 'label' => __( 'Move Handle', 'happy-elementor-addons' ),
197
  'type' => Controls_Manager::SELECT,
198
  'default' => 'on_swipe',
199
  'options' => [
200
+ 'on_hover' => __( 'On Hover', 'happy-elementor-addons' ),
201
+ 'on_click' => __( 'On Click', 'happy-elementor-addons' ),
202
+ 'on_swipe' => __( 'On Swipe', 'happy-elementor-addons' ),
203
  ],
204
+ 'description' => __( 'Select handle movement type. Note: overlay does not work with On Hover.', 'happy-elementor-addons' )
205
  ]
206
  );
207
 
212
  $this->start_controls_section(
213
  '_section_style_handle',
214
  [
215
+ 'label' => __( 'Handle', 'happy-elementor-addons' ),
216
  'tab' => Controls_Manager::TAB_STYLE,
217
  ]
218
  );
220
  $this->add_control(
221
  'handle_color',
222
  [
223
+ 'label' => __( 'Color', 'happy-elementor-addons' ),
224
  'type' => Controls_Manager::COLOR,
225
  'selectors' => [
226
  '{{WRAPPER}} .twentytwenty-handle:before, {{WRAPPER}} .twentytwenty-handle:after' => 'background-color: {{VALUE}}',
251
  $this->add_responsive_control(
252
  'bar_size',
253
  [
254
+ 'label' => __( 'Size', 'happy-elementor-addons' ),
255
  'type' => Controls_Manager::SLIDER,
256
  'size_units' => [ 'px' ],
257
  'range' => [
279
  $this->add_responsive_control(
280
  'arrow_box_width',
281
  [
282
+ 'label' => __( 'Box Width', 'happy-elementor-addons' ),
283
  'type' => Controls_Manager::SLIDER,
284
  'size_units' => [ 'px' ],
285
  'range' => [
298
  $this->add_responsive_control(
299
  'arrow_box_height',
300
  [
301
+ 'label' => __( 'Box Height', 'happy-elementor-addons' ),
302
  'type' => Controls_Manager::SLIDER,
303
  'size_units' => [ 'px' ],
304
  'range' => [
329
  $this->add_responsive_control(
330
  'box_border_radius',
331
  [
332
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
333
  'type' => Controls_Manager::DIMENSIONS,
334
  'size_units' => [ 'px', '%' ],
335
  'selectors' => [
343
  $this->start_controls_section(
344
  '_section_style_label',
345
  [
346
+ 'label' => __( 'Label', 'happy-elementor-addons' ),
347
  'tab' => Controls_Manager::TAB_STYLE,
348
  ]
349
  );
351
  $this->add_responsive_control(
352
  'label_padding',
353
  [
354
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
355
  'type' => Controls_Manager::DIMENSIONS,
356
  'size_units' => [ 'px', 'em', '%' ],
357
  'selectors' => [
363
  $this->add_control(
364
  'position_toggle',
365
  [
366
+ 'label' => __( 'Position', 'happy-elementor-addons' ),
367
  'type' => Controls_Manager::POPOVER_TOGGLE,
368
+ 'label_off' => __( 'None', 'happy-elementor-addons' ),
369
+ 'label_on' => __( 'Custom', 'happy-elementor-addons' ),
370
  'return_value' => 'yes',
371
  ]
372
  );
376
  $this->add_responsive_control(
377
  'label_offset_y',
378
  [
379
+ 'label' => __( 'Vertical', 'happy-elementor-addons' ),
380
  'type' => Controls_Manager::SLIDER,
381
  'size_units' => ['px'],
382
  'range' => [
399
  $this->add_responsive_control(
400
  'label_offset_x',
401
  [
402
+ 'label' => __( 'Horizontal', 'happy-elementor-addons' ),
403
  'type' => Controls_Manager::SLIDER,
404
  'size_units' => ['px'],
405
  'range' => [
432
  $this->add_responsive_control(
433
  'label_border_radius',
434
  [
435
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
436
  'type' => Controls_Manager::DIMENSIONS,
437
  'size_units' => [ 'px', '%' ],
438
  'selectors' => [
444
  $this->add_control(
445
  'label_color',
446
  [
447
+ 'label' => __( 'Color', 'happy-elementor-addons' ),
448
  'type' => Controls_Manager::COLOR,
449
  'selectors' => [
450
  '{{WRAPPER}} .twentytwenty-before-label:before, {{WRAPPER}} .twentytwenty-after-label:before' => 'color: {{VALUE}}',
455
  $this->add_control(
456
  'label_bg_color',
457
  [
458
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
459
  'type' => Controls_Manager::COLOR,
460
  'selectors' => [
461
  '{{WRAPPER}} .twentytwenty-before-label:before, {{WRAPPER}} .twentytwenty-after-label:before' => 'background-color: {{VALUE}}',
widgets/infobox/widget.php CHANGED
@@ -28,7 +28,7 @@ class InfoBox extends Base {
28
  * @return string Widget title.
29
  */
30
  public function get_title() {
31
- return __( 'Info Box', 'happy_addons' );
32
  }
33
 
34
  /**
@@ -54,7 +54,7 @@ class InfoBox extends Base {
54
  $this->start_controls_section(
55
  '_section_media',
56
  [
57
- 'label' => __( 'Icon / Image', 'happy_addons' ),
58
  'tab' => Controls_Manager::TAB_CONTENT,
59
  ]
60
  );
@@ -62,16 +62,16 @@ class InfoBox extends Base {
62
  $this->add_control(
63
  'type',
64
  [
65
- 'label' => __( 'Media Type', 'happy_addons' ),
66
  'type' => Controls_Manager::CHOOSE,
67
  'label_block' => false,
68
  'options' => [
69
  'icon' => [
70
- 'title' => __( 'Icon', 'happy_addons' ),
71
  'icon' => 'fa fa-smile-o',
72
  ],
73
  'image' => [
74
- 'title' => __( 'Image', 'happy_addons' ),
75
  'icon' => 'fa fa-image',
76
  ],
77
  ],
@@ -83,7 +83,7 @@ class InfoBox extends Base {
83
  $this->add_control(
84
  'image',
85
  [
86
- 'label' => __( 'Image', 'happy_addons' ),
87
  'type' => Controls_Manager::MEDIA,
88
  'default' => [
89
  'url' => Utils::get_placeholder_image_src(),
@@ -117,7 +117,7 @@ class InfoBox extends Base {
117
  $this->add_control(
118
  'icon',
119
  [
120
- 'label' => __( 'Icon', 'happy_addons' ),
121
  'type' => Controls_Manager::ICON,
122
  'default' => 'fa fa-smile-o',
123
  'options' => ha_get_happy_icons(),
@@ -132,7 +132,7 @@ class InfoBox extends Base {
132
  $this->start_controls_section(
133
  '_section_title',
134
  [
135
- 'label' => __( 'Title & Description', 'happy_addons' ),
136
  'tab' => Controls_Manager::TAB_CONTENT,
137
  ]
138
  );
@@ -140,21 +140,21 @@ class InfoBox extends Base {
140
  $this->add_control(
141
  'title',
142
  [
143
- 'label' => __( 'Title', 'happy_addons' ),
144
  'label_block' => true,
145
  'type' => Controls_Manager::TEXT,
146
- 'default' => __( 'Happy Info Box Title', 'happy_addons' ),
147
- 'placeholder' => __( 'Type Info Box Title', 'happy_addons' ),
148
  ]
149
  );
150
 
151
  $this->add_control(
152
  'description',
153
  [
154
- 'label' => __( 'Description', 'happy_addons' ),
155
  'type' => Controls_Manager::TEXTAREA,
156
- 'default' => __( 'Happy info box description goes here', 'happy_addons' ),
157
- 'placeholder' => __( 'Type info box description', 'happy_addons' ),
158
  'rows' => 5
159
  ]
160
  );
@@ -162,31 +162,31 @@ class InfoBox extends Base {
162
  $this->add_control(
163
  'title_tag',
164
  [
165
- 'label' => __( 'Title HTML Tag', 'happy_addons' ),
166
  'type' => Controls_Manager::CHOOSE,
167
  'options' => [
168
  'h1' => [
169
- 'title' => __( 'H1', 'happy_addons' ),
170
  'icon' => 'eicon-editor-h1'
171
  ],
172
  'h2' => [
173
- 'title' => __( 'H2', 'happy_addons' ),
174
  'icon' => 'eicon-editor-h2'
175
  ],
176
  'h3' => [
177
- 'title' => __( 'H3', 'happy_addons' ),
178
  'icon' => 'eicon-editor-h3'
179
  ],
180
  'h4' => [
181
- 'title' => __( 'H4', 'happy_addons' ),
182
  'icon' => 'eicon-editor-h4'
183
  ],
184
  'h5' => [
185
- 'title' => __( 'H5', 'happy_addons' ),
186
  'icon' => 'eicon-editor-h5'
187
  ],
188
  'h6' => [
189
- 'title' => __( 'H6', 'happy_addons' ),
190
  'icon' => 'eicon-editor-h6'
191
  ]
192
  ],
@@ -198,23 +198,23 @@ class InfoBox extends Base {
198
  $this->add_responsive_control(
199
  'align',
200
  [
201
- 'label' => __( 'Alignment', 'happy_addons' ),
202
  'type' => Controls_Manager::CHOOSE,
203
  'options' => [
204
  'left' => [
205
- 'title' => __( 'Left', 'happy_addons' ),
206
  'icon' => 'fa fa-align-left',
207
  ],
208
  'center' => [
209
- 'title' => __( 'Center', 'happy_addons' ),
210
  'icon' => 'fa fa-align-center',
211
  ],
212
  'right' => [
213
- 'title' => __( 'Right', 'happy_addons' ),
214
  'icon' => 'fa fa-align-right',
215
  ],
216
  'justify' => [
217
- 'title' => __( 'Justify', 'happy_addons' ),
218
  'icon' => 'fa fa-align-justify',
219
  ],
220
  ],
@@ -230,7 +230,7 @@ class InfoBox extends Base {
230
  $this->start_controls_section(
231
  '_section_button',
232
  [
233
- 'label' => __( 'Button', 'happy_addons' ),
234
  'tab' => Controls_Manager::TAB_CONTENT,
235
  ]
236
  );
@@ -238,10 +238,10 @@ class InfoBox extends Base {
238
  $this->add_control(
239
  'button_text',
240
  [
241
- 'label' => __( 'Text', 'happy_addons' ),
242
  'type' => Controls_Manager::TEXT,
243
- 'default' => __( 'Button Text', 'happy_addons' ),
244
- 'placeholder' => __( 'Type button text here', 'happy_addons' ),
245
  'label_block' => true,
246
  ]
247
  );
@@ -249,16 +249,16 @@ class InfoBox extends Base {
249
  $this->add_control(
250
  'button_link',
251
  [
252
- 'label' => __( 'Link', 'happy_addons' ),
253
  'type' => Controls_Manager::URL,
254
- 'placeholder' => __( 'https://example.com/', 'happy_addons' ),
255
  ]
256
  );
257
 
258
  $this->add_control(
259
  'button_icon',
260
  [
261
- 'label' => __( 'Icon', 'happy_addons' ),
262
  'type' => Controls_Manager::ICON,
263
  'options' => ha_get_happy_icons(),
264
  'default' => 'fa fa-angle-right'
@@ -268,16 +268,16 @@ class InfoBox extends Base {
268
  $this->add_control(
269
  'button_icon_position',
270
  [
271
- 'label' => __( 'Icon Position', 'happy_addons' ),
272
  'type' => Controls_Manager::CHOOSE,
273
  'label_block' => false,
274
  'options' => [
275
  'before' => [
276
- 'title' => __( 'Before', 'happy_addons' ),
277
  'icon' => 'eicon-h-align-left',
278
  ],
279
  'after' => [
280
- 'title' => __( 'After', 'happy_addons' ),
281
  'icon' => 'eicon-h-align-right',
282
  ],
283
  ],
@@ -292,7 +292,7 @@ class InfoBox extends Base {
292
  $this->add_control(
293
  'button_icon_spacing',
294
  [
295
- 'label' => __( 'Icon Spacing', 'happy_addons' ),
296
  'type' => Controls_Manager::SLIDER,
297
  'default' => [
298
  'size' => 10
@@ -317,7 +317,7 @@ class InfoBox extends Base {
317
  $this->start_controls_section(
318
  '_section_media_style',
319
  [
320
- 'label' => __( 'Icon / Image', 'happy_addons' ),
321
  'tab' => Controls_Manager::TAB_STYLE,
322
  ]
323
  );
@@ -325,7 +325,7 @@ class InfoBox extends Base {
325
  $this->add_responsive_control(
326
  'icon_size',
327
  [
328
- 'label' => __( 'Size', 'happy_addons' ),
329
  'type' => Controls_Manager::SLIDER,
330
  'size_units' => [ 'px' ],
331
  'range' => [
@@ -346,7 +346,7 @@ class InfoBox extends Base {
346
  $this->add_responsive_control(
347
  'image_width',
348
  [
349
- 'label' => __( 'Width', 'happy_addons' ),
350
  'type' => Controls_Manager::SLIDER,
351
  'size_units' => [ 'px', '%' ],
352
  'range' => [
@@ -371,7 +371,7 @@ class InfoBox extends Base {
371
  $this->add_responsive_control(
372
  'image_height',
373
  [
374
- 'label' => __( 'Height', 'happy_addons' ),
375
  'type' => Controls_Manager::SLIDER,
376
  'size_units' => [ 'px' ],
377
  'range' => [
@@ -405,7 +405,7 @@ class InfoBox extends Base {
405
  $this->add_responsive_control(
406
  'media_offset_x',
407
  [
408
- 'label' => __( 'Offset Left', 'happy_addons' ),
409
  'type' => Controls_Manager::SLIDER,
410
  'size_units' => ['px'],
411
  'condition' => [
@@ -424,7 +424,7 @@ class InfoBox extends Base {
424
  $this->add_responsive_control(
425
  'media_offset_y',
426
  [
427
- 'label' => __( 'Offset Top', 'happy_addons' ),
428
  'type' => Controls_Manager::SLIDER,
429
  'size_units' => ['px'],
430
  'condition' => [
@@ -451,7 +451,7 @@ class InfoBox extends Base {
451
  $this->add_responsive_control(
452
  'media_spacing',
453
  [
454
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
455
  'type' => Controls_Manager::SLIDER,
456
  'size_units' => ['px'],
457
  'selectors' => [
@@ -463,7 +463,7 @@ class InfoBox extends Base {
463
  $this->add_responsive_control(
464
  'media_padding',
465
  [
466
- 'label' => __( 'Padding', 'happy_addons' ),
467
  'type' => Controls_Manager::SLIDER,
468
  'size_units' => ['px'],
469
  'selectors' => [
@@ -483,7 +483,7 @@ class InfoBox extends Base {
483
  $this->add_responsive_control(
484
  'media_border_radius',
485
  [
486
- 'label' => __( 'Border Radius', 'happy_addons' ),
487
  'type' => Controls_Manager::DIMENSIONS,
488
  'size_units' => [ 'px', '%' ],
489
  'selectors' => [
@@ -507,7 +507,7 @@ class InfoBox extends Base {
507
  $this->add_control(
508
  'icon_color',
509
  [
510
- 'label' => __( 'Color', 'happy_addons' ),
511
  'type' => Controls_Manager::COLOR,
512
  'selectors' => [
513
  '{{WRAPPER}} .ha-infobox-figure--icon' => 'color: {{VALUE}}',
@@ -521,7 +521,7 @@ class InfoBox extends Base {
521
  $this->add_control(
522
  'icon_bg_color',
523
  [
524
- 'label' => __( 'Background Color', 'happy_addons' ),
525
  'type' => Controls_Manager::COLOR,
526
  'selectors' => [
527
  '{{WRAPPER}} .ha-infobox-figure--icon' => 'background-color: {{VALUE}}',
@@ -535,7 +535,7 @@ class InfoBox extends Base {
535
  $this->add_control(
536
  'icon_bg_rotate',
537
  [
538
- 'label' => __( 'Background Rotate', 'happy_addons' ),
539
  'type' => Controls_Manager::SLIDER,
540
  'size_units' => [ 'deg' ],
541
  'default' => [
@@ -563,7 +563,7 @@ class InfoBox extends Base {
563
  $this->start_controls_section(
564
  '_section_title_style',
565
  [
566
- 'label' => __( 'Title & Description', 'happy_addons' ),
567
  'tab' => Controls_Manager::TAB_STYLE,
568
  ]
569
  );
@@ -571,7 +571,7 @@ class InfoBox extends Base {
571
  $this->add_responsive_control(
572
  'content_padding',
573
  [
574
- 'label' => __( 'Content Box Padding', 'happy_addons' ),
575
  'type' => Controls_Manager::DIMENSIONS,
576
  'size_units' => [ 'px', 'em', '%' ],
577
  'selectors' => [
@@ -584,7 +584,7 @@ class InfoBox extends Base {
584
  'title_heading',
585
  [
586
  'type' => Controls_Manager::HEADING,
587
- 'label' => __( 'Title', 'happy_addons' ),
588
  'separator' => 'before'
589
  ]
590
  );
@@ -592,7 +592,7 @@ class InfoBox extends Base {
592
  $this->add_responsive_control(
593
  'title_spacing',
594
  [
595
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
596
  'type' => Controls_Manager::SLIDER,
597
  'size_units' => ['px'],
598
  'selectors' => [
@@ -604,7 +604,7 @@ class InfoBox extends Base {
604
  $this->add_control(
605
  'title_color',
606
  [
607
- 'label' => __( 'Text Color', 'happy_addons' ),
608
  'type' => Controls_Manager::COLOR,
609
  'selectors' => [
610
  '{{WRAPPER}} .ha-infobox-title' => 'color: {{VALUE}}',
@@ -616,7 +616,7 @@ class InfoBox extends Base {
616
  Group_Control_Typography::get_type(),
617
  [
618
  'name' => 'title_typography',
619
- 'label' => __( 'Typography', 'happy_addons' ),
620
  'selector' => '{{WRAPPER}} .ha-infobox-title',
621
  'scheme' => Scheme_Typography::TYPOGRAPHY_2
622
  ]
@@ -626,7 +626,7 @@ class InfoBox extends Base {
626
  'description_heading',
627
  [
628
  'type' => Controls_Manager::HEADING,
629
- 'label' => __( 'Description', 'happy_addons' ),
630
  'separator' => 'before'
631
  ]
632
  );
@@ -634,7 +634,7 @@ class InfoBox extends Base {
634
  $this->add_responsive_control(
635
  'description_spacing',
636
  [
637
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
638
  'type' => Controls_Manager::SLIDER,
639
  'size_units' => ['px'],
640
  'selectors' => [
@@ -646,7 +646,7 @@ class InfoBox extends Base {
646
  $this->add_control(
647
  'description_color',
648
  [
649
- 'label' => __( 'Text Color', 'happy_addons' ),
650
  'type' => Controls_Manager::COLOR,
651
  'selectors' => [
652
  '{{WRAPPER}} .ha-infobox-text' => 'color: {{VALUE}}',
@@ -658,7 +658,7 @@ class InfoBox extends Base {
658
  Group_Control_Typography::get_type(),
659
  [
660
  'name' => 'description_typography',
661
- 'label' => __( 'Typography', 'happy_addons' ),
662
  'selector' => '{{WRAPPER}} .ha-infobox-text',
663
  'scheme' => Scheme_Typography::TYPOGRAPHY_3,
664
  ]
@@ -669,7 +669,7 @@ class InfoBox extends Base {
669
  $this->start_controls_section(
670
  '_section_style_button',
671
  [
672
- 'label' => __( 'Button', 'happy_addons' ),
673
  'tab' => Controls_Manager::TAB_STYLE,
674
  ]
675
  );
@@ -677,7 +677,7 @@ class InfoBox extends Base {
677
  $this->add_responsive_control(
678
  'link_padding',
679
  [
680
- 'label' => __( 'Padding', 'happy_addons' ),
681
  'type' => Controls_Manager::DIMENSIONS,
682
  'size_units' => [ 'px', 'em', '%' ],
683
  'selectors' => [
@@ -706,7 +706,7 @@ class InfoBox extends Base {
706
  $this->add_control(
707
  'button_border_radius',
708
  [
709
- 'label' => __( 'Border Radius', 'happy_addons' ),
710
  'type' => Controls_Manager::DIMENSIONS,
711
  'size_units' => [ 'px', '%' ],
712
  'selectors' => [
@@ -736,14 +736,14 @@ class InfoBox extends Base {
736
  $this->start_controls_tab(
737
  '_tab_button_normal',
738
  [
739
- 'label' => __( 'Normal', 'happy_addons' ),
740
  ]
741
  );
742
 
743
  $this->add_control(
744
  'link_color',
745
  [
746
- 'label' => __( 'Text Color', 'happy_addons' ),
747
  'type' => Controls_Manager::COLOR,
748
  'default' => '',
749
  'selectors' => [
@@ -755,7 +755,7 @@ class InfoBox extends Base {
755
  $this->add_control(
756
  'button_bg_color',
757
  [
758
- 'label' => __( 'Background Color', 'happy_addons' ),
759
  'type' => Controls_Manager::COLOR,
760
  'selectors' => [
761
  '{{WRAPPER}} .ha-btn' => 'background-color: {{VALUE}};',
@@ -766,7 +766,7 @@ class InfoBox extends Base {
766
  $this->add_control(
767
  'button_icon_translate',
768
  [
769
- 'label' => __( 'Icon Translate X', 'happy_addons' ),
770
  'type' => Controls_Manager::SLIDER,
771
  'range' => [
772
  'px' => [
@@ -786,14 +786,14 @@ class InfoBox extends Base {
786
  $this->start_controls_tab(
787
  '_tab_button_hover',
788
  [
789
- 'label' => __( 'Hover', 'happy_addons' ),
790
  ]
791
  );
792
 
793
  $this->add_control(
794
  'link_hover_color',
795
  [
796
- 'label' => __( 'Text Color', 'happy_addons' ),
797
  'type' => Controls_Manager::COLOR,
798
  'selectors' => [
799
  '{{WRAPPER}} .ha-btn:hover, {{WRAPPER}} .ha-btn:focus' => 'color: {{VALUE}};',
@@ -804,7 +804,7 @@ class InfoBox extends Base {
804
  $this->add_control(
805
  'button_hover_bg_color',
806
  [
807
- 'label' => __( 'Background Color', 'happy_addons' ),
808
  'type' => Controls_Manager::COLOR,
809
  'selectors' => [
810
  '{{WRAPPER}} .ha-btn:hover, {{WRAPPER}} .ha-btn:focus' => 'background-color: {{VALUE}};',
@@ -815,7 +815,7 @@ class InfoBox extends Base {
815
  $this->add_control(
816
  'button_hover_border_color',
817
  [
818
- 'label' => __( 'Border Color', 'happy_addons' ),
819
  'type' => Controls_Manager::COLOR,
820
  'condition' => [
821
  'button_border_border!' => '',
@@ -829,7 +829,7 @@ class InfoBox extends Base {
829
  $this->add_control(
830
  'button_hover_icon_translate',
831
  [
832
- 'label' => __( 'Icon Translate X', 'happy_addons' ),
833
  'type' => Controls_Manager::SLIDER,
834
  'default' => [
835
  'size' => 10
28
  * @return string Widget title.
29
  */
30
  public function get_title() {
31
+ return __( 'Info Box', 'happy-elementor-addons' );
32
  }
33
 
34
  /**
54
  $this->start_controls_section(
55
  '_section_media',
56
  [
57
+ 'label' => __( 'Icon / Image', 'happy-elementor-addons' ),
58
  'tab' => Controls_Manager::TAB_CONTENT,
59
  ]
60
  );
62
  $this->add_control(
63
  'type',
64
  [
65
+ 'label' => __( 'Media Type', 'happy-elementor-addons' ),
66
  'type' => Controls_Manager::CHOOSE,
67
  'label_block' => false,
68
  'options' => [
69
  'icon' => [
70
+ 'title' => __( 'Icon', 'happy-elementor-addons' ),
71
  'icon' => 'fa fa-smile-o',
72
  ],
73
  'image' => [
74
+ 'title' => __( 'Image', 'happy-elementor-addons' ),
75
  'icon' => 'fa fa-image',
76
  ],
77
  ],
83
  $this->add_control(
84
  'image',
85
  [
86
+ 'label' => __( 'Image', 'happy-elementor-addons' ),
87
  'type' => Controls_Manager::MEDIA,
88
  'default' => [
89
  'url' => Utils::get_placeholder_image_src(),
117
  $this->add_control(
118
  'icon',
119
  [
120
+ 'label' => __( 'Icon', 'happy-elementor-addons' ),
121
  'type' => Controls_Manager::ICON,
122
  'default' => 'fa fa-smile-o',
123
  'options' => ha_get_happy_icons(),
132
  $this->start_controls_section(
133
  '_section_title',
134
  [
135
+ 'label' => __( 'Title & Description', 'happy-elementor-addons' ),
136
  'tab' => Controls_Manager::TAB_CONTENT,
137
  ]
138
  );
140
  $this->add_control(
141
  'title',
142
  [
143
+ 'label' => __( 'Title', 'happy-elementor-addons' ),
144
  'label_block' => true,
145
  'type' => Controls_Manager::TEXT,
146
+ 'default' => __( 'Happy Info Box Title', 'happy-elementor-addons' ),
147
+ 'placeholder' => __( 'Type Info Box Title', 'happy-elementor-addons' ),
148
  ]
149
  );
150
 
151
  $this->add_control(
152
  'description',
153
  [
154
+ 'label' => __( 'Description', 'happy-elementor-addons' ),
155
  'type' => Controls_Manager::TEXTAREA,
156
+ 'default' => __( 'Happy info box description goes here', 'happy-elementor-addons' ),
157
+ 'placeholder' => __( 'Type info box description', 'happy-elementor-addons' ),
158
  'rows' => 5
159
  ]
160
  );
162
  $this->add_control(
163
  'title_tag',
164
  [
165
+ 'label' => __( 'Title HTML Tag', 'happy-elementor-addons' ),
166
  'type' => Controls_Manager::CHOOSE,
167
  'options' => [
168
  'h1' => [
169
+ 'title' => __( 'H1', 'happy-elementor-addons' ),
170
  'icon' => 'eicon-editor-h1'
171
  ],
172
  'h2' => [
173
+ 'title' => __( 'H2', 'happy-elementor-addons' ),
174
  'icon' => 'eicon-editor-h2'
175
  ],
176
  'h3' => [
177
+ 'title' => __( 'H3', 'happy-elementor-addons' ),
178
  'icon' => 'eicon-editor-h3'
179
  ],
180
  'h4' => [
181
+ 'title' => __( 'H4', 'happy-elementor-addons' ),
182
  'icon' => 'eicon-editor-h4'
183
  ],
184
  'h5' => [
185
+ 'title' => __( 'H5', 'happy-elementor-addons' ),
186
  'icon' => 'eicon-editor-h5'
187
  ],
188
  'h6' => [
189
+ 'title' => __( 'H6', 'happy-elementor-addons' ),
190
  'icon' => 'eicon-editor-h6'
191
  ]
192
  ],
198
  $this->add_responsive_control(
199
  'align',
200
  [
201
+ 'label' => __( 'Alignment', 'happy-elementor-addons' ),
202
  'type' => Controls_Manager::CHOOSE,
203
  'options' => [
204
  'left' => [
205
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
206
  'icon' => 'fa fa-align-left',
207
  ],
208
  'center' => [
209
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
210
  'icon' => 'fa fa-align-center',
211
  ],
212
  'right' => [
213
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
214
  'icon' => 'fa fa-align-right',
215
  ],
216
  'justify' => [
217
+ 'title' => __( 'Justify', 'happy-elementor-addons' ),
218
  'icon' => 'fa fa-align-justify',
219
  ],
220
  ],
230
  $this->start_controls_section(
231
  '_section_button',
232
  [
233
+ 'label' => __( 'Button', 'happy-elementor-addons' ),
234
  'tab' => Controls_Manager::TAB_CONTENT,
235
  ]
236
  );
238
  $this->add_control(
239
  'button_text',
240
  [
241
+ 'label' => __( 'Text', 'happy-elementor-addons' ),
242
  'type' => Controls_Manager::TEXT,
243
+ 'default' => __( 'Button Text', 'happy-elementor-addons' ),
244
+ 'placeholder' => __( 'Type button text here', 'happy-elementor-addons' ),
245
  'label_block' => true,
246
  ]
247
  );
249
  $this->add_control(
250
  'button_link',
251
  [
252
+ 'label' => __( 'Link', 'happy-elementor-addons' ),
253
  'type' => Controls_Manager::URL,
254
+ 'placeholder' => __( 'https://example.com/', 'happy-elementor-addons' ),
255
  ]
256
  );
257
 
258
  $this->add_control(
259
  'button_icon',
260
  [
261
+ 'label' => __( 'Icon', 'happy-elementor-addons' ),
262
  'type' => Controls_Manager::ICON,
263
  'options' => ha_get_happy_icons(),
264
  'default' => 'fa fa-angle-right'
268
  $this->add_control(
269
  'button_icon_position',
270
  [
271
+ 'label' => __( 'Icon Position', 'happy-elementor-addons' ),
272
  'type' => Controls_Manager::CHOOSE,
273
  'label_block' => false,
274
  'options' => [
275
  'before' => [
276
+ 'title' => __( 'Before', 'happy-elementor-addons' ),
277
  'icon' => 'eicon-h-align-left',
278
  ],
279
  'after' => [
280
+ 'title' => __( 'After', 'happy-elementor-addons' ),
281
  'icon' => 'eicon-h-align-right',
282
  ],
283
  ],
292
  $this->add_control(
293
  'button_icon_spacing',
294
  [
295
+ 'label' => __( 'Icon Spacing', 'happy-elementor-addons' ),
296
  'type' => Controls_Manager::SLIDER,
297
  'default' => [
298
  'size' => 10
317
  $this->start_controls_section(
318
  '_section_media_style',
319
  [
320
+ 'label' => __( 'Icon / Image', 'happy-elementor-addons' ),
321
  'tab' => Controls_Manager::TAB_STYLE,
322
  ]
323
  );
325
  $this->add_responsive_control(
326
  'icon_size',
327
  [
328
+ 'label' => __( 'Size', 'happy-elementor-addons' ),
329
  'type' => Controls_Manager::SLIDER,
330
  'size_units' => [ 'px' ],
331
  'range' => [
346
  $this->add_responsive_control(
347
  'image_width',
348
  [
349
+ 'label' => __( 'Width', 'happy-elementor-addons' ),
350
  'type' => Controls_Manager::SLIDER,
351
  'size_units' => [ 'px', '%' ],
352
  'range' => [
371
  $this->add_responsive_control(
372
  'image_height',
373
  [
374
+ 'label' => __( 'Height', 'happy-elementor-addons' ),
375
  'type' => Controls_Manager::SLIDER,
376
  'size_units' => [ 'px' ],
377
  'range' => [
405
  $this->add_responsive_control(
406
  'media_offset_x',
407
  [
408
+ 'label' => __( 'Offset Left', 'happy-elementor-addons' ),
409
  'type' => Controls_Manager::SLIDER,
410
  'size_units' => ['px'],
411
  'condition' => [
424
  $this->add_responsive_control(
425
  'media_offset_y',
426
  [
427
+ 'label' => __( 'Offset Top', 'happy-elementor-addons' ),
428
  'type' => Controls_Manager::SLIDER,
429
  'size_units' => ['px'],
430
  'condition' => [
451
  $this->add_responsive_control(
452
  'media_spacing',
453
  [
454
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
455
  'type' => Controls_Manager::SLIDER,
456
  'size_units' => ['px'],
457
  'selectors' => [
463
  $this->add_responsive_control(
464
  'media_padding',
465
  [
466
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
467
  'type' => Controls_Manager::SLIDER,
468
  'size_units' => ['px'],
469
  'selectors' => [
483
  $this->add_responsive_control(
484
  'media_border_radius',
485
  [
486
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
487
  'type' => Controls_Manager::DIMENSIONS,
488
  'size_units' => [ 'px', '%' ],
489
  'selectors' => [
507
  $this->add_control(
508
  'icon_color',
509
  [
510
+ 'label' => __( 'Color', 'happy-elementor-addons' ),
511
  'type' => Controls_Manager::COLOR,
512
  'selectors' => [
513
  '{{WRAPPER}} .ha-infobox-figure--icon' => 'color: {{VALUE}}',
521
  $this->add_control(
522
  'icon_bg_color',
523
  [
524
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
525
  'type' => Controls_Manager::COLOR,
526
  'selectors' => [
527
  '{{WRAPPER}} .ha-infobox-figure--icon' => 'background-color: {{VALUE}}',
535
  $this->add_control(
536
  'icon_bg_rotate',
537
  [
538
+ 'label' => __( 'Background Rotate', 'happy-elementor-addons' ),
539
  'type' => Controls_Manager::SLIDER,
540
  'size_units' => [ 'deg' ],
541
  'default' => [
563
  $this->start_controls_section(
564
  '_section_title_style',
565
  [
566
+ 'label' => __( 'Title & Description', 'happy-elementor-addons' ),
567
  'tab' => Controls_Manager::TAB_STYLE,
568
  ]
569
  );
571
  $this->add_responsive_control(
572
  'content_padding',
573
  [
574
+ 'label' => __( 'Content Box Padding', 'happy-elementor-addons' ),
575
  'type' => Controls_Manager::DIMENSIONS,
576
  'size_units' => [ 'px', 'em', '%' ],
577
  'selectors' => [
584
  'title_heading',
585
  [
586
  'type' => Controls_Manager::HEADING,
587
+ 'label' => __( 'Title', 'happy-elementor-addons' ),
588
  'separator' => 'before'
589
  ]
590
  );
592
  $this->add_responsive_control(
593
  'title_spacing',
594
  [
595
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
596
  'type' => Controls_Manager::SLIDER,
597
  'size_units' => ['px'],
598
  'selectors' => [
604
  $this->add_control(
605
  'title_color',
606
  [
607
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
608
  'type' => Controls_Manager::COLOR,
609
  'selectors' => [
610
  '{{WRAPPER}} .ha-infobox-title' => 'color: {{VALUE}}',
616
  Group_Control_Typography::get_type(),
617
  [
618
  'name' => 'title_typography',
619
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
620
  'selector' => '{{WRAPPER}} .ha-infobox-title',
621
  'scheme' => Scheme_Typography::TYPOGRAPHY_2
622
  ]
626
  'description_heading',
627
  [
628
  'type' => Controls_Manager::HEADING,
629
+ 'label' => __( 'Description', 'happy-elementor-addons' ),
630
  'separator' => 'before'
631
  ]
632
  );
634
  $this->add_responsive_control(
635
  'description_spacing',
636
  [
637
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
638
  'type' => Controls_Manager::SLIDER,
639
  'size_units' => ['px'],
640
  'selectors' => [
646
  $this->add_control(
647
  'description_color',
648
  [
649
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
650
  'type' => Controls_Manager::COLOR,
651
  'selectors' => [
652
  '{{WRAPPER}} .ha-infobox-text' => 'color: {{VALUE}}',
658
  Group_Control_Typography::get_type(),
659
  [
660
  'name' => 'description_typography',
661
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
662
  'selector' => '{{WRAPPER}} .ha-infobox-text',
663
  'scheme' => Scheme_Typography::TYPOGRAPHY_3,
664
  ]
669
  $this->start_controls_section(
670
  '_section_style_button',
671
  [
672
+ 'label' => __( 'Button', 'happy-elementor-addons' ),
673
  'tab' => Controls_Manager::TAB_STYLE,
674
  ]
675
  );
677
  $this->add_responsive_control(
678
  'link_padding',
679
  [
680
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
681
  'type' => Controls_Manager::DIMENSIONS,
682
  'size_units' => [ 'px', 'em', '%' ],
683
  'selectors' => [
706
  $this->add_control(
707
  'button_border_radius',
708
  [
709
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
710
  'type' => Controls_Manager::DIMENSIONS,
711
  'size_units' => [ 'px', '%' ],
712
  'selectors' => [
736
  $this->start_controls_tab(
737
  '_tab_button_normal',
738
  [
739
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
740
  ]
741
  );
742
 
743
  $this->add_control(
744
  'link_color',
745
  [
746
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
747
  'type' => Controls_Manager::COLOR,
748
  'default' => '',
749
  'selectors' => [
755
  $this->add_control(
756
  'button_bg_color',
757
  [
758
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
759
  'type' => Controls_Manager::COLOR,
760
  'selectors' => [
761
  '{{WRAPPER}} .ha-btn' => 'background-color: {{VALUE}};',
766
  $this->add_control(
767
  'button_icon_translate',
768
  [
769
+ 'label' => __( 'Icon Translate X', 'happy-elementor-addons' ),
770
  'type' => Controls_Manager::SLIDER,
771
  'range' => [
772
  'px' => [
786
  $this->start_controls_tab(
787
  '_tab_button_hover',
788
  [
789
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
790
  ]
791
  );
792
 
793
  $this->add_control(
794
  'link_hover_color',
795
  [
796
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
797
  'type' => Controls_Manager::COLOR,
798
  'selectors' => [
799
  '{{WRAPPER}} .ha-btn:hover, {{WRAPPER}} .ha-btn:focus' => 'color: {{VALUE}};',
804
  $this->add_control(
805
  'button_hover_bg_color',
806
  [
807
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
808
  'type' => Controls_Manager::COLOR,
809
  'selectors' => [
810
  '{{WRAPPER}} .ha-btn:hover, {{WRAPPER}} .ha-btn:focus' => 'background-color: {{VALUE}};',
815
  $this->add_control(
816
  'button_hover_border_color',
817
  [
818
+ 'label' => __( 'Border Color', 'happy-elementor-addons' ),
819
  'type' => Controls_Manager::COLOR,
820
  'condition' => [
821
  'button_border_border!' => '',
829
  $this->add_control(
830
  'button_hover_icon_translate',
831
  [
832
+ 'label' => __( 'Icon Translate X', 'happy-elementor-addons' ),
833
  'type' => Controls_Manager::SLIDER,
834
  'default' => [
835
  'size' => 10
widgets/member/widget.php CHANGED
@@ -30,7 +30,7 @@ class Member extends Base {
30
  * @return string Widget title.
31
  */
32
  public function get_title() {
33
- return __( 'Team Member', 'happy_addons' );
34
  }
35
 
36
  /**
@@ -51,45 +51,45 @@ class Member extends Base {
51
 
52
  protected static function get_profile_names() {
53
  return [
54
- '500px' => __( '500px', 'happy_addons' ),
55
- 'apple' => __( 'Apple', 'happy_addons' ),
56
- 'behance' => __( 'Behance', 'happy_addons' ),
57
- 'bitbucket' => __( 'BitBucket', 'happy_addons' ),
58
- 'codepen' => __( 'CodePen', 'happy_addons' ),
59
- 'delicious' => __( 'Delicious', 'happy_addons' ),
60
- 'deviantart' => __( 'DeviantArt', 'happy_addons' ),
61
- 'digg' => __( 'Digg', 'happy_addons' ),
62
- 'dribbble' => __( 'Dribbble', 'happy_addons' ),
63
- 'email' => __( 'Email', 'happy_addons' ),
64
- 'facebook' => __( 'Facebook', 'happy_addons' ),
65
- 'flickr' => __( 'Flicker', 'happy_addons' ),
66
- 'foursquare' => __( 'FourSquare', 'happy_addons' ),
67
- 'github' => __( 'Github', 'happy_addons' ),
68
- 'houzz' => __( 'Houzz', 'happy_addons' ),
69
- 'instagram' => __( 'Instagram', 'happy_addons' ),
70
- 'jsfiddle' => __( 'JS Fiddle', 'happy_addons' ),
71
- 'linkedin' => __( 'LinkedIn', 'happy_addons' ),
72
- 'medium' => __( 'Medium', 'happy_addons' ),
73
- 'pinterest' => __( 'Pinterest', 'happy_addons' ),
74
- 'product-hunt' => __( 'Product Hunt', 'happy_addons' ),
75
- 'reddit' => __( 'Reddit', 'happy_addons' ),
76
- 'slideshare' => __( 'Slide Share', 'happy_addons' ),
77
- 'snapchat' => __( 'Snapchat', 'happy_addons' ),
78
- 'soundcloud' => __( 'SoundCloud', 'happy_addons' ),
79
- 'spotify' => __( 'Spotify', 'happy_addons' ),
80
- 'stack-overflow' => __( 'StackOverflow', 'happy_addons' ),
81
- 'tripadvisor' => __( 'TripAdvisor', 'happy_addons' ),
82
- 'tumblr' => __( 'Tumblr', 'happy_addons' ),
83
- 'twitch' => __( 'Twitch', 'happy_addons' ),
84
- 'twitter' => __( 'Twitter', 'happy_addons' ),
85
- 'vimeo' => __( 'Vimeo', 'happy_addons' ),
86
- 'vk' => __( 'VK', 'happy_addons' ),
87
- 'website' => __( 'Website', 'happy_addons' ),
88
- 'whatsapp' => __( 'WhatsApp', 'happy_addons' ),
89
- 'wordpress' => __( 'WordPress', 'happy_addons' ),
90
- 'xing' => __( 'Xing', 'happy_addons' ),
91
- 'yelp' => __( 'Yelp', 'happy_addons' ),
92
- 'youtube' => __( 'YouTube', 'happy_addons' ),
93
  ];
94
  }
95
 
@@ -100,7 +100,7 @@ class Member extends Base {
100
  $this->start_controls_section(
101
  '_section_info',
102
  [
103
- 'label' => __( 'Information', 'happy_addons' ),
104
  'tab' => Controls_Manager::TAB_CONTENT,
105
  ]
106
  );
@@ -108,7 +108,7 @@ class Member extends Base {
108
  $this->add_control(
109
  'image',
110
  [
111
- 'label' => __( 'Photo', 'happy_addons' ),
112
  'type' => Controls_Manager::MEDIA,
113
  'default' => [
114
  'url' => Utils::get_placeholder_image_src(),
@@ -128,31 +128,31 @@ class Member extends Base {
128
  $this->add_control(
129
  'title',
130
  [
131
- 'label' => __( 'Name', 'happy_addons' ),
132
  'label_block' => true,
133
  'type' => Controls_Manager::TEXT,
134
- 'default' => __( 'Happy Member Name', 'happy_addons' ),
135
- 'placeholder' => __( 'Type Member Name', 'happy_addons' ),
136
  ]
137
  );
138
 
139
  $this->add_control(
140
  'job_title',
141
  [
142
- 'label' => __( 'Job Title', 'happy_addons' ),
143
  'label_block' => true,
144
  'type' => Controls_Manager::TEXT,
145
- 'default' => __( 'Happy Officer', 'happy_addons' ),
146
- 'placeholder' => __( 'Type Member Job Title', 'happy_addons' ),
147
  ]
148
  );
149
 
150
  $this->add_control(
151
  'bio',
152
  [
153
- 'label' => __( 'Short Bio', 'happy_addons' ),
154
  'type' => Controls_Manager::TEXTAREA,
155
- 'placeholder' => __( 'Write something amazing about the happy member', 'happy_addons' ),
156
  'rows' => 5
157
  ]
158
  );
@@ -160,31 +160,31 @@ class Member extends Base {
160
  $this->add_control(
161
  'title_tag',
162
  [
163
- 'label' => __( 'Title HTML Tag', 'happy_addons' ),
164
  'type' => Controls_Manager::CHOOSE,
165
  'options' => [
166
  'h1' => [
167
- 'title' => __( 'H1', 'happy_addons' ),
168
  'icon' => 'eicon-editor-h1'
169
  ],
170
  'h2' => [
171
- 'title' => __( 'H2', 'happy_addons' ),
172
  'icon' => 'eicon-editor-h2'
173
  ],
174
  'h3' => [
175
- 'title' => __( 'H3', 'happy_addons' ),
176
  'icon' => 'eicon-editor-h3'
177
  ],
178
  'h4' => [
179
- 'title' => __( 'H4', 'happy_addons' ),
180
  'icon' => 'eicon-editor-h4'
181
  ],
182
  'h5' => [
183
- 'title' => __( 'H5', 'happy_addons' ),
184
  'icon' => 'eicon-editor-h5'
185
  ],
186
  'h6' => [
187
- 'title' => __( 'H6', 'happy_addons' ),
188
  'icon' => 'eicon-editor-h6'
189
  ]
190
  ],
@@ -196,23 +196,23 @@ class Member extends Base {
196
  $this->add_responsive_control(
197
  'align',
198
  [
199
- 'label' => __( 'Alignment', 'happy_addons' ),
200
  'type' => Controls_Manager::CHOOSE,
201
  'options' => [
202
  'left' => [
203
- 'title' => __( 'Left', 'happy_addons' ),
204
  'icon' => 'fa fa-align-left',
205
  ],
206
  'center' => [
207
- 'title' => __( 'Center', 'happy_addons' ),
208
  'icon' => 'fa fa-align-center',
209
  ],
210
  'right' => [
211
- 'title' => __( 'Right', 'happy_addons' ),
212
  'icon' => 'fa fa-align-right',
213
  ],
214
  'justify' => [
215
- 'title' => __( 'Justify', 'happy_addons' ),
216
  'icon' => 'fa fa-align-justify',
217
  ],
218
  ],
@@ -228,7 +228,7 @@ class Member extends Base {
228
  $this->start_controls_section(
229
  '_section_social',
230
  [
231
- 'label' => __( 'Social Profiles', 'happy_addons' ),
232
  'tab' => Controls_Manager::TAB_CONTENT,
233
  ]
234
  );
@@ -238,7 +238,7 @@ class Member extends Base {
238
  $repeater->add_control(
239
  'name',
240
  [
241
- 'label' => __( 'Profile Name', 'happy_addons' ),
242
  'type' => Controls_Manager::SELECT2,
243
  'select2options' => [
244
  'allowClear' => false,
@@ -249,8 +249,8 @@ class Member extends Base {
249
 
250
  $repeater->add_control(
251
  'link', [
252
- 'label' => __( 'Profile Link', 'happy_addons' ),
253
- 'placeholder' => __( 'Add your profile link', 'happy_addons' ),
254
  'type' => Controls_Manager::URL,
255
  'label_block' => false,
256
  'autocomplete' => false,
@@ -263,8 +263,8 @@ class Member extends Base {
263
 
264
  $repeater->add_control(
265
  'email', [
266
- 'label' => __( 'Email Address', 'happy_addons' ),
267
- 'placeholder' => __( 'Add your email address', 'happy_addons' ),
268
  'type' => Controls_Manager::TEXT,
269
  'label_block' => false,
270
  'input_type' => 'email',
@@ -277,10 +277,10 @@ class Member extends Base {
277
  $repeater->add_control(
278
  'customize',
279
  [
280
- 'label' => __( 'Want To Customize?', 'happy_addons' ),
281
  'type' => Controls_Manager::SWITCHER,
282
- 'label_on' => __( 'Yes', 'happy_addons' ),
283
- 'label_off' => __( 'No', 'happy_addons' ),
284
  'return_value' => 'yes',
285
  ]
286
  );
@@ -294,14 +294,14 @@ class Member extends Base {
294
  $repeater->start_controls_tab(
295
  '_tab_icon_normal',
296
  [
297
- 'label' => __( 'Normal', 'happy_addons' ),
298
  ]
299
  );
300
 
301
  $repeater->add_control(
302
  'color',
303
  [
304
- 'label' => __( 'Text Color', 'happy_addons' ),
305
  'type' => Controls_Manager::COLOR,
306
  'selectors' => [
307
  '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}' => 'color: {{VALUE}}',
@@ -313,7 +313,7 @@ class Member extends Base {
313
  $repeater->add_control(
314
  'bg_color',
315
  [
316
- 'label' => __( 'Background Color', 'happy_addons' ),
317
  'type' => Controls_Manager::COLOR,
318
  'selectors' => [
319
  '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}' => 'background-color: {{VALUE}}',
@@ -326,14 +326,14 @@ class Member extends Base {
326
  $repeater->start_controls_tab(
327
  '_tab_icon_hover',
328
  [
329
- 'label' => __( 'Hover', 'happy_addons' ),
330
  ]
331
  );
332
 
333
  $repeater->add_control(
334
  'hover_color',
335
  [
336
- 'label' => __( 'Text Color', 'happy_addons' ),
337
  'type' => Controls_Manager::COLOR,
338
  'selectors' => [
339
  '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:hover, {{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:focus' => 'color: {{VALUE}}',
@@ -345,7 +345,7 @@ class Member extends Base {
345
  $repeater->add_control(
346
  'hover_bg_color',
347
  [
348
- 'label' => __( 'Background Color', 'happy_addons' ),
349
  'type' => Controls_Manager::COLOR,
350
  'selectors' => [
351
  '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:hover, {{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:focus' => 'background-color: {{VALUE}}',
@@ -357,7 +357,7 @@ class Member extends Base {
357
  $repeater->add_control(
358
  'hover_border_color',
359
  [
360
- 'label' => __( 'Border Color', 'happy_addons' ),
361
  'type' => Controls_Manager::COLOR,
362
  'selectors' => [
363
  '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:hover, {{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:focus' => 'border-color: {{VALUE}}',
@@ -415,7 +415,7 @@ class Member extends Base {
415
  $this->start_controls_section(
416
  '_section_style_image',
417
  [
418
- 'label' => __( 'Photo', 'happy_addons' ),
419
  'tab' => Controls_Manager::TAB_STYLE,
420
  ]
421
  );
@@ -423,7 +423,7 @@ class Member extends Base {
423
  $this->add_responsive_control(
424
  'image_width',
425
  [
426
- 'label' => __( 'Width', 'happy_addons' ),
427
  'type' => Controls_Manager::SLIDER,
428
  'size_units' => [ 'px', '%'],
429
  'range' => [
@@ -445,7 +445,7 @@ class Member extends Base {
445
  $this->add_responsive_control(
446
  'image_height',
447
  [
448
- 'label' => __( 'Height', 'happy_addons' ),
449
  'type' => Controls_Manager::SLIDER,
450
  'size_units' => [ 'px' ],
451
  'range' => [
@@ -463,7 +463,7 @@ class Member extends Base {
463
  $this->add_responsive_control(
464
  'image_spacing',
465
  [
466
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
467
  'type' => Controls_Manager::SLIDER,
468
  'size_units' => ['px'],
469
  'selectors' => [
@@ -475,7 +475,7 @@ class Member extends Base {
475
  $this->add_responsive_control(
476
  'image_padding',
477
  [
478
- 'label' => __( 'Padding', 'happy_addons' ),
479
  'type' => Controls_Manager::DIMENSIONS,
480
  'size_units' => [ 'px', 'em', '%' ],
481
  'selectors' => [
@@ -495,7 +495,7 @@ class Member extends Base {
495
  $this->add_responsive_control(
496
  'image_border_radius',
497
  [
498
- 'label' => __( 'Border Radius', 'happy_addons' ),
499
  'type' => Controls_Manager::DIMENSIONS,
500
  'size_units' => [ 'px', '%' ],
501
  'selectors' => [
@@ -518,7 +518,7 @@ class Member extends Base {
518
  $this->add_control(
519
  'image_bg_color',
520
  [
521
- 'label' => __( 'Background Color', 'happy_addons' ),
522
  'type' => Controls_Manager::COLOR,
523
  'selectors' => [
524
  '{{WRAPPER}} .ha-member-figure > img' => 'background-color: {{VALUE}}',
@@ -531,7 +531,7 @@ class Member extends Base {
531
  $this->start_controls_section(
532
  '_section_style_content',
533
  [
534
- 'label' => __( 'Name, Job Title & Bio', 'happy_addons' ),
535
  'tab' => Controls_Manager::TAB_STYLE,
536
  ]
537
  );
@@ -539,7 +539,7 @@ class Member extends Base {
539
  $this->add_responsive_control(
540
  'content_padding',
541
  [
542
- 'label' => __( 'Content Padding', 'happy_addons' ),
543
  'type' => Controls_Manager::DIMENSIONS,
544
  'size_units' => [ 'px', 'em', '%' ],
545
  'selectors' => [
@@ -552,7 +552,7 @@ class Member extends Base {
552
  '_heading_title',
553
  [
554
  'type' => Controls_Manager::HEADING,
555
- 'label' => __( 'Name', 'happy_addons' ),
556
  'separator' => 'before',
557
  ]
558
  );
@@ -560,7 +560,7 @@ class Member extends Base {
560
  $this->add_responsive_control(
561
  'title_spacing',
562
  [
563
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
564
  'type' => Controls_Manager::SLIDER,
565
  'size_units' => ['px'],
566
  'selectors' => [
@@ -572,7 +572,7 @@ class Member extends Base {
572
  $this->add_control(
573
  'title_color',
574
  [
575
- 'label' => __( 'Text Color', 'happy_addons' ),
576
  'type' => Controls_Manager::COLOR,
577
  'selectors' => [
578
  '{{WRAPPER}} .ha-member-name' => 'color: {{VALUE}}',
@@ -601,7 +601,7 @@ class Member extends Base {
601
  '_heading_job_title',
602
  [
603
  'type' => Controls_Manager::HEADING,
604
- 'label' => __( 'Job Title', 'happy_addons' ),
605
  'separator' => 'before'
606
  ]
607
  );
@@ -609,7 +609,7 @@ class Member extends Base {
609
  $this->add_responsive_control(
610
  'job_title_spacing',
611
  [
612
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
613
  'type' => Controls_Manager::SLIDER,
614
  'size_units' => ['px'],
615
  'selectors' => [
@@ -621,7 +621,7 @@ class Member extends Base {
621
  $this->add_control(
622
  'job_title_color',
623
  [
624
- 'label' => __( 'Text Color', 'happy_addons' ),
625
  'type' => Controls_Manager::COLOR,
626
  'selectors' => [
627
  '{{WRAPPER}} .ha-member-position' => 'color: {{VALUE}}',
@@ -650,7 +650,7 @@ class Member extends Base {
650
  '_heading_bio',
651
  [
652
  'type' => Controls_Manager::HEADING,
653
- 'label' => __( 'Short Bio', 'happy_addons' ),
654
  'separator' => 'before'
655
  ]
656
  );
@@ -658,7 +658,7 @@ class Member extends Base {
658
  $this->add_responsive_control(
659
  'bio_spacing',
660
  [
661
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
662
  'type' => Controls_Manager::SLIDER,
663
  'size_units' => ['px'],
664
  'selectors' => [
@@ -670,7 +670,7 @@ class Member extends Base {
670
  $this->add_control(
671
  'bio_color',
672
  [
673
- 'label' => __( 'Text Color', 'happy_addons' ),
674
  'type' => Controls_Manager::COLOR,
675
  'selectors' => [
676
  '{{WRAPPER}} .ha-member-bio' => 'color: {{VALUE}}',
@@ -700,7 +700,7 @@ class Member extends Base {
700
  $this->start_controls_section(
701
  '_section_style_social',
702
  [
703
- 'label' => __( 'Social Icons', 'happy_addons' ),
704
  'tab' => Controls_Manager::TAB_STYLE,
705
  ]
706
  );
@@ -708,7 +708,7 @@ class Member extends Base {
708
  $this->add_responsive_control(
709
  'links_spacing',
710
  [
711
- 'label' => __( 'Right Spacing', 'happy_addons' ),
712
  'type' => Controls_Manager::SLIDER,
713
  'size_units' => ['px'],
714
  'selectors' => [
@@ -720,7 +720,7 @@ class Member extends Base {
720
  $this->add_responsive_control(
721
  'links_padding',
722
  [
723
- 'label' => __( 'Padding', 'happy_addons' ),
724
  'type' => Controls_Manager::SLIDER,
725
  'size_units' => ['px'],
726
  'selectors' => [
@@ -732,7 +732,7 @@ class Member extends Base {
732
  $this->add_responsive_control(
733
  'links_icon_size',
734
  [
735
- 'label' => __( 'Icon Size', 'happy_addons' ),
736
  'type' => Controls_Manager::SLIDER,
737
  'size_units' => ['px'],
738
  'selectors' => [
@@ -752,7 +752,7 @@ class Member extends Base {
752
  $this->add_responsive_control(
753
  'links_border_radius',
754
  [
755
- 'label' => __( 'Border Radius', 'happy_addons' ),
756
  'type' => Controls_Manager::DIMENSIONS,
757
  'size_units' => [ 'px', '%' ],
758
  'selectors' => [
@@ -765,14 +765,14 @@ class Member extends Base {
765
  $this->start_controls_tab(
766
  '_tab_links_normal',
767
  [
768
- 'label' => __( 'Normal', 'happy_addons' ),
769
  ]
770
  );
771
 
772
  $this->add_control(
773
  'links_color',
774
  [
775
- 'label' => __( 'Text Color', 'happy_addons' ),
776
  'type' => Controls_Manager::COLOR,
777
  'selectors' => [
778
  '{{WRAPPER}} .ha-member-links > a' => 'color: {{VALUE}}',
@@ -783,7 +783,7 @@ class Member extends Base {
783
  $this->add_control(
784
  'links_bg_color',
785
  [
786
- 'label' => __( 'Background Color', 'happy_addons' ),
787
  'type' => Controls_Manager::COLOR,
788
  'selectors' => [
789
  '{{WRAPPER}} .ha-member-links > a' => 'background-color: {{VALUE}}',
@@ -795,14 +795,14 @@ class Member extends Base {
795
  $this->start_controls_tab(
796
  '_tab_links_hover',
797
  [
798
- 'label' => __( 'Hover', 'happy_addons' ),
799
  ]
800
  );
801
 
802
  $this->add_control(
803
  'links_hover_color',
804
  [
805
- 'label' => __( 'Text Color', 'happy_addons' ),
806
  'type' => Controls_Manager::COLOR,
807
  'selectors' => [
808
  '{{WRAPPER}} .ha-member-links > a:hover, {{WRAPPER}} .ha-member-links > a:focus' => 'color: {{VALUE}}',
@@ -813,7 +813,7 @@ class Member extends Base {
813
  $this->add_control(
814
  'links_hover_bg_color',
815
  [
816
- 'label' => __( 'Background Color', 'happy_addons' ),
817
  'type' => Controls_Manager::COLOR,
818
  'selectors' => [
819
  '{{WRAPPER}} .ha-member-links > a:hover, {{WRAPPER}} .ha-member-links > a:focus' => 'background-color: {{VALUE}}',
@@ -824,7 +824,7 @@ class Member extends Base {
824
  $this->add_control(
825
  'links_hover_border_color',
826
  [
827
- 'label' => __( 'Border Color', 'happy_addons' ),
828
  'type' => Controls_Manager::COLOR,
829
  'selectors' => [
830
  '{{WRAPPER}} .ha-member-links > a:hover, {{WRAPPER}} .ha-member-links > a:focus' => 'border-color: {{VALUE}};',
30
  * @return string Widget title.
31
  */
32
  public function get_title() {
33
+ return __( 'Team Member', 'happy-elementor-addons' );
34
  }
35
 
36
  /**
51
 
52
  protected static function get_profile_names() {
53
  return [
54
+ '500px' => __( '500px', 'happy-elementor-addons' ),
55
+ 'apple' => __( 'Apple', 'happy-elementor-addons' ),
56
+ 'behance' => __( 'Behance', 'happy-elementor-addons' ),
57
+ 'bitbucket' => __( 'BitBucket', 'happy-elementor-addons' ),
58
+ 'codepen' => __( 'CodePen', 'happy-elementor-addons' ),
59
+ 'delicious' => __( 'Delicious', 'happy-elementor-addons' ),
60
+ 'deviantart' => __( 'DeviantArt', 'happy-elementor-addons' ),
61
+ 'digg' => __( 'Digg', 'happy-elementor-addons' ),
62
+ 'dribbble' => __( 'Dribbble', 'happy-elementor-addons' ),
63
+ 'email' => __( 'Email', 'happy-elementor-addons' ),
64
+ 'facebook' => __( 'Facebook', 'happy-elementor-addons' ),
65
+ 'flickr' => __( 'Flicker', 'happy-elementor-addons' ),
66
+ 'foursquare' => __( 'FourSquare', 'happy-elementor-addons' ),
67
+ 'github' => __( 'Github', 'happy-elementor-addons' ),
68
+ 'houzz' => __( 'Houzz', 'happy-elementor-addons' ),
69
+ 'instagram' => __( 'Instagram', 'happy-elementor-addons' ),
70
+ 'jsfiddle' => __( 'JS Fiddle', 'happy-elementor-addons' ),
71
+ 'linkedin' => __( 'LinkedIn', 'happy-elementor-addons' ),
72
+ 'medium' => __( 'Medium', 'happy-elementor-addons' ),
73
+ 'pinterest' => __( 'Pinterest', 'happy-elementor-addons' ),
74
+ 'product-hunt' => __( 'Product Hunt', 'happy-elementor-addons' ),
75
+ 'reddit' => __( 'Reddit', 'happy-elementor-addons' ),
76
+ 'slideshare' => __( 'Slide Share', 'happy-elementor-addons' ),
77
+ 'snapchat' => __( 'Snapchat', 'happy-elementor-addons' ),
78
+ 'soundcloud' => __( 'SoundCloud', 'happy-elementor-addons' ),
79
+ 'spotify' => __( 'Spotify', 'happy-elementor-addons' ),
80
+ 'stack-overflow' => __( 'StackOverflow', 'happy-elementor-addons' ),
81
+ 'tripadvisor' => __( 'TripAdvisor', 'happy-elementor-addons' ),
82
+ 'tumblr' => __( 'Tumblr', 'happy-elementor-addons' ),
83
+ 'twitch' => __( 'Twitch', 'happy-elementor-addons' ),
84
+ 'twitter' => __( 'Twitter', 'happy-elementor-addons' ),
85
+ 'vimeo' => __( 'Vimeo', 'happy-elementor-addons' ),
86
+ 'vk' => __( 'VK', 'happy-elementor-addons' ),
87
+ 'website' => __( 'Website', 'happy-elementor-addons' ),
88
+ 'whatsapp' => __( 'WhatsApp', 'happy-elementor-addons' ),
89
+ 'wordpress' => __( 'WordPress', 'happy-elementor-addons' ),
90
+ 'xing' => __( 'Xing', 'happy-elementor-addons' ),
91
+ 'yelp' => __( 'Yelp', 'happy-elementor-addons' ),
92
+ 'youtube' => __( 'YouTube', 'happy-elementor-addons' ),
93
  ];
94
  }
95
 
100
  $this->start_controls_section(
101
  '_section_info',
102
  [
103
+ 'label' => __( 'Information', 'happy-elementor-addons' ),
104
  'tab' => Controls_Manager::TAB_CONTENT,
105
  ]
106
  );
108
  $this->add_control(
109
  'image',
110
  [
111
+ 'label' => __( 'Photo', 'happy-elementor-addons' ),
112
  'type' => Controls_Manager::MEDIA,
113
  'default' => [
114
  'url' => Utils::get_placeholder_image_src(),
128
  $this->add_control(
129
  'title',
130
  [
131
+ 'label' => __( 'Name', 'happy-elementor-addons' ),
132
  'label_block' => true,
133
  'type' => Controls_Manager::TEXT,
134
+ 'default' => __( 'Happy Member Name', 'happy-elementor-addons' ),
135
+ 'placeholder' => __( 'Type Member Name', 'happy-elementor-addons' ),
136
  ]
137
  );
138
 
139
  $this->add_control(
140
  'job_title',
141
  [
142
+ 'label' => __( 'Job Title', 'happy-elementor-addons' ),
143
  'label_block' => true,
144
  'type' => Controls_Manager::TEXT,
145
+ 'default' => __( 'Happy Officer', 'happy-elementor-addons' ),
146
+ 'placeholder' => __( 'Type Member Job Title', 'happy-elementor-addons' ),
147
  ]
148
  );
149
 
150
  $this->add_control(
151
  'bio',
152
  [
153
+ 'label' => __( 'Short Bio', 'happy-elementor-addons' ),
154
  'type' => Controls_Manager::TEXTAREA,
155
+ 'placeholder' => __( 'Write something amazing about the happy member', 'happy-elementor-addons' ),
156
  'rows' => 5
157
  ]
158
  );
160
  $this->add_control(
161
  'title_tag',
162
  [
163
+ 'label' => __( 'Title HTML Tag', 'happy-elementor-addons' ),
164
  'type' => Controls_Manager::CHOOSE,
165
  'options' => [
166
  'h1' => [
167
+ 'title' => __( 'H1', 'happy-elementor-addons' ),
168
  'icon' => 'eicon-editor-h1'
169
  ],
170
  'h2' => [
171
+ 'title' => __( 'H2', 'happy-elementor-addons' ),
172
  'icon' => 'eicon-editor-h2'
173
  ],
174
  'h3' => [
175
+ 'title' => __( 'H3', 'happy-elementor-addons' ),
176
  'icon' => 'eicon-editor-h3'
177
  ],
178
  'h4' => [
179
+ 'title' => __( 'H4', 'happy-elementor-addons' ),
180
  'icon' => 'eicon-editor-h4'
181
  ],
182
  'h5' => [
183
+ 'title' => __( 'H5', 'happy-elementor-addons' ),
184
  'icon' => 'eicon-editor-h5'
185
  ],
186
  'h6' => [
187
+ 'title' => __( 'H6', 'happy-elementor-addons' ),
188
  'icon' => 'eicon-editor-h6'
189
  ]
190
  ],
196
  $this->add_responsive_control(
197
  'align',
198
  [
199
+ 'label' => __( 'Alignment', 'happy-elementor-addons' ),
200
  'type' => Controls_Manager::CHOOSE,
201
  'options' => [
202
  'left' => [
203
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
204
  'icon' => 'fa fa-align-left',
205
  ],
206
  'center' => [
207
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
208
  'icon' => 'fa fa-align-center',
209
  ],
210
  'right' => [
211
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
212
  'icon' => 'fa fa-align-right',
213
  ],
214
  'justify' => [
215
+ 'title' => __( 'Justify', 'happy-elementor-addons' ),
216
  'icon' => 'fa fa-align-justify',
217
  ],
218
  ],
228
  $this->start_controls_section(
229
  '_section_social',
230
  [
231
+ 'label' => __( 'Social Profiles', 'happy-elementor-addons' ),
232
  'tab' => Controls_Manager::TAB_CONTENT,
233
  ]
234
  );
238
  $repeater->add_control(
239
  'name',
240
  [
241
+ 'label' => __( 'Profile Name', 'happy-elementor-addons' ),
242
  'type' => Controls_Manager::SELECT2,
243
  'select2options' => [
244
  'allowClear' => false,
249
 
250
  $repeater->add_control(
251
  'link', [
252
+ 'label' => __( 'Profile Link', 'happy-elementor-addons' ),
253
+ 'placeholder' => __( 'Add your profile link', 'happy-elementor-addons' ),
254
  'type' => Controls_Manager::URL,
255
  'label_block' => false,
256
  'autocomplete' => false,
263
 
264
  $repeater->add_control(
265
  'email', [
266
+ 'label' => __( 'Email Address', 'happy-elementor-addons' ),
267
+ 'placeholder' => __( 'Add your email address', 'happy-elementor-addons' ),
268
  'type' => Controls_Manager::TEXT,
269
  'label_block' => false,
270
  'input_type' => 'email',
277
  $repeater->add_control(
278
  'customize',
279
  [
280
+ 'label' => __( 'Want To Customize?', 'happy-elementor-addons' ),
281
  'type' => Controls_Manager::SWITCHER,
282
+ 'label_on' => __( 'Yes', 'happy-elementor-addons' ),
283
+ 'label_off' => __( 'No', 'happy-elementor-addons' ),
284
  'return_value' => 'yes',
285
  ]
286
  );
294
  $repeater->start_controls_tab(
295
  '_tab_icon_normal',
296
  [
297
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
298
  ]
299
  );
300
 
301
  $repeater->add_control(
302
  'color',
303
  [
304
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
305
  'type' => Controls_Manager::COLOR,
306
  'selectors' => [
307
  '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}' => 'color: {{VALUE}}',
313
  $repeater->add_control(
314
  'bg_color',
315
  [
316
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
317
  'type' => Controls_Manager::COLOR,
318
  'selectors' => [
319
  '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}' => 'background-color: {{VALUE}}',
326
  $repeater->start_controls_tab(
327
  '_tab_icon_hover',
328
  [
329
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
330
  ]
331
  );
332
 
333
  $repeater->add_control(
334
  'hover_color',
335
  [
336
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
337
  'type' => Controls_Manager::COLOR,
338
  'selectors' => [
339
  '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:hover, {{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:focus' => 'color: {{VALUE}}',
345
  $repeater->add_control(
346
  'hover_bg_color',
347
  [
348
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
349
  'type' => Controls_Manager::COLOR,
350
  'selectors' => [
351
  '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:hover, {{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:focus' => 'background-color: {{VALUE}}',
357
  $repeater->add_control(
358
  'hover_border_color',
359
  [
360
+ 'label' => __( 'Border Color', 'happy-elementor-addons' ),
361
  'type' => Controls_Manager::COLOR,
362
  'selectors' => [
363
  '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:hover, {{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:focus' => 'border-color: {{VALUE}}',
415
  $this->start_controls_section(
416
  '_section_style_image',
417
  [
418
+ 'label' => __( 'Photo', 'happy-elementor-addons' ),
419
  'tab' => Controls_Manager::TAB_STYLE,
420
  ]
421
  );
423
  $this->add_responsive_control(
424
  'image_width',
425
  [
426
+ 'label' => __( 'Width', 'happy-elementor-addons' ),
427
  'type' => Controls_Manager::SLIDER,
428
  'size_units' => [ 'px', '%'],
429
  'range' => [
445
  $this->add_responsive_control(
446
  'image_height',
447
  [
448
+ 'label' => __( 'Height', 'happy-elementor-addons' ),
449
  'type' => Controls_Manager::SLIDER,
450
  'size_units' => [ 'px' ],
451
  'range' => [
463
  $this->add_responsive_control(
464
  'image_spacing',
465
  [
466
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
467
  'type' => Controls_Manager::SLIDER,
468
  'size_units' => ['px'],
469
  'selectors' => [
475
  $this->add_responsive_control(
476
  'image_padding',
477
  [
478
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
479
  'type' => Controls_Manager::DIMENSIONS,
480
  'size_units' => [ 'px', 'em', '%' ],
481
  'selectors' => [
495
  $this->add_responsive_control(
496
  'image_border_radius',
497
  [
498
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
499
  'type' => Controls_Manager::DIMENSIONS,
500
  'size_units' => [ 'px', '%' ],
501
  'selectors' => [
518
  $this->add_control(
519
  'image_bg_color',
520
  [
521
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
522
  'type' => Controls_Manager::COLOR,
523
  'selectors' => [
524
  '{{WRAPPER}} .ha-member-figure > img' => 'background-color: {{VALUE}}',
531
  $this->start_controls_section(
532
  '_section_style_content',
533
  [
534
+ 'label' => __( 'Name, Job Title & Bio', 'happy-elementor-addons' ),
535
  'tab' => Controls_Manager::TAB_STYLE,
536
  ]
537
  );
539
  $this->add_responsive_control(
540
  'content_padding',
541
  [
542
+ 'label' => __( 'Content Padding', 'happy-elementor-addons' ),
543
  'type' => Controls_Manager::DIMENSIONS,
544
  'size_units' => [ 'px', 'em', '%' ],
545
  'selectors' => [
552
  '_heading_title',
553
  [
554
  'type' => Controls_Manager::HEADING,
555
+ 'label' => __( 'Name', 'happy-elementor-addons' ),
556
  'separator' => 'before',
557
  ]
558
  );
560
  $this->add_responsive_control(
561
  'title_spacing',
562
  [
563
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
564
  'type' => Controls_Manager::SLIDER,
565
  'size_units' => ['px'],
566
  'selectors' => [
572
  $this->add_control(
573
  'title_color',
574
  [
575
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
576
  'type' => Controls_Manager::COLOR,
577
  'selectors' => [
578
  '{{WRAPPER}} .ha-member-name' => 'color: {{VALUE}}',
601
  '_heading_job_title',
602
  [
603
  'type' => Controls_Manager::HEADING,
604
+ 'label' => __( 'Job Title', 'happy-elementor-addons' ),
605
  'separator' => 'before'
606
  ]
607
  );
609
  $this->add_responsive_control(
610
  'job_title_spacing',
611
  [
612
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
613
  'type' => Controls_Manager::SLIDER,
614
  'size_units' => ['px'],
615
  'selectors' => [
621
  $this->add_control(
622
  'job_title_color',
623
  [
624
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
625
  'type' => Controls_Manager::COLOR,
626
  'selectors' => [
627
  '{{WRAPPER}} .ha-member-position' => 'color: {{VALUE}}',
650
  '_heading_bio',
651
  [
652
  'type' => Controls_Manager::HEADING,
653
+ 'label' => __( 'Short Bio', 'happy-elementor-addons' ),
654
  'separator' => 'before'
655
  ]
656
  );
658
  $this->add_responsive_control(
659
  'bio_spacing',
660
  [
661
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
662
  'type' => Controls_Manager::SLIDER,
663
  'size_units' => ['px'],
664
  'selectors' => [
670
  $this->add_control(
671
  'bio_color',
672
  [
673
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
674
  'type' => Controls_Manager::COLOR,
675
  'selectors' => [
676
  '{{WRAPPER}} .ha-member-bio' => 'color: {{VALUE}}',
700
  $this->start_controls_section(
701
  '_section_style_social',
702
  [
703
+ 'label' => __( 'Social Icons', 'happy-elementor-addons' ),
704
  'tab' => Controls_Manager::TAB_STYLE,
705
  ]
706
  );
708
  $this->add_responsive_control(
709
  'links_spacing',
710
  [
711
+ 'label' => __( 'Right Spacing', 'happy-elementor-addons' ),
712
  'type' => Controls_Manager::SLIDER,
713
  'size_units' => ['px'],
714
  'selectors' => [
720
  $this->add_responsive_control(
721
  'links_padding',
722
  [
723
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
724
  'type' => Controls_Manager::SLIDER,
725
  'size_units' => ['px'],
726
  'selectors' => [
732
  $this->add_responsive_control(
733
  'links_icon_size',
734
  [
735
+ 'label' => __( 'Icon Size', 'happy-elementor-addons' ),
736
  'type' => Controls_Manager::SLIDER,
737
  'size_units' => ['px'],
738
  'selectors' => [
752
  $this->add_responsive_control(
753
  'links_border_radius',
754
  [
755
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
756
  'type' => Controls_Manager::DIMENSIONS,
757
  'size_units' => [ 'px', '%' ],
758
  'selectors' => [
765
  $this->start_controls_tab(
766
  '_tab_links_normal',
767
  [
768
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
769
  ]
770
  );
771
 
772
  $this->add_control(
773
  'links_color',
774
  [
775
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
776
  'type' => Controls_Manager::COLOR,
777
  'selectors' => [
778
  '{{WRAPPER}} .ha-member-links > a' => 'color: {{VALUE}}',
783
  $this->add_control(
784
  'links_bg_color',
785
  [
786
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
787
  'type' => Controls_Manager::COLOR,
788
  'selectors' => [
789
  '{{WRAPPER}} .ha-member-links > a' => 'background-color: {{VALUE}}',
795
  $this->start_controls_tab(
796
  '_tab_links_hover',
797
  [
798
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
799
  ]
800
  );
801
 
802
  $this->add_control(
803
  'links_hover_color',
804
  [
805
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
806
  'type' => Controls_Manager::COLOR,
807
  'selectors' => [
808
  '{{WRAPPER}} .ha-member-links > a:hover, {{WRAPPER}} .ha-member-links > a:focus' => 'color: {{VALUE}}',
813
  $this->add_control(
814
  'links_hover_bg_color',
815
  [
816
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
817
  'type' => Controls_Manager::COLOR,
818
  'selectors' => [
819
  '{{WRAPPER}} .ha-member-links > a:hover, {{WRAPPER}} .ha-member-links > a:focus' => 'background-color: {{VALUE}}',
824
  $this->add_control(
825
  'links_hover_border_color',
826
  [
827
+ 'label' => __( 'Border Color', 'happy-elementor-addons' ),
828
  'type' => Controls_Manager::COLOR,
829
  'selectors' => [
830
  '{{WRAPPER}} .ha-member-links > a:hover, {{WRAPPER}} .ha-member-links > a:focus' => 'border-color: {{VALUE}};',
widgets/ninjaform/widget.php CHANGED
@@ -24,7 +24,7 @@ class NinjaForm extends Base {
24
  * @return string Widget title.
25
  */
26
  public function get_title() {
27
- return __( 'Ninja Form', 'happy_addons' );
28
  }
29
 
30
  /**
@@ -47,7 +47,7 @@ class NinjaForm extends Base {
47
  $this->start_controls_section(
48
  '_section_ninjaf',
49
  [
50
- 'label' => ha_is_ninjaf_activated() ? __( 'Ninja Form', 'happy_addons' ) : __( 'Notice', 'happy_addons' ),
51
  'tab' => Controls_Manager::TAB_CONTENT,
52
  ]
53
  );
@@ -58,9 +58,10 @@ class NinjaForm extends Base {
58
  [
59
  'type' => Controls_Manager::RAW_HTML,
60
  'raw' => sprintf(
61
- __( 'Hi, it seems %1$s is missing in your site. Please install and activate %1$s first.', 'happy_addons' ),
62
  '<a href="https://wordpress.org/plugins/ninja-forms/" target="_blank" rel="noopener">Ninja Form</a>'
63
- )
 
64
  ]
65
  );
66
  $this->end_controls_section();
@@ -70,10 +71,10 @@ class NinjaForm extends Base {
70
  $this->add_control(
71
  'form_id',
72
  [
73
- 'label' => __( 'Select Your Form', 'happy_addons' ),
74
  'type' => Controls_Manager::SELECT,
75
  'label_block' => true,
76
- 'options' => ['' => __( '', 'happy_addons' ) ] + \ha_get_ninjaform(),
77
  ]
78
  );
79
 
@@ -84,7 +85,7 @@ class NinjaForm extends Base {
84
  $this->start_controls_section(
85
  '_section_fields_style',
86
  [
87
- 'label' => __( 'Form Fields', 'happy_addons' ),
88
  'tab' => Controls_Manager::TAB_STYLE,
89
  ]
90
  );
@@ -92,7 +93,7 @@ class NinjaForm extends Base {
92
  $this->add_responsive_control(
93
  'field_margin',
94
  [
95
- 'label' => __( 'Field Spacing', 'happy_addons' ),
96
  'type' => Controls_Manager::DIMENSIONS,
97
  'size_units' => [ 'px', '%' ],
98
  'selectors' => [
@@ -104,7 +105,7 @@ class NinjaForm extends Base {
104
  $this->add_responsive_control(
105
  'field_padding',
106
  [
107
- 'label' => __( 'Padding', 'happy_addons' ),
108
  'type' => Controls_Manager::DIMENSIONS,
109
  'size_units' => [ 'px', 'em', '%' ],
110
  'selectors' => [
@@ -116,7 +117,7 @@ class NinjaForm extends Base {
116
  $this->add_responsive_control(
117
  'field_border_radius',
118
  [
119
- 'label' => __( 'Border Radius', 'happy_addons' ),
120
  'type' => Controls_Manager::DIMENSIONS,
121
  'size_units' => [ 'px', '%' ],
122
  'selectors' => [
@@ -129,7 +130,7 @@ class NinjaForm extends Base {
129
  Group_Control_Typography::get_type(),
130
  [
131
  'name' => 'field_typography',
132
- 'label' => __( 'Typography', 'happy_addons' ),
133
  'selector' => '{{WRAPPER}} .textbox-wrap input[type=text], {{WRAPPER}} .email-wrap input, {{WRAPPER}} .textarea-wrap textarea',
134
  ]
135
  );
@@ -137,7 +138,7 @@ class NinjaForm extends Base {
137
  $this->add_control(
138
  'field_textcolor',
139
  [
140
- 'label' => __( 'Field Text Color', 'happy_addons' ),
141
  'type' => Controls_Manager::COLOR,
142
  'selectors' => [
143
  '{{WRAPPER}} .textbox-wrap input[type=text], {{WRAPPER}} .email-wrap input, {{WRAPPER}} .textarea-wrap textarea' => 'color: {{VALUE}}',
@@ -148,7 +149,7 @@ class NinjaForm extends Base {
148
  $this->add_control(
149
  'field_placeholder_color',
150
  [
151
- 'label' => __( 'Field Placeholder Color', 'happy_addons' ),
152
  'type' => Controls_Manager::COLOR,
153
  'selectors' => [
154
  '{{WRAPPER}} ::-webkit-input-placeholder' => 'color: {{VALUE}};',
@@ -163,7 +164,7 @@ class NinjaForm extends Base {
163
  $this->start_controls_tab(
164
  'tab_field_normal',
165
  [
166
- 'label' => __( 'Normal', 'happy_addons' ),
167
  ]
168
  );
169
 
@@ -186,7 +187,7 @@ class NinjaForm extends Base {
186
  $this->add_control(
187
  'field_bg_color',
188
  [
189
- 'label' => __( 'Background Color', 'happy_addons' ),
190
  'type' => Controls_Manager::COLOR,
191
  'selectors' => [
192
  '{{WRAPPER}} .textbox-wrap input[type=text], {{WRAPPER}} .email-wrap input, {{WRAPPER}} .textarea-wrap textarea' => 'background-color: {{VALUE}}',
@@ -199,7 +200,7 @@ class NinjaForm extends Base {
199
  $this->start_controls_tab(
200
  'tab_field_focus',
201
  [
202
- 'label' => __( 'Focus', 'happy_addons' ),
203
  ]
204
  );
205
 
@@ -225,7 +226,7 @@ class NinjaForm extends Base {
225
  $this->add_control(
226
  'field_focus_bg_color',
227
  [
228
- 'label' => __( 'Background Color', 'happy_addons' ),
229
  'type' => Controls_Manager::COLOR,
230
  'selectors' => [
231
  '{{WRAPPER}} .textbox-wrap input[type=text]:focus, {{WRAPPER}} .email-wrap input:focus, {{WRAPPER}} .textarea-wrap textarea:focus' => 'background-color: {{VALUE}}',
@@ -242,7 +243,7 @@ class NinjaForm extends Base {
242
  $this->start_controls_section(
243
  'ninjaf-form-label',
244
  [
245
- 'label' => __( 'Form Fields Label', 'happy_addons' ),
246
  'tab' => Controls_Manager::TAB_STYLE,
247
  ]
248
  );
@@ -250,7 +251,7 @@ class NinjaForm extends Base {
250
  $this->add_responsive_control(
251
  'label_margin',
252
  [
253
- 'label' => __( 'Margin', 'happy_addons' ),
254
  'type' => Controls_Manager::DIMENSIONS,
255
  'size_units' => [ 'px', '%' ],
256
  'selectors' => [
@@ -262,7 +263,7 @@ class NinjaForm extends Base {
262
  $this->add_responsive_control(
263
  'label_padding',
264
  [
265
- 'label' => __( 'Padding', 'happy_addons' ),
266
  'type' => Controls_Manager::DIMENSIONS,
267
  'size_units' => [ 'px', 'em', '%' ],
268
  'selectors' => [
@@ -283,7 +284,7 @@ class NinjaForm extends Base {
283
  Group_Control_Typography::get_type(),
284
  [
285
  'name' => 'label_typography',
286
- 'label' => __( 'Label Typography', 'happy_addons' ),
287
  'selector' => '{{WRAPPER}} .textbox-wrap label, {{WRAPPER}} .email-wrap label, {{WRAPPER}} .textarea-wrap label',
288
  ]
289
  );
@@ -292,7 +293,7 @@ class NinjaForm extends Base {
292
  Group_Control_Typography::get_type(),
293
  [
294
  'name' => 'desc_typography',
295
- 'label' => __( 'Description Typography', 'happy_addons' ),
296
  'selector' => '{{WRAPPER}} .nf-field-description p',
297
  ]
298
  );
@@ -300,7 +301,7 @@ class NinjaForm extends Base {
300
  $this->add_control(
301
  'label_color',
302
  [
303
- 'label' => __( 'Label Text Color', 'happy_addons' ),
304
  'type' => Controls_Manager::COLOR,
305
  'selectors' => [
306
  '{{WRAPPER}} .textbox-wrap label, {{WRAPPER}} .email-wrap label, {{WRAPPER}} .textarea-wrap label' => 'color: {{VALUE}}',
@@ -311,7 +312,7 @@ class NinjaForm extends Base {
311
  $this->add_control(
312
  'requered_label',
313
  [
314
- 'label' => __( 'Required Label Color', 'happy_addons' ),
315
  'type' => Controls_Manager::COLOR,
316
  'selectors' => [
317
  '{{WRAPPER}} .ninja-forms-req-symbol' => 'color: {{VALUE}}',
@@ -322,7 +323,7 @@ class NinjaForm extends Base {
322
  $this->add_control(
323
  'desc_color',
324
  [
325
- 'label' => __( 'Description Text Color', 'happy_addons' ),
326
  'type' => Controls_Manager::COLOR,
327
  'selectors' => [
328
  '{{WRAPPER}} .nf-field-description p' => 'color: {{VALUE}}',
@@ -335,7 +336,7 @@ class NinjaForm extends Base {
335
  $this->start_controls_section(
336
  'submit',
337
  [
338
- 'label' => __( 'Submit Button', 'happy_addons' ),
339
  'tab' => Controls_Manager::TAB_STYLE,
340
  ]
341
  );
@@ -343,19 +344,19 @@ class NinjaForm extends Base {
343
  $this->add_responsive_control(
344
  'submit_btn_position',
345
  [
346
- 'label' => __( 'Button Position', 'happy_addons' ),
347
  'type' => Controls_Manager::CHOOSE,
348
  'options' => [
349
  'left' => [
350
- 'title' => __( 'Left', 'happy_addons' ),
351
  'icon' => 'eicon-h-align-left',
352
  ],
353
  'center' => [
354
- 'title' => __( 'Center', 'happy_addons' ),
355
  'icon' => 'eicon-h-align-center',
356
  ],
357
  'right' => [
358
- 'title' => __( 'Right', 'happy_addons' ),
359
  'icon' => 'eicon-h-align-right',
360
  ],
361
  ],
@@ -371,7 +372,7 @@ class NinjaForm extends Base {
371
  $this->add_responsive_control(
372
  'submit_margin',
373
  [
374
- 'label' => __( 'Margin', 'happy_addons' ),
375
  'type' => Controls_Manager::DIMENSIONS,
376
  'size_units' => [ 'px', '%' ],
377
  'selectors' => [
@@ -383,7 +384,7 @@ class NinjaForm extends Base {
383
  $this->add_responsive_control(
384
  'submit_padding',
385
  [
386
- 'label' => __( 'Padding', 'happy_addons' ),
387
  'type' => Controls_Manager::DIMENSIONS,
388
  'size_units' => [ 'px', 'em', '%' ],
389
  'selectors' => [
@@ -411,7 +412,7 @@ class NinjaForm extends Base {
411
  $this->add_control(
412
  'submit_border_radius',
413
  [
414
- 'label' => __( 'Border Radius', 'happy_addons' ),
415
  'type' => Controls_Manager::DIMENSIONS,
416
  'size_units' => [ 'px', '%' ],
417
  'selectors' => [
@@ -441,14 +442,14 @@ class NinjaForm extends Base {
441
  $this->start_controls_tab(
442
  'tab_button_normal',
443
  [
444
- 'label' => __( 'Normal', 'happy_addons' ),
445
  ]
446
  );
447
 
448
  $this->add_control(
449
  'submit_color',
450
  [
451
- 'label' => __( 'Text Color', 'happy_addons' ),
452
  'type' => Controls_Manager::COLOR,
453
  'default' => '',
454
  'selectors' => [
@@ -460,7 +461,7 @@ class NinjaForm extends Base {
460
  $this->add_control(
461
  'submit_bg_color',
462
  [
463
- 'label' => __( 'Background Color', 'happy_addons' ),
464
  'type' => Controls_Manager::COLOR,
465
  'selectors' => [
466
  '{{WRAPPER}} .submit-container input' => 'background-color: {{VALUE}};',
@@ -473,14 +474,14 @@ class NinjaForm extends Base {
473
  $this->start_controls_tab(
474
  'tab_button_hover',
475
  [
476
- 'label' => __( 'Hover', 'happy_addons' ),
477
  ]
478
  );
479
 
480
  $this->add_control(
481
  'submit_hover_color',
482
  [
483
- 'label' => __( 'Text Color', 'happy_addons' ),
484
  'type' => Controls_Manager::COLOR,
485
  'selectors' => [
486
  '{{WRAPPER}} .submit-container input:hover, {{WRAPPER}} .submit-container input:focus' => 'color: {{VALUE}};',
@@ -491,7 +492,7 @@ class NinjaForm extends Base {
491
  $this->add_control(
492
  'submit_hover_bg_color',
493
  [
494
- 'label' => __( 'Background Color', 'happy_addons' ),
495
  'type' => Controls_Manager::COLOR,
496
  'selectors' => [
497
  '{{WRAPPER}} .submit-container input:hover, {{WRAPPER}} .submit-container input:focus' => 'background-color: {{VALUE}};',
@@ -502,7 +503,7 @@ class NinjaForm extends Base {
502
  $this->add_control(
503
  'submit_hover_border_color',
504
  [
505
- 'label' => __( 'Border Color', 'happy_addons' ),
506
  'type' => Controls_Manager::COLOR,
507
  'selectors' => [
508
  '{{WRAPPER}} .submit-container input:hover, {{WRAPPER}} .submit-container input:focus' => 'border-color: {{VALUE}};',
24
  * @return string Widget title.
25
  */
26
  public function get_title() {
27
+ return __( 'Ninja Forms', 'happy-elementor-addons' );
28
  }
29
 
30
  /**
47
  $this->start_controls_section(
48
  '_section_ninjaf',
49
  [
50
+ 'label' => ha_is_ninjaf_activated() ? __( 'Ninja Forms', 'happy-elementor-addons' ) : __( 'Notice', 'happy-elementor-addons' ),
51
  'tab' => Controls_Manager::TAB_CONTENT,
52
  ]
53
  );
58
  [
59
  'type' => Controls_Manager::RAW_HTML,
60
  'raw' => sprintf(
61
+ __( 'Hi, it seems %1$s is missing in your site. Please install and activate %1$s first.', 'happy-elementor-addons' ),
62
  '<a href="https://wordpress.org/plugins/ninja-forms/" target="_blank" rel="noopener">Ninja Form</a>'
63
+ ),
64
+ 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning',
65
  ]
66
  );
67
  $this->end_controls_section();
71
  $this->add_control(
72
  'form_id',
73
  [
74
+ 'label' => __( 'Select Your Form', 'happy-elementor-addons' ),
75
  'type' => Controls_Manager::SELECT,
76
  'label_block' => true,
77
+ 'options' => ['' => __( '', 'happy-elementor-addons' ) ] + \ha_get_ninjaform(),
78
  ]
79
  );
80
 
85
  $this->start_controls_section(
86
  '_section_fields_style',
87
  [
88
+ 'label' => __( 'Form Fields', 'happy-elementor-addons' ),
89
  'tab' => Controls_Manager::TAB_STYLE,
90
  ]
91
  );
93
  $this->add_responsive_control(
94
  'field_margin',
95
  [
96
+ 'label' => __( 'Field Spacing', 'happy-elementor-addons' ),
97
  'type' => Controls_Manager::DIMENSIONS,
98
  'size_units' => [ 'px', '%' ],
99
  'selectors' => [
105
  $this->add_responsive_control(
106
  'field_padding',
107
  [
108
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
109
  'type' => Controls_Manager::DIMENSIONS,
110
  'size_units' => [ 'px', 'em', '%' ],
111
  'selectors' => [
117
  $this->add_responsive_control(
118
  'field_border_radius',
119
  [
120
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
121
  'type' => Controls_Manager::DIMENSIONS,
122
  'size_units' => [ 'px', '%' ],
123
  'selectors' => [
130
  Group_Control_Typography::get_type(),
131
  [
132
  'name' => 'field_typography',
133
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
134
  'selector' => '{{WRAPPER}} .textbox-wrap input[type=text], {{WRAPPER}} .email-wrap input, {{WRAPPER}} .textarea-wrap textarea',
135
  ]
136
  );
138
  $this->add_control(
139
  'field_textcolor',
140
  [
141
+ 'label' => __( 'Field Text Color', 'happy-elementor-addons' ),
142
  'type' => Controls_Manager::COLOR,
143
  'selectors' => [
144
  '{{WRAPPER}} .textbox-wrap input[type=text], {{WRAPPER}} .email-wrap input, {{WRAPPER}} .textarea-wrap textarea' => 'color: {{VALUE}}',
149
  $this->add_control(
150
  'field_placeholder_color',
151
  [
152
+ 'label' => __( 'Field Placeholder Color', 'happy-elementor-addons' ),
153
  'type' => Controls_Manager::COLOR,
154
  'selectors' => [
155
  '{{WRAPPER}} ::-webkit-input-placeholder' => 'color: {{VALUE}};',
164
  $this->start_controls_tab(
165
  'tab_field_normal',
166
  [
167
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
168
  ]
169
  );
170
 
187
  $this->add_control(
188
  'field_bg_color',
189
  [
190
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
191
  'type' => Controls_Manager::COLOR,
192
  'selectors' => [
193
  '{{WRAPPER}} .textbox-wrap input[type=text], {{WRAPPER}} .email-wrap input, {{WRAPPER}} .textarea-wrap textarea' => 'background-color: {{VALUE}}',
200
  $this->start_controls_tab(
201
  'tab_field_focus',
202
  [
203
+ 'label' => __( 'Focus', 'happy-elementor-addons' ),
204
  ]
205
  );
206
 
226
  $this->add_control(
227
  'field_focus_bg_color',
228
  [
229
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
230
  'type' => Controls_Manager::COLOR,
231
  'selectors' => [
232
  '{{WRAPPER}} .textbox-wrap input[type=text]:focus, {{WRAPPER}} .email-wrap input:focus, {{WRAPPER}} .textarea-wrap textarea:focus' => 'background-color: {{VALUE}}',
243
  $this->start_controls_section(
244
  'ninjaf-form-label',
245
  [
246
+ 'label' => __( 'Form Fields Label', 'happy-elementor-addons' ),
247
  'tab' => Controls_Manager::TAB_STYLE,
248
  ]
249
  );
251
  $this->add_responsive_control(
252
  'label_margin',
253
  [
254
+ 'label' => __( 'Margin', 'happy-elementor-addons' ),
255
  'type' => Controls_Manager::DIMENSIONS,
256
  'size_units' => [ 'px', '%' ],
257
  'selectors' => [
263
  $this->add_responsive_control(
264
  'label_padding',
265
  [
266
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
267
  'type' => Controls_Manager::DIMENSIONS,
268
  'size_units' => [ 'px', 'em', '%' ],
269
  'selectors' => [
284
  Group_Control_Typography::get_type(),
285
  [
286
  'name' => 'label_typography',
287
+ 'label' => __( 'Label Typography', 'happy-elementor-addons' ),
288
  'selector' => '{{WRAPPER}} .textbox-wrap label, {{WRAPPER}} .email-wrap label, {{WRAPPER}} .textarea-wrap label',
289
  ]
290
  );
293
  Group_Control_Typography::get_type(),
294
  [
295
  'name' => 'desc_typography',
296
+ 'label' => __( 'Description Typography', 'happy-elementor-addons' ),
297
  'selector' => '{{WRAPPER}} .nf-field-description p',
298
  ]
299
  );
301
  $this->add_control(
302
  'label_color',
303
  [
304
+ 'label' => __( 'Label Text Color', 'happy-elementor-addons' ),
305
  'type' => Controls_Manager::COLOR,
306
  'selectors' => [
307
  '{{WRAPPER}} .textbox-wrap label, {{WRAPPER}} .email-wrap label, {{WRAPPER}} .textarea-wrap label' => 'color: {{VALUE}}',
312
  $this->add_control(
313
  'requered_label',
314
  [
315
+ 'label' => __( 'Required Label Color', 'happy-elementor-addons' ),
316
  'type' => Controls_Manager::COLOR,
317
  'selectors' => [
318
  '{{WRAPPER}} .ninja-forms-req-symbol' => 'color: {{VALUE}}',
323
  $this->add_control(
324
  'desc_color',
325
  [
326
+ 'label' => __( 'Description Text Color', 'happy-elementor-addons' ),
327
  'type' => Controls_Manager::COLOR,
328
  'selectors' => [
329
  '{{WRAPPER}} .nf-field-description p' => 'color: {{VALUE}}',
336
  $this->start_controls_section(
337
  'submit',
338
  [
339
+ 'label' => __( 'Submit Button', 'happy-elementor-addons' ),
340
  'tab' => Controls_Manager::TAB_STYLE,
341
  ]
342
  );
344
  $this->add_responsive_control(
345
  'submit_btn_position',
346
  [
347
+ 'label' => __( 'Button Position', 'happy-elementor-addons' ),
348
  'type' => Controls_Manager::CHOOSE,
349
  'options' => [
350
  'left' => [
351
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
352
  'icon' => 'eicon-h-align-left',
353
  ],
354
  'center' => [
355
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
356
  'icon' => 'eicon-h-align-center',
357
  ],
358
  'right' => [
359
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
360
  'icon' => 'eicon-h-align-right',
361
  ],
362
  ],
372
  $this->add_responsive_control(
373
  'submit_margin',
374
  [
375
+ 'label' => __( 'Margin', 'happy-elementor-addons' ),
376
  'type' => Controls_Manager::DIMENSIONS,
377
  'size_units' => [ 'px', '%' ],
378
  'selectors' => [
384
  $this->add_responsive_control(
385
  'submit_padding',
386
  [
387
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
388
  'type' => Controls_Manager::DIMENSIONS,
389
  'size_units' => [ 'px', 'em', '%' ],
390
  'selectors' => [
412
  $this->add_control(
413
  'submit_border_radius',
414
  [
415
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
416
  'type' => Controls_Manager::DIMENSIONS,
417
  'size_units' => [ 'px', '%' ],
418
  'selectors' => [
442
  $this->start_controls_tab(
443
  'tab_button_normal',
444
  [
445
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
446
  ]
447
  );
448
 
449
  $this->add_control(
450
  'submit_color',
451
  [
452
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
453
  'type' => Controls_Manager::COLOR,
454
  'default' => '',
455
  'selectors' => [
461
  $this->add_control(
462
  'submit_bg_color',
463
  [
464
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
465
  'type' => Controls_Manager::COLOR,
466
  'selectors' => [
467
  '{{WRAPPER}} .submit-container input' => 'background-color: {{VALUE}};',
474
  $this->start_controls_tab(
475
  'tab_button_hover',
476
  [
477
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
478
  ]
479
  );
480
 
481
  $this->add_control(
482
  'submit_hover_color',
483
  [
484
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
485
  'type' => Controls_Manager::COLOR,
486
  'selectors' => [
487
  '{{WRAPPER}} .submit-container input:hover, {{WRAPPER}} .submit-container input:focus' => 'color: {{VALUE}};',
492
  $this->add_control(
493
  'submit_hover_bg_color',
494
  [
495
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
496
  'type' => Controls_Manager::COLOR,
497
  'selectors' => [
498
  '{{WRAPPER}} .submit-container input:hover, {{WRAPPER}} .submit-container input:focus' => 'background-color: {{VALUE}};',
503
  $this->add_control(
504
  'submit_hover_border_color',
505
  [
506
+ 'label' => __( 'Border Color', 'happy-elementor-addons' ),
507
  'type' => Controls_Manager::COLOR,
508
  'selectors' => [
509
  '{{WRAPPER}} .submit-container input:hover, {{WRAPPER}} .submit-container input:focus' => 'border-color: {{VALUE}};',
widgets/review/widget.php CHANGED
@@ -28,7 +28,7 @@ class Review extends Base {
28
  * @return string Widget title.
29
  */
30
  public function get_title() {
31
- return __( 'Review', 'happy_addons' );
32
  }
33
 
34
  /**
@@ -51,7 +51,7 @@ class Review extends Base {
51
  $this->start_controls_section(
52
  '_section_content',
53
  [
54
- 'label' => __( 'Content', 'happy_addons' ),
55
  'tab' => Controls_Manager::TAB_CONTENT,
56
  ]
57
  );
@@ -60,14 +60,14 @@ class Review extends Base {
60
  $this->start_controls_tab(
61
  '_tab_reviewer',
62
  [
63
- 'label' => __( 'Reviewer', 'happy_addons' ),
64
  ]
65
  );
66
 
67
  $this->add_control(
68
  'image',
69
  [
70
- 'label' => __( 'Photo', 'happy_addons' ),
71
  'type' => Controls_Manager::MEDIA,
72
  'default' => [
73
  'url' => Utils::get_placeholder_image_src(),
@@ -78,20 +78,20 @@ class Review extends Base {
78
  $this->add_control(
79
  'title',
80
  [
81
- 'label' => __( 'Name', 'happy_addons' ),
82
  'type' => Controls_Manager::TEXT,
83
- 'default' => __( 'Happy Reviewer', 'happy_addons' ),
84
- 'placeholder' => __( 'Type Reviewer Name', 'happy_addons' ),
85
  ]
86
  );
87
 
88
  $this->add_control(
89
  'job_title',
90
  [
91
- 'label' => __( 'Job Title', 'happy_addons' ),
92
  'type' => Controls_Manager::TEXT,
93
- 'default' => __( 'Happy Officer', 'happy_addons' ),
94
- 'placeholder' => __( 'Type Reviewer Job Title', 'happy_addons' ),
95
  ]
96
  );
97
 
@@ -107,20 +107,20 @@ class Review extends Base {
107
  $this->add_control(
108
  'image_position',
109
  [
110
- 'label' => __( 'Image Position', 'happy_addons' ),
111
  'type' => Controls_Manager::CHOOSE,
112
  'label_block' => false,
113
  'options' => [
114
  'left' => [
115
- 'title' => __( 'Left', 'happy_addons' ),
116
  'icon' => 'eicon-h-align-left',
117
  ],
118
  'top' => [
119
- 'title' => __( 'Top', 'happy_addons' ),
120
  'icon' => 'eicon-v-align-top',
121
  ],
122
  'right' => [
123
- 'title' => __( 'Right', 'happy_addons' ),
124
  'icon' => 'eicon-h-align-right',
125
  ],
126
  ],
@@ -133,31 +133,31 @@ class Review extends Base {
133
  $this->add_control(
134
  'title_tag',
135
  [
136
- 'label' => __( 'Name HTML Tag', 'happy_addons' ),
137
  'type' => Controls_Manager::CHOOSE,
138
  'options' => [
139
  'h1' => [
140
- 'title' => __( 'H1', 'happy_addons' ),
141
  'icon' => 'eicon-editor-h1'
142
  ],
143
  'h2' => [
144
- 'title' => __( 'H2', 'happy_addons' ),
145
  'icon' => 'eicon-editor-h2'
146
  ],
147
  'h3' => [
148
- 'title' => __( 'H3', 'happy_addons' ),
149
  'icon' => 'eicon-editor-h3'
150
  ],
151
  'h4' => [
152
- 'title' => __( 'H4', 'happy_addons' ),
153
  'icon' => 'eicon-editor-h4'
154
  ],
155
  'h5' => [
156
- 'title' => __( 'H5', 'happy_addons' ),
157
  'icon' => 'eicon-editor-h5'
158
  ],
159
  'h6' => [
160
- 'title' => __( 'H6', 'happy_addons' ),
161
  'icon' => 'eicon-editor-h6'
162
  ]
163
  ],
@@ -171,13 +171,13 @@ class Review extends Base {
171
  $this->start_controls_tab(
172
  '_tab_review',
173
  [
174
- 'label' => __( 'Review', 'happy_addons' ),
175
  ]
176
  );
177
  $this->add_control(
178
  'ratting',
179
  [
180
- 'label' => __( 'Ratting', 'happy_addons' ),
181
  'type' => Controls_Manager::SLIDER,
182
  'default' => [
183
  'unit' => 'px',
@@ -197,11 +197,11 @@ class Review extends Base {
197
  $this->add_control(
198
  'ratting_style',
199
  [
200
- 'label' => __( 'Style', 'happy_addons' ),
201
  'type' => Controls_Manager::SELECT,
202
  'options' => [
203
- 'star' => __( 'Star Rating', 'happy_addons' ),
204
- 'num' => __( 'Number Rating', 'happy_addons' ),
205
  ],
206
  'default' => 'star',
207
  ]
@@ -210,10 +210,10 @@ class Review extends Base {
210
  $this->add_control(
211
  'review',
212
  [
213
- 'label' => __( 'Review', 'happy_addons' ),
214
  'type' => Controls_Manager::TEXTAREA,
215
- 'default' => __( 'Happy reviewer is super excited being part of happy addons family', 'happy_addons' ),
216
- 'placeholder' => __( 'Type amazing review from happy reviewer', 'happy_addons' ),
217
  ]
218
  );
219
  $this->end_controls_tab();
@@ -222,24 +222,24 @@ class Review extends Base {
222
  $this->add_responsive_control(
223
  'align',
224
  [
225
- 'label' => __( 'Alignment', 'happy_addons' ),
226
  'type' => Controls_Manager::CHOOSE,
227
  'separator' => 'before',
228
  'options' => [
229
  'left' => [
230
- 'title' => __( 'Left', 'happy_addons' ),
231
  'icon' => 'fa fa-align-left',
232
  ],
233
  'center' => [
234
- 'title' => __( 'Center', 'happy_addons' ),
235
  'icon' => 'fa fa-align-center',
236
  ],
237
  'right' => [
238
- 'title' => __( 'Right', 'happy_addons' ),
239
  'icon' => 'fa fa-align-right',
240
  ],
241
  'justify' => [
242
- 'title' => __( 'Justify', 'happy_addons' ),
243
  'icon' => 'fa fa-align-justify',
244
  ],
245
  ],
@@ -253,11 +253,11 @@ class Review extends Base {
253
  $this->add_control(
254
  'review_position',
255
  [
256
- 'label' => __( 'Review Position', 'happy_addons' ),
257
  'type' => Controls_Manager::SELECT,
258
  'options' => [
259
- 'before' => __( 'Review Before', 'happy_addons' ),
260
- 'after' => __( 'Review After', 'happy_addons' ),
261
  ],
262
  'default' => 'before',
263
  ]
@@ -270,7 +270,7 @@ class Review extends Base {
270
  $this->start_controls_section(
271
  '_section_photo_style',
272
  [
273
- 'label' => __( 'Photo', 'happy_addons' ),
274
  'tab' => Controls_Manager::TAB_STYLE,
275
  ]
276
  );
@@ -278,7 +278,7 @@ class Review extends Base {
278
  $this->add_responsive_control(
279
  'image_width',
280
  [
281
- 'label' => __( 'Width', 'happy_addons' ),
282
  'type' => Controls_Manager::SLIDER,
283
  'size_units' => [ 'px', '%' ],
284
  'range' => [
@@ -301,7 +301,7 @@ class Review extends Base {
301
  $this->add_responsive_control(
302
  'image_height',
303
  [
304
- 'label' => __( 'Height', 'happy_addons' ),
305
  'type' => Controls_Manager::SLIDER,
306
  'size_units' => [ 'px' ],
307
  'range' => [
@@ -332,7 +332,7 @@ class Review extends Base {
332
  $this->add_responsive_control(
333
  'image_offset_x',
334
  [
335
- 'label' => __( 'Offset X', 'happy_addons' ),
336
  'type' => Controls_Manager::SLIDER,
337
  'size_units' => ['px'],
338
  'condition' => [
@@ -351,7 +351,7 @@ class Review extends Base {
351
  $this->add_responsive_control(
352
  'image_offset_y',
353
  [
354
- 'label' => __( 'Offset Y', 'happy_addons' ),
355
  'type' => Controls_Manager::SLIDER,
356
  'size_units' => ['px'],
357
  'condition' => [
@@ -386,7 +386,7 @@ class Review extends Base {
386
  $this->add_responsive_control(
387
  'image_padding',
388
  [
389
- 'label' => __( 'Padding', 'happy_addons' ),
390
  'type' => Controls_Manager::DIMENSIONS,
391
  'size_units' => [ 'px', 'em', '%' ],
392
  'selectors' => [
@@ -406,7 +406,7 @@ class Review extends Base {
406
  $this->add_responsive_control(
407
  'image_border_radius',
408
  [
409
- 'label' => __( 'Border Radius', 'happy_addons' ),
410
  'type' => Controls_Manager::DIMENSIONS,
411
  'size_units' => [ 'px', '%' ],
412
  'selectors' => [
@@ -431,7 +431,7 @@ class Review extends Base {
431
  $this->start_controls_section(
432
  '_section_review_style',
433
  [
434
- 'label' => __( 'Review', 'happy_addons' ),
435
  'tab' => Controls_Manager::TAB_STYLE,
436
  ]
437
  );
@@ -439,7 +439,7 @@ class Review extends Base {
439
  $this->add_responsive_control(
440
  'body_padding',
441
  [
442
- 'label' => __( 'Text Box Padding', 'happy_addons' ),
443
  'type' => Controls_Manager::DIMENSIONS,
444
  'size_units' => [ 'px', 'em', '%' ],
445
  'selectors' => [
@@ -452,7 +452,7 @@ class Review extends Base {
452
  '_heading_name',
453
  [
454
  'type' => Controls_Manager::HEADING,
455
- 'label' => __( 'Name', 'happy_addons' ),
456
  'separator' => 'before'
457
  ]
458
  );
@@ -460,7 +460,7 @@ class Review extends Base {
460
  $this->add_responsive_control(
461
  'title_spacing',
462
  [
463
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
464
  'type' => Controls_Manager::SLIDER,
465
  'size_units' => ['px'],
466
  'selectors' => [
@@ -472,7 +472,7 @@ class Review extends Base {
472
  $this->add_control(
473
  'name_color',
474
  [
475
- 'label' => __( 'Text Color', 'happy_addons' ),
476
  'type' => Controls_Manager::COLOR,
477
  'selectors' => [
478
  '{{WRAPPER}} .ha-review-reviewer' => 'color: {{VALUE}}',
@@ -493,7 +493,7 @@ class Review extends Base {
493
  '_heading_job_title',
494
  [
495
  'type' => Controls_Manager::HEADING,
496
- 'label' => __( 'Job Title', 'happy_addons' ),
497
  'separator' => 'before'
498
  ]
499
  );
@@ -501,7 +501,7 @@ class Review extends Base {
501
  $this->add_responsive_control(
502
  'job_title_spacing',
503
  [
504
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
505
  'type' => Controls_Manager::SLIDER,
506
  'size_units' => ['px'],
507
  'selectors' => [
@@ -513,7 +513,7 @@ class Review extends Base {
513
  $this->add_control(
514
  'job_title_color',
515
  [
516
- 'label' => __( 'Text Color', 'happy_addons' ),
517
  'type' => Controls_Manager::COLOR,
518
  'selectors' => [
519
  '{{WRAPPER}} .ha-review-position' => 'color: {{VALUE}}',
@@ -534,7 +534,7 @@ class Review extends Base {
534
  '_heading_review',
535
  [
536
  'type' => Controls_Manager::HEADING,
537
- 'label' => __( 'Review', 'happy_addons' ),
538
  'separator' => 'before'
539
  ]
540
  );
@@ -542,7 +542,7 @@ class Review extends Base {
542
  $this->add_responsive_control(
543
  'review_spacing',
544
  [
545
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
546
  'type' => Controls_Manager::SLIDER,
547
  'size_units' => ['px'],
548
  'selectors' => [
@@ -554,7 +554,7 @@ class Review extends Base {
554
  $this->add_control(
555
  'review_color',
556
  [
557
- 'label' => __( 'Text Color', 'happy_addons' ),
558
  'type' => Controls_Manager::COLOR,
559
  'selectors' => [
560
  '{{WRAPPER}} .ha-review-desc' => 'color: {{VALUE}}',
@@ -576,7 +576,7 @@ class Review extends Base {
576
  $this->start_controls_section(
577
  '_section_ratting_style',
578
  [
579
- 'label' => __( 'Ratting', 'happy_addons' ),
580
  'tab' => Controls_Manager::TAB_STYLE,
581
  ]
582
  );
@@ -584,7 +584,7 @@ class Review extends Base {
584
  $this->add_responsive_control(
585
  'ratting_size',
586
  [
587
- 'label' => __( 'Size', 'happy_addons' ),
588
  'type' => Controls_Manager::SLIDER,
589
  'size_units' => ['px'],
590
  'selectors' => [
@@ -596,7 +596,7 @@ class Review extends Base {
596
  $this->add_responsive_control(
597
  'ratting_spacing',
598
  [
599
- 'label' => __( 'Bottom Spacing', 'happy_addons' ),
600
  'type' => Controls_Manager::SLIDER,
601
  'size_units' => ['px'],
602
  'selectors' => [
@@ -608,7 +608,7 @@ class Review extends Base {
608
  $this->add_responsive_control(
609
  'ratting_padding',
610
  [
611
- 'label' => __( 'Padding', 'happy_addons' ),
612
  'type' => Controls_Manager::DIMENSIONS,
613
  'size_units' => [ 'px', 'em', '%' ],
614
  'selectors' => [
@@ -620,7 +620,7 @@ class Review extends Base {
620
  $this->add_control(
621
  'ratting_color',
622
  [
623
- 'label' => __( 'Text Color', 'happy_addons' ),
624
  'type' => Controls_Manager::COLOR,
625
  'selectors' => [
626
  '{{WRAPPER}} .ha-review-ratting' => 'color: {{VALUE}}',
@@ -631,7 +631,7 @@ class Review extends Base {
631
  $this->add_control(
632
  'ratting_bg_color',
633
  [
634
- 'label' => __( 'Background Color', 'happy_addons' ),
635
  'type' => Controls_Manager::COLOR,
636
  'selectors' => [
637
  '{{WRAPPER}} .ha-review-ratting' => 'background-color: {{VALUE}}',
@@ -650,7 +650,7 @@ class Review extends Base {
650
  $this->add_control(
651
  'ratting_border_radius',
652
  [
653
- 'label' => __( 'Border Radius', 'happy_addons' ),
654
  'type' => Controls_Manager::DIMENSIONS,
655
  'size_units' => [ 'px', '%' ],
656
  'selectors' => [
28
  * @return string Widget title.
29
  */
30
  public function get_title() {
31
+ return __( 'Review', 'happy-elementor-addons' );
32
  }
33
 
34
  /**
51
  $this->start_controls_section(
52
  '_section_content',
53
  [
54
+ 'label' => __( 'Content', 'happy-elementor-addons' ),
55
  'tab' => Controls_Manager::TAB_CONTENT,
56
  ]
57
  );
60
  $this->start_controls_tab(
61
  '_tab_reviewer',
62
  [
63
+ 'label' => __( 'Reviewer', 'happy-elementor-addons' ),
64
  ]
65
  );
66
 
67
  $this->add_control(
68
  'image',
69
  [
70
+ 'label' => __( 'Photo', 'happy-elementor-addons' ),
71
  'type' => Controls_Manager::MEDIA,
72
  'default' => [
73
  'url' => Utils::get_placeholder_image_src(),
78
  $this->add_control(
79
  'title',
80
  [
81
+ 'label' => __( 'Name', 'happy-elementor-addons' ),
82
  'type' => Controls_Manager::TEXT,
83
+ 'default' => __( 'Happy Reviewer', 'happy-elementor-addons' ),
84
+ 'placeholder' => __( 'Type Reviewer Name', 'happy-elementor-addons' ),
85
  ]
86
  );
87
 
88
  $this->add_control(
89
  'job_title',
90
  [
91
+ 'label' => __( 'Job Title', 'happy-elementor-addons' ),
92
  'type' => Controls_Manager::TEXT,
93
+ 'default' => __( 'Happy Officer', 'happy-elementor-addons' ),
94
+ 'placeholder' => __( 'Type Reviewer Job Title', 'happy-elementor-addons' ),
95
  ]
96
  );
97
 
107
  $this->add_control(
108
  'image_position',
109
  [
110
+ 'label' => __( 'Image Position', 'happy-elementor-addons' ),
111
  'type' => Controls_Manager::CHOOSE,
112
  'label_block' => false,
113
  'options' => [
114
  'left' => [
115
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
116
  'icon' => 'eicon-h-align-left',
117
  ],
118
  'top' => [
119
+ 'title' => __( 'Top', 'happy-elementor-addons' ),
120
  'icon' => 'eicon-v-align-top',
121
  ],
122
  'right' => [
123
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
124
  'icon' => 'eicon-h-align-right',
125
  ],
126
  ],
133
  $this->add_control(
134
  'title_tag',
135
  [
136
+ 'label' => __( 'Name HTML Tag', 'happy-elementor-addons' ),
137
  'type' => Controls_Manager::CHOOSE,
138
  'options' => [
139
  'h1' => [
140
+ 'title' => __( 'H1', 'happy-elementor-addons' ),
141
  'icon' => 'eicon-editor-h1'
142
  ],
143
  'h2' => [
144
+ 'title' => __( 'H2', 'happy-elementor-addons' ),
145
  'icon' => 'eicon-editor-h2'
146
  ],
147
  'h3' => [
148
+ 'title' => __( 'H3', 'happy-elementor-addons' ),
149
  'icon' => 'eicon-editor-h3'
150
  ],
151
  'h4' => [
152
+ 'title' => __( 'H4', 'happy-elementor-addons' ),
153
  'icon' => 'eicon-editor-h4'
154
  ],
155
  'h5' => [
156
+ 'title' => __( 'H5', 'happy-elementor-addons' ),
157
  'icon' => 'eicon-editor-h5'
158
  ],
159
  'h6' => [
160
+ 'title' => __( 'H6', 'happy-elementor-addons' ),
161
  'icon' => 'eicon-editor-h6'
162
  ]
163
  ],
171
  $this->start_controls_tab(
172
  '_tab_review',
173
  [
174
+ 'label' => __( 'Review', 'happy-elementor-addons' ),
175
  ]
176
  );
177
  $this->add_control(
178
  'ratting',
179
  [
180
+ 'label' => __( 'Ratting', 'happy-elementor-addons' ),
181
  'type' => Controls_Manager::SLIDER,
182
  'default' => [
183
  'unit' => 'px',
197
  $this->add_control(
198
  'ratting_style',
199
  [
200
+ 'label' => __( 'Style', 'happy-elementor-addons' ),
201
  'type' => Controls_Manager::SELECT,
202
  'options' => [
203
+ 'star' => __( 'Star Rating', 'happy-elementor-addons' ),
204
+ 'num' => __( 'Number Rating', 'happy-elementor-addons' ),
205
  ],
206
  'default' => 'star',
207
  ]
210
  $this->add_control(
211
  'review',
212
  [
213
+ 'label' => __( 'Review', 'happy-elementor-addons' ),
214
  'type' => Controls_Manager::TEXTAREA,
215
+ 'default' => __( 'Happy reviewer is super excited being part of happy addons family', 'happy-elementor-addons' ),
216
+ 'placeholder' => __( 'Type amazing review from happy reviewer', 'happy-elementor-addons' ),
217
  ]
218
  );
219
  $this->end_controls_tab();
222
  $this->add_responsive_control(
223
  'align',
224
  [
225
+ 'label' => __( 'Alignment', 'happy-elementor-addons' ),
226
  'type' => Controls_Manager::CHOOSE,
227
  'separator' => 'before',
228
  'options' => [
229
  'left' => [
230
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
231
  'icon' => 'fa fa-align-left',
232
  ],
233
  'center' => [
234
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
235
  'icon' => 'fa fa-align-center',
236
  ],
237
  'right' => [
238
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
239
  'icon' => 'fa fa-align-right',
240
  ],
241
  'justify' => [
242
+ 'title' => __( 'Justify', 'happy-elementor-addons' ),
243
  'icon' => 'fa fa-align-justify',
244
  ],
245
  ],
253
  $this->add_control(
254
  'review_position',
255
  [
256
+ 'label' => __( 'Review Position', 'happy-elementor-addons' ),
257
  'type' => Controls_Manager::SELECT,
258
  'options' => [
259
+ 'before' => __( 'Review Before', 'happy-elementor-addons' ),
260
+ 'after' => __( 'Review After', 'happy-elementor-addons' ),
261
  ],
262
  'default' => 'before',
263
  ]
270
  $this->start_controls_section(
271
  '_section_photo_style',
272
  [
273
+ 'label' => __( 'Photo', 'happy-elementor-addons' ),
274
  'tab' => Controls_Manager::TAB_STYLE,
275
  ]
276
  );
278
  $this->add_responsive_control(
279
  'image_width',
280
  [
281
+ 'label' => __( 'Width', 'happy-elementor-addons' ),
282
  'type' => Controls_Manager::SLIDER,
283
  'size_units' => [ 'px', '%' ],
284
  'range' => [
301
  $this->add_responsive_control(
302
  'image_height',
303
  [
304
+ 'label' => __( 'Height', 'happy-elementor-addons' ),
305
  'type' => Controls_Manager::SLIDER,
306
  'size_units' => [ 'px' ],
307
  'range' => [
332
  $this->add_responsive_control(
333
  'image_offset_x',
334
  [
335
+ 'label' => __( 'Offset X', 'happy-elementor-addons' ),
336
  'type' => Controls_Manager::SLIDER,
337
  'size_units' => ['px'],
338
  'condition' => [
351
  $this->add_responsive_control(
352
  'image_offset_y',
353
  [
354
+ 'label' => __( 'Offset Y', 'happy-elementor-addons' ),
355
  'type' => Controls_Manager::SLIDER,
356
  'size_units' => ['px'],
357
  'condition' => [
386
  $this->add_responsive_control(
387
  'image_padding',
388
  [
389
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
390
  'type' => Controls_Manager::DIMENSIONS,
391
  'size_units' => [ 'px', 'em', '%' ],
392
  'selectors' => [
406
  $this->add_responsive_control(
407
  'image_border_radius',
408
  [
409
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
410
  'type' => Controls_Manager::DIMENSIONS,
411
  'size_units' => [ 'px', '%' ],
412
  'selectors' => [
431
  $this->start_controls_section(
432
  '_section_review_style',
433
  [
434
+ 'label' => __( 'Review', 'happy-elementor-addons' ),
435
  'tab' => Controls_Manager::TAB_STYLE,
436
  ]
437
  );
439
  $this->add_responsive_control(
440
  'body_padding',
441
  [
442
+ 'label' => __( 'Text Box Padding', 'happy-elementor-addons' ),
443
  'type' => Controls_Manager::DIMENSIONS,
444
  'size_units' => [ 'px', 'em', '%' ],
445
  'selectors' => [
452
  '_heading_name',
453
  [
454
  'type' => Controls_Manager::HEADING,
455
+ 'label' => __( 'Name', 'happy-elementor-addons' ),
456
  'separator' => 'before'
457
  ]
458
  );
460
  $this->add_responsive_control(
461
  'title_spacing',
462
  [
463
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
464
  'type' => Controls_Manager::SLIDER,
465
  'size_units' => ['px'],
466
  'selectors' => [
472
  $this->add_control(
473
  'name_color',
474
  [
475
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
476
  'type' => Controls_Manager::COLOR,
477
  'selectors' => [
478
  '{{WRAPPER}} .ha-review-reviewer' => 'color: {{VALUE}}',
493
  '_heading_job_title',
494
  [
495
  'type' => Controls_Manager::HEADING,
496
+ 'label' => __( 'Job Title', 'happy-elementor-addons' ),
497
  'separator' => 'before'
498
  ]
499
  );
501
  $this->add_responsive_control(
502
  'job_title_spacing',
503
  [
504
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
505
  'type' => Controls_Manager::SLIDER,
506
  'size_units' => ['px'],
507
  'selectors' => [
513
  $this->add_control(
514
  'job_title_color',
515
  [
516
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
517
  'type' => Controls_Manager::COLOR,
518
  'selectors' => [
519
  '{{WRAPPER}} .ha-review-position' => 'color: {{VALUE}}',
534
  '_heading_review',
535
  [
536
  'type' => Controls_Manager::HEADING,
537
+ 'label' => __( 'Review', 'happy-elementor-addons' ),
538
  'separator' => 'before'
539
  ]
540
  );
542
  $this->add_responsive_control(
543
  'review_spacing',
544
  [
545
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
546
  'type' => Controls_Manager::SLIDER,
547
  'size_units' => ['px'],
548
  'selectors' => [
554
  $this->add_control(
555
  'review_color',
556
  [
557
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
558
  'type' => Controls_Manager::COLOR,
559
  'selectors' => [
560
  '{{WRAPPER}} .ha-review-desc' => 'color: {{VALUE}}',
576
  $this->start_controls_section(
577
  '_section_ratting_style',
578
  [
579
+ 'label' => __( 'Ratting', 'happy-elementor-addons' ),
580
  'tab' => Controls_Manager::TAB_STYLE,
581
  ]
582
  );
584
  $this->add_responsive_control(
585
  'ratting_size',
586
  [
587
+ 'label' => __( 'Size', 'happy-elementor-addons' ),
588
  'type' => Controls_Manager::SLIDER,
589
  'size_units' => ['px'],
590
  'selectors' => [
596
  $this->add_responsive_control(
597
  'ratting_spacing',
598
  [
599
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
600
  'type' => Controls_Manager::SLIDER,
601
  'size_units' => ['px'],
602
  'selectors' => [
608
  $this->add_responsive_control(
609
  'ratting_padding',
610
  [
611
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
612
  'type' => Controls_Manager::DIMENSIONS,
613
  'size_units' => [ 'px', 'em', '%' ],
614
  'selectors' => [
620
  $this->add_control(
621
  'ratting_color',
622
  [
623
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
624
  'type' => Controls_Manager::COLOR,
625
  'selectors' => [
626
  '{{WRAPPER}} .ha-review-ratting' => 'color: {{VALUE}}',
631
  $this->add_control(
632
  'ratting_bg_color',
633
  [
634
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
635
  'type' => Controls_Manager::COLOR,
636
  'selectors' => [
637
  '{{WRAPPER}} .ha-review-ratting' => 'background-color: {{VALUE}}',
650
  $this->add_control(
651
  'ratting_border_radius',
652
  [
653
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
654
  'type' => Controls_Manager::DIMENSIONS,
655
  'size_units' => [ 'px', '%' ],
656
  'selectors' => [
widgets/skills/widget.php CHANGED
@@ -26,7 +26,7 @@ class Skills extends Base {
26
  * @return string Widget title.
27
  */
28
  public function get_title() {
29
- return __( 'Skill Bars', 'happy_addons' );
30
  }
31
 
32
  /**
@@ -49,7 +49,7 @@ class Skills extends Base {
49
  $this->start_controls_section(
50
  '_section_skills',
51
  [
52
- 'label' => __( 'Skills', 'happy_addons' ),
53
  'tab' => Controls_Manager::TAB_CONTENT,
54
  ]
55
  );
@@ -60,16 +60,16 @@ class Skills extends Base {
60
  'name',
61
  [
62
  'type' => Controls_Manager::TEXT,
63
- 'label' => __( 'Name', 'happy_addons' ),
64
- 'default' => __( 'Happy Skill', 'happy_addons' ),
65
- 'placeholder' => __( 'Type Happy Skill Name', 'happy_addons' ),
66
  ]
67
  );
68
 
69
  $repeater->add_control(
70
  'level',
71
  [
72
- 'label' => __( 'Level (Out Of 100)', 'happy_addons' ),
73
  'type' => Controls_Manager::SLIDER,
74
  'default' => [
75
  'unit' => '%',
@@ -88,19 +88,19 @@ class Skills extends Base {
88
  $repeater->add_control(
89
  'customize',
90
  [
91
- 'label' => __( 'Want To Customize?', 'happy_addons' ),
92
  'type' => Controls_Manager::SWITCHER,
93
- 'label_on' => __( 'Yes', 'happy_addons' ),
94
- 'label_off' => __( 'No', 'happy_addons' ),
95
  'return_value' => 'yes',
96
- 'description' => __( 'You can customize this skill bar color from here or customize from Style tab', 'happy_addons' )
97
  ]
98
  );
99
 
100
  $repeater->add_control(
101
  'color',
102
  [
103
- 'label' => __( 'Text Color', 'happy_addons' ),
104
  'type' => Controls_Manager::COLOR,
105
  'selectors' => [
106
  '{{WRAPPER}} {{CURRENT_ITEM}} .ha-skill-info' => 'color: {{VALUE}}',
@@ -112,7 +112,7 @@ class Skills extends Base {
112
  $repeater->add_control(
113
  'level_color',
114
  [
115
- 'label' => __( 'Level Color', 'happy_addons' ),
116
  'type' => Controls_Manager::COLOR,
117
  'selectors' => [
118
  '{{WRAPPER}} {{CURRENT_ITEM}} .ha-skill-level' => 'background-color: {{VALUE}}',
@@ -124,7 +124,7 @@ class Skills extends Base {
124
  $repeater->add_control(
125
  'base_color',
126
  [
127
- 'label' => __( 'Base Color', 'happy_addons' ),
128
  'type' => Controls_Manager::COLOR,
129
  'selectors' => [
130
  '{{WRAPPER}} {{CURRENT_ITEM}}.ha-skill' => 'background-color: {{VALUE}}',
@@ -147,12 +147,12 @@ class Skills extends Base {
147
  'view',
148
  [
149
  'type' => Controls_Manager::SELECT,
150
- 'label' => __( 'Text Position', 'happy_addons' ),
151
  'separator' => 'before',
152
  'default' => 'inside',
153
  'options' => [
154
- 'inside' => __( 'Text Inside', 'happy_addons' ),
155
- 'outside' => __( 'Text Outside', 'happy_addons' ),
156
  ]
157
  ]
158
  );
@@ -164,7 +164,7 @@ class Skills extends Base {
164
  $this->start_controls_section(
165
  '_section_style_bars',
166
  [
167
- 'label' => __( 'Skill Bars', 'happy_addons' ),
168
  'tab' => Controls_Manager::TAB_STYLE,
169
  ]
170
  );
@@ -172,7 +172,7 @@ class Skills extends Base {
172
  $this->add_control(
173
  'height',
174
  [
175
- 'label' => __( 'Height', 'happy_addons' ),
176
  'type' => Controls_Manager::SLIDER,
177
  'size_units' => [ 'px' ],
178
  'range' => [
@@ -191,7 +191,7 @@ class Skills extends Base {
191
  $this->add_control(
192
  'spacing',
193
  [
194
- 'label' => __( 'Top Spacing', 'happy_addons' ),
195
  'type' => Controls_Manager::SLIDER,
196
  'size_units' => [ 'px' ],
197
  'range' => [
@@ -210,7 +210,7 @@ class Skills extends Base {
210
  $this->add_control(
211
  'border_radius',
212
  [
213
- 'label' => __( 'Border Radius', 'happy_addons' ),
214
  'type' => Controls_Manager::DIMENSIONS,
215
  'size_units' => [ 'px', '%' ],
216
  'selectors' => [
@@ -235,7 +235,7 @@ class Skills extends Base {
235
  $this->start_controls_section(
236
  '_section_content',
237
  [
238
- 'label' => __( 'Content', 'happy_addons' ),
239
  'tab' => Controls_Manager::TAB_STYLE,
240
  ]
241
  );
@@ -243,7 +243,7 @@ class Skills extends Base {
243
  $this->add_control(
244
  'color',
245
  [
246
- 'label' => __( 'Text Color', 'happy_addons' ),
247
  'type' => Controls_Manager::COLOR,
248
  'selectors' => [
249
  '{{WRAPPER}} .ha-skill-info' => 'color: {{VALUE}}',
@@ -254,7 +254,7 @@ class Skills extends Base {
254
  $this->add_control(
255
  'level_color',
256
  [
257
- 'label' => __( 'Level Color', 'happy_addons' ),
258
  'type' => Controls_Manager::COLOR,
259
  'selectors' => [
260
  '{{WRAPPER}} .ha-skill-level' => 'background-color: {{VALUE}}',
@@ -265,7 +265,7 @@ class Skills extends Base {
265
  $this->add_control(
266
  'base_color',
267
  [
268
- 'label' => __( 'Base Color', 'happy_addons' ),
269
  'type' => Controls_Manager::COLOR,
270
  'selectors' => [
271
  '{{WRAPPER}} .ha-skill' => 'background-color: {{VALUE}}',
26
  * @return string Widget title.
27
  */
28
  public function get_title() {
29
+ return __( 'Skill Bars', 'happy-elementor-addons' );
30
  }
31
 
32
  /**
49
  $this->start_controls_section(
50
  '_section_skills',
51
  [
52
+ 'label' => __( 'Skills', 'happy-elementor-addons' ),
53
  'tab' => Controls_Manager::TAB_CONTENT,
54
  ]
55
  );
60
  'name',
61
  [
62
  'type' => Controls_Manager::TEXT,
63
+ 'label' => __( 'Name', 'happy-elementor-addons' ),
64
+ 'default' => __( 'Happy Skill', 'happy-elementor-addons' ),
65
+ 'placeholder' => __( 'Type Happy Skill Name', 'happy-elementor-addons' ),
66
  ]
67
  );
68
 
69
  $repeater->add_control(
70
  'level',
71
  [
72
+ 'label' => __( 'Level (Out Of 100)', 'happy-elementor-addons' ),
73
  'type' => Controls_Manager::SLIDER,
74
  'default' => [
75
  'unit' => '%',
88
  $repeater->add_control(
89
  'customize',
90
  [
91
+ 'label' => __( 'Want To Customize?', 'happy-elementor-addons' ),
92
  'type' => Controls_Manager::SWITCHER,
93
+ 'label_on' => __( 'Yes', 'happy-elementor-addons' ),
94
+ 'label_off' => __( 'No', 'happy-elementor-addons' ),
95
  'return_value' => 'yes',
96
+ 'description' => __( 'You can customize this skill bar color from here or customize from Style tab', 'happy-elementor-addons' )
97
  ]
98
  );
99
 
100
  $repeater->add_control(
101
  'color',
102
  [
103
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
104
  'type' => Controls_Manager::COLOR,
105
  'selectors' => [
106
  '{{WRAPPER}} {{CURRENT_ITEM}} .ha-skill-info' => 'color: {{VALUE}}',
112
  $repeater->add_control(
113
  'level_color',
114
  [
115
+ 'label' => __( 'Level Color', 'happy-elementor-addons' ),
116
  'type' => Controls_Manager::COLOR,
117
  'selectors' => [
118
  '{{WRAPPER}} {{CURRENT_ITEM}} .ha-skill-level' => 'background-color: {{VALUE}}',
124
  $repeater->add_control(
125
  'base_color',
126
  [
127
+ 'label' => __( 'Base Color', 'happy-elementor-addons' ),
128
  'type' => Controls_Manager::COLOR,
129
  'selectors' => [
130
  '{{WRAPPER}} {{CURRENT_ITEM}}.ha-skill' => 'background-color: {{VALUE}}',
147
  'view',
148
  [
149
  'type' => Controls_Manager::SELECT,
150
+ 'label' => __( 'Text Position', 'happy-elementor-addons' ),
151
  'separator' => 'before',
152
  'default' => 'inside',
153
  'options' => [
154
+ 'inside' => __( 'Text Inside', 'happy-elementor-addons' ),
155
+ 'outside' => __( 'Text Outside', 'happy-elementor-addons' ),
156
  ]
157
  ]
158
  );
164
  $this->start_controls_section(
165
  '_section_style_bars',
166
  [
167
+ 'label' => __( 'Skill Bars', 'happy-elementor-addons' ),
168
  'tab' => Controls_Manager::TAB_STYLE,
169
  ]
170
  );
172
  $this->add_control(
173
  'height',
174
  [
175
+ 'label' => __( 'Height', 'happy-elementor-addons' ),
176
  'type' => Controls_Manager::SLIDER,
177
  'size_units' => [ 'px' ],
178
  'range' => [
191
  $this->add_control(
192
  'spacing',
193
  [
194
+ 'label' => __( 'Top Spacing', 'happy-elementor-addons' ),
195
  'type' => Controls_Manager::SLIDER,
196
  'size_units' => [ 'px' ],
197
  'range' => [
210
  $this->add_control(
211
  'border_radius',
212
  [
213
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
214
  'type' => Controls_Manager::DIMENSIONS,
215
  'size_units' => [ 'px', '%' ],
216
  'selectors' => [
235
  $this->start_controls_section(
236
  '_section_content',
237
  [
238
+ 'label' => __( 'Content', 'happy-elementor-addons' ),
239
  'tab' => Controls_Manager::TAB_STYLE,
240
  ]
241
  );
243
  $this->add_control(
244
  'color',
245
  [
246
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
247
  'type' => Controls_Manager::COLOR,
248
  'selectors' => [
249
  '{{WRAPPER}} .ha-skill-info' => 'color: {{VALUE}}',
254
  $this->add_control(
255
  'level_color',
256
  [
257
+ 'label' => __( 'Level Color', 'happy-elementor-addons' ),
258
  'type' => Controls_Manager::COLOR,
259
  'selectors' => [
260
  '{{WRAPPER}} .ha-skill-level' => 'background-color: {{VALUE}}',
265
  $this->add_control(
266
  'base_color',
267
  [
268
+ 'label' => __( 'Base Color', 'happy-elementor-addons' ),
269
  'type' => Controls_Manager::COLOR,
270
  'selectors' => [
271
  '{{WRAPPER}} .ha-skill' => 'background-color: {{VALUE}}',
widgets/weform/widget.php CHANGED
@@ -25,7 +25,7 @@ class WeForm extends Base {
25
  * @return string Widget title.
26
  */
27
  public function get_title() {
28
- return __( 'We Form', 'happy_addons' );
29
  }
30
 
31
  /**
@@ -41,7 +41,7 @@ class WeForm extends Base {
41
  }
42
 
43
  public function get_keywords() {
44
- return [ 'we form', 'caldera', 'wpf','wpform' , 'form', 'contact', 'cf7', 'contact form', 'gravity', 'ninja' ];
45
  }
46
 
47
  // Whether the reload preview is required or not.
@@ -53,7 +53,7 @@ class WeForm extends Base {
53
  $this->start_controls_section(
54
  '_section_weform',
55
  [
56
- 'label' => ha_is_weform_activated() ? __( 'We Form', 'happy_addons' ) : __( 'Notice', 'happy_addons' ),
57
  'tab' => Controls_Manager::TAB_CONTENT,
58
  ]
59
  );
@@ -64,9 +64,10 @@ class WeForm extends Base {
64
  [
65
  'type' => Controls_Manager::RAW_HTML,
66
  'raw' => sprintf(
67
- __( 'Hi, it seems %1$s is missing in your site. Please install and activate %1$s first.', 'happy_addons' ),
68
- '<a href="https://wordpress.org/plugins/weforms/" target="_blank" rel="noopener">We Form</a>'
69
- )
 
70
  ]
71
  );
72
  $this->end_controls_section();
@@ -76,10 +77,10 @@ class WeForm extends Base {
76
  $this->add_control(
77
  'form_id',
78
  [
79
- 'label' => __( 'Select Your Form', 'happy_addons' ),
80
  'type' => Controls_Manager::SELECT,
81
  'label_block' => true,
82
- 'options' => ['' => __( '', 'happy_addons' ) ] + \ha_get_we_forms(),
83
  ]
84
  );
85
 
@@ -90,7 +91,7 @@ class WeForm extends Base {
90
  $this->start_controls_section(
91
  '_section_fields_style',
92
  [
93
- 'label' => __( 'Form Fields', 'happy_addons' ),
94
  'tab' => Controls_Manager::TAB_STYLE,
95
  ]
96
  );
@@ -98,7 +99,7 @@ class WeForm extends Base {
98
  $this->add_responsive_control(
99
  'large_field_width',
100
  [
101
- 'label' => __( 'Large Field Width', 'happy_addons' ),
102
  'type' => Controls_Manager::SLIDER,
103
  'size_units' => [ 'px', '%' ],
104
  'default' => [
@@ -126,7 +127,7 @@ class WeForm extends Base {
126
  $this->add_responsive_control(
127
  'field_margin',
128
  [
129
- 'label' => __( 'Field Spacing', 'happy_addons' ),
130
  'type' => Controls_Manager::DIMENSIONS,
131
  'size_units' => [ 'px', '%' ],
132
  'selectors' => [
@@ -138,7 +139,7 @@ class WeForm extends Base {
138
  $this->add_responsive_control(
139
  'field_padding',
140
  [
141
- 'label' => __( 'Padding', 'happy_addons' ),
142
  'type' => Controls_Manager::DIMENSIONS,
143
  'size_units' => [ 'px', '%' ],
144
  'selectors' => [
@@ -151,7 +152,7 @@ class WeForm extends Base {
151
  $this->add_responsive_control(
152
  'field_border_radius',
153
  [
154
- 'label' => __( 'Border Radius', 'happy_addons' ),
155
  'type' => Controls_Manager::DIMENSIONS,
156
  'size_units' => [ 'px', '%' ],
157
  'selectors' => [
@@ -164,7 +165,7 @@ class WeForm extends Base {
164
  Group_Control_Typography::get_type(),
165
  [
166
  'name' => 'field_typography',
167
- 'label' => __( 'Typography', 'happy_addons' ),
168
  'selector' => '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:not(.weforms_submit_btn), .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea',
169
  ]
170
  );
@@ -172,7 +173,7 @@ class WeForm extends Base {
172
  $this->add_control(
173
  'field_textcolor',
174
  [
175
- 'label' => __( 'Field Text Color', 'happy_addons' ),
176
  'type' => Controls_Manager::COLOR,
177
  'selectors' => [
178
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea' => 'color: {{VALUE}};',
@@ -183,7 +184,7 @@ class WeForm extends Base {
183
  $this->add_control(
184
  'field_placeholder_color',
185
  [
186
- 'label' => __( 'Field Placeholder Color', 'happy_addons' ),
187
  'type' => Controls_Manager::COLOR,
188
  'selectors' => [
189
  '{{WRAPPER}} ::-webkit-input-placeholder' => 'color: {{VALUE}};',
@@ -198,7 +199,7 @@ class WeForm extends Base {
198
  $this->start_controls_tab(
199
  'tab_field_normal',
200
  [
201
- 'label' => __( 'Normal', 'happy_addons' ),
202
  ]
203
  );
204
 
@@ -221,7 +222,7 @@ class WeForm extends Base {
221
  $this->add_control(
222
  'field_bg_color',
223
  [
224
- 'label' => __( 'Background Color', 'happy_addons' ),
225
  'type' => Controls_Manager::COLOR,
226
  'selectors' => [
227
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea' => 'background-color: {{VALUE}}',
@@ -234,7 +235,7 @@ class WeForm extends Base {
234
  $this->start_controls_tab(
235
  'tab_field_focus',
236
  [
237
- 'label' => __( 'Focus', 'happy_addons' ),
238
  ]
239
  );
240
 
@@ -260,7 +261,7 @@ class WeForm extends Base {
260
  $this->add_control(
261
  'field_focus_bg_color',
262
  [
263
- 'label' => __( 'Background Color', 'happy_addons' ),
264
  'type' => Controls_Manager::COLOR,
265
  'selectors' => [
266
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:focus:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea:focus' => 'background-color: {{VALUE}}',
@@ -277,7 +278,7 @@ class WeForm extends Base {
277
  $this->start_controls_section(
278
  'we-form-label',
279
  [
280
- 'label' => __( 'Form Fields Label', 'happy_addons' ),
281
  'tab' => Controls_Manager::TAB_STYLE,
282
  ]
283
  );
@@ -285,7 +286,7 @@ class WeForm extends Base {
285
  $this->add_responsive_control(
286
  'label_margin',
287
  [
288
- 'label' => __( 'Margin', 'happy_addons' ),
289
  'type' => Controls_Manager::DIMENSIONS,
290
  'size_units' => [ 'px', '%' ],
291
  'selectors' => [
@@ -297,7 +298,7 @@ class WeForm extends Base {
297
  $this->add_responsive_control(
298
  'label_padding',
299
  [
300
- 'label' => __( 'Padding', 'happy_addons' ),
301
  'type' => Controls_Manager::DIMENSIONS,
302
  'size_units' => [ 'px', 'em', '%' ],
303
  'selectors' => [
@@ -318,7 +319,7 @@ class WeForm extends Base {
318
  Group_Control_Typography::get_type(),
319
  [
320
  'name' => 'label_typography',
321
- 'label' => __( 'Label Typography', 'happy_addons' ),
322
  'selector' => '{{WRAPPER}} .wpuf-label label, {{WRAPPER}} .wpuf-form-sub-label',
323
  ]
324
  );
@@ -327,7 +328,7 @@ class WeForm extends Base {
327
  Group_Control_Typography::get_type(),
328
  [
329
  'name' => 'desc_typography',
330
- 'label' => __( 'Help Text Typography', 'happy_addons' ),
331
  'selector' => '{{WRAPPER}} .wpuf-fields .wpuf-help',
332
  ]
333
  );
@@ -335,7 +336,7 @@ class WeForm extends Base {
335
  $this->add_control(
336
  'label_color',
337
  [
338
- 'label' => __( 'Label Text Color', 'happy_addons' ),
339
  'type' => Controls_Manager::COLOR,
340
  'selectors' => [
341
  '{{WRAPPER}} .wpuf-label label, {{WRAPPER}} .wpuf-form-sub-label' => 'color: {{VALUE}}',
@@ -346,7 +347,7 @@ class WeForm extends Base {
346
  $this->add_control(
347
  'requered_label',
348
  [
349
- 'label' => __( 'Required Label Color', 'happy_addons' ),
350
  'type' => Controls_Manager::COLOR,
351
  'selectors' => [
352
  '{{WRAPPER}} .wpuf-label .required' => 'color: {{VALUE}} !important',
@@ -357,7 +358,7 @@ class WeForm extends Base {
357
  $this->add_control(
358
  'desc_color',
359
  [
360
- 'label' => __( 'Help Text Color', 'happy_addons' ),
361
  'type' => Controls_Manager::COLOR,
362
  'selectors' => [
363
  '{{WRAPPER}} .wpuf-fields .wpuf-help' => 'color: {{VALUE}}',
@@ -370,7 +371,7 @@ class WeForm extends Base {
370
  $this->start_controls_section(
371
  'submit',
372
  [
373
- 'label' => __( 'Submit Button', 'happy_addons' ),
374
  'tab' => Controls_Manager::TAB_STYLE,
375
  ]
376
  );
@@ -378,10 +379,10 @@ class WeForm extends Base {
378
  $this->add_control(
379
  'submit_btn_width',
380
  [
381
- 'label' => __( 'Button Full Width?', 'happy_addons' ),
382
  'type' => Controls_Manager::SWITCHER,
383
- 'label_on' => __( 'Yes', 'happy_addons' ),
384
- 'label_off' => __( 'No', 'happy_addons' ),
385
  'return_value' => 'yes',
386
  'default' => 'yes',
387
  ]
@@ -390,7 +391,7 @@ class WeForm extends Base {
390
  $this->add_responsive_control(
391
  'button_width',
392
  [
393
- 'label' => __( 'Button Width', 'happy_addons' ),
394
  'type' => Controls_Manager::SLIDER,
395
  'size_units' => [ 'px', '%' ],
396
  'condition' => [
@@ -419,19 +420,19 @@ class WeForm extends Base {
419
  $this->add_responsive_control(
420
  'submit_btn_position',
421
  [
422
- 'label' => __( 'Button Position', 'happy_addons' ),
423
  'type' => Controls_Manager::CHOOSE,
424
  'options' => [
425
  'left' => [
426
- 'title' => __( 'Left', 'happy_addons' ),
427
  'icon' => 'eicon-h-align-left',
428
  ],
429
  'center' => [
430
- 'title' => __( 'Center', 'happy_addons' ),
431
  'icon' => 'eicon-h-align-center',
432
  ],
433
  'right' => [
434
- 'title' => __( 'Right', 'happy_addons' ),
435
  'icon' => 'eicon-h-align-right',
436
  ],
437
  ],
@@ -450,7 +451,7 @@ class WeForm extends Base {
450
  $this->add_responsive_control(
451
  'submit_margin',
452
  [
453
- 'label' => __( 'Margin', 'happy_addons' ),
454
  'type' => Controls_Manager::DIMENSIONS,
455
  'size_units' => [ 'px', '%' ],
456
  'selectors' => [
@@ -462,7 +463,7 @@ class WeForm extends Base {
462
  $this->add_responsive_control(
463
  'submit_padding',
464
  [
465
- 'label' => __( 'Padding', 'happy_addons' ),
466
  'type' => Controls_Manager::DIMENSIONS,
467
  'size_units' => [ 'px', 'em', '%' ],
468
  'selectors' => [
@@ -490,7 +491,7 @@ class WeForm extends Base {
490
  $this->add_control(
491
  'submit_border_radius',
492
  [
493
- 'label' => __( 'Border Radius', 'happy_addons' ),
494
  'type' => Controls_Manager::DIMENSIONS,
495
  'size_units' => [ 'px', '%' ],
496
  'selectors' => [
@@ -528,14 +529,14 @@ class WeForm extends Base {
528
  $this->start_controls_tab(
529
  'tab_button_normal',
530
  [
531
- 'label' => __( 'Normal', 'happy_addons' ),
532
  ]
533
  );
534
 
535
  $this->add_control(
536
  'submit_color',
537
  [
538
- 'label' => __( 'Text Color', 'happy_addons' ),
539
  'type' => Controls_Manager::COLOR,
540
  'default' => '',
541
  'selectors' => [
@@ -547,7 +548,7 @@ class WeForm extends Base {
547
  $this->add_control(
548
  'submit_bg_color',
549
  [
550
- 'label' => __( 'Background Color', 'happy_addons' ),
551
  'type' => Controls_Manager::COLOR,
552
  'selectors' => [
553
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]' => 'background-color: {{VALUE}};',
@@ -560,14 +561,14 @@ class WeForm extends Base {
560
  $this->start_controls_tab(
561
  'tab_button_hover',
562
  [
563
- 'label' => __( 'Hover', 'happy_addons' ),
564
  ]
565
  );
566
 
567
  $this->add_control(
568
  'submit_hover_color',
569
  [
570
- 'label' => __( 'Text Color', 'happy_addons' ),
571
  'type' => Controls_Manager::COLOR,
572
  'selectors' => [
573
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:hover, {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:focus' => 'color: {{VALUE}};',
@@ -578,7 +579,7 @@ class WeForm extends Base {
578
  $this->add_control(
579
  'submit_hover_bg_color',
580
  [
581
- 'label' => __( 'Background Color', 'happy_addons' ),
582
  'type' => Controls_Manager::COLOR,
583
  'selectors' => [
584
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:hover, {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:focus' => 'background-color: {{VALUE}};',
@@ -589,7 +590,7 @@ class WeForm extends Base {
589
  $this->add_control(
590
  'submit_hover_border_color',
591
  [
592
- 'label' => __( 'Border Color', 'happy_addons' ),
593
  'type' => Controls_Manager::COLOR,
594
  'selectors' => [
595
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:hover, {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:focus' => 'border-color: {{VALUE}};',
25
  * @return string Widget title.
26
  */
27
  public function get_title() {
28
+ return __( 'weForms', 'happy-elementor-addons' );
29
  }
30
 
31
  /**
41
  }
42
 
43
  public function get_keywords() {
44
+ return [ 'weForms', 'we forms', 'caldera', 'wpf','wpform', 'form', 'contact', 'cf7', 'contact form', 'gravity', 'ninja' ];
45
  }
46
 
47
  // Whether the reload preview is required or not.
53
  $this->start_controls_section(
54
  '_section_weform',
55
  [
56
+ 'label' => ha_is_weform_activated() ? __( 'weForms', 'happy-elementor-addons' ) : __( 'Notice', 'happy-elementor-addons' ),
57
  'tab' => Controls_Manager::TAB_CONTENT,
58
  ]
59
  );
64
  [
65
  'type' => Controls_Manager::RAW_HTML,
66
  'raw' => sprintf(
67
+ __( 'Hi, it seems %1$s is missing in your site. Please install and activate %1$s first.', 'happy-elementor-addons' ),
68
+ '<a href="https://wordpress.org/plugins/weforms/" target="_blank" rel="noopener">weForms</a>'
69
+ ),
70
+ 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning',
71
  ]
72
  );
73
  $this->end_controls_section();
77
  $this->add_control(
78
  'form_id',
79
  [
80
+ 'label' => __( 'Select Your Form', 'happy-elementor-addons' ),
81
  'type' => Controls_Manager::SELECT,
82
  'label_block' => true,
83
+ 'options' => ['' => __( '', 'happy-elementor-addons' ) ] + \ha_get_we_forms(),
84
  ]
85
  );
86
 
91
  $this->start_controls_section(
92
  '_section_fields_style',
93
  [
94
+ 'label' => __( 'Form Fields', 'happy-elementor-addons' ),
95
  'tab' => Controls_Manager::TAB_STYLE,
96
  ]
97
  );
99
  $this->add_responsive_control(
100
  'large_field_width',
101
  [
102
+ 'label' => __( 'Large Field Width', 'happy-elementor-addons' ),
103
  'type' => Controls_Manager::SLIDER,
104
  'size_units' => [ 'px', '%' ],
105
  'default' => [
127
  $this->add_responsive_control(
128
  'field_margin',
129
  [
130
+ 'label' => __( 'Field Spacing', 'happy-elementor-addons' ),
131
  'type' => Controls_Manager::DIMENSIONS,
132
  'size_units' => [ 'px', '%' ],
133
  'selectors' => [
139
  $this->add_responsive_control(
140
  'field_padding',
141
  [
142
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
143
  'type' => Controls_Manager::DIMENSIONS,
144
  'size_units' => [ 'px', '%' ],
145
  'selectors' => [
152
  $this->add_responsive_control(
153
  'field_border_radius',
154
  [
155
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
156
  'type' => Controls_Manager::DIMENSIONS,
157
  'size_units' => [ 'px', '%' ],
158
  'selectors' => [
165
  Group_Control_Typography::get_type(),
166
  [
167
  'name' => 'field_typography',
168
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
169
  'selector' => '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:not(.weforms_submit_btn), .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea',
170
  ]
171
  );
173
  $this->add_control(
174
  'field_textcolor',
175
  [
176
+ 'label' => __( 'Field Text Color', 'happy-elementor-addons' ),
177
  'type' => Controls_Manager::COLOR,
178
  'selectors' => [
179
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea' => 'color: {{VALUE}};',
184
  $this->add_control(
185
  'field_placeholder_color',
186
  [
187
+ 'label' => __( 'Field Placeholder Color', 'happy-elementor-addons' ),
188
  'type' => Controls_Manager::COLOR,
189
  'selectors' => [
190
  '{{WRAPPER}} ::-webkit-input-placeholder' => 'color: {{VALUE}};',
199
  $this->start_controls_tab(
200
  'tab_field_normal',
201
  [
202
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
203
  ]
204
  );
205
 
222
  $this->add_control(
223
  'field_bg_color',
224
  [
225
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
226
  'type' => Controls_Manager::COLOR,
227
  'selectors' => [
228
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea' => 'background-color: {{VALUE}}',
235
  $this->start_controls_tab(
236
  'tab_field_focus',
237
  [
238
+ 'label' => __( 'Focus', 'happy-elementor-addons' ),
239
  ]
240
  );
241
 
261
  $this->add_control(
262
  'field_focus_bg_color',
263
  [
264
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
265
  'type' => Controls_Manager::COLOR,
266
  'selectors' => [
267
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:focus:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea:focus' => 'background-color: {{VALUE}}',
278
  $this->start_controls_section(
279
  'we-form-label',
280
  [
281
+ 'label' => __( 'Form Fields Label', 'happy-elementor-addons' ),
282
  'tab' => Controls_Manager::TAB_STYLE,
283
  ]
284
  );
286
  $this->add_responsive_control(
287
  'label_margin',
288
  [
289
+ 'label' => __( 'Margin', 'happy-elementor-addons' ),
290
  'type' => Controls_Manager::DIMENSIONS,
291
  'size_units' => [ 'px', '%' ],
292
  'selectors' => [
298
  $this->add_responsive_control(
299
  'label_padding',
300
  [
301
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
302
  'type' => Controls_Manager::DIMENSIONS,
303
  'size_units' => [ 'px', 'em', '%' ],
304
  'selectors' => [
319
  Group_Control_Typography::get_type(),
320
  [
321
  'name' => 'label_typography',
322
+ 'label' => __( 'Label Typography', 'happy-elementor-addons' ),
323
  'selector' => '{{WRAPPER}} .wpuf-label label, {{WRAPPER}} .wpuf-form-sub-label',
324
  ]
325
  );
328
  Group_Control_Typography::get_type(),
329
  [
330
  'name' => 'desc_typography',
331
+ 'label' => __( 'Help Text Typography', 'happy-elementor-addons' ),
332
  'selector' => '{{WRAPPER}} .wpuf-fields .wpuf-help',
333
  ]
334
  );
336
  $this->add_control(
337
  'label_color',
338
  [
339
+ 'label' => __( 'Label Text Color', 'happy-elementor-addons' ),
340
  'type' => Controls_Manager::COLOR,
341
  'selectors' => [
342
  '{{WRAPPER}} .wpuf-label label, {{WRAPPER}} .wpuf-form-sub-label' => 'color: {{VALUE}}',
347
  $this->add_control(
348
  'requered_label',
349
  [
350
+ 'label' => __( 'Required Label Color', 'happy-elementor-addons' ),
351
  'type' => Controls_Manager::COLOR,
352
  'selectors' => [
353
  '{{WRAPPER}} .wpuf-label .required' => 'color: {{VALUE}} !important',
358
  $this->add_control(
359
  'desc_color',
360
  [
361
+ 'label' => __( 'Help Text Color', 'happy-elementor-addons' ),
362
  'type' => Controls_Manager::COLOR,
363
  'selectors' => [
364
  '{{WRAPPER}} .wpuf-fields .wpuf-help' => 'color: {{VALUE}}',
371
  $this->start_controls_section(
372
  'submit',
373
  [
374
+ 'label' => __( 'Submit Button', 'happy-elementor-addons' ),
375
  'tab' => Controls_Manager::TAB_STYLE,
376
  ]
377
  );
379
  $this->add_control(
380
  'submit_btn_width',
381
  [
382
+ 'label' => __( 'Button Full Width?', 'happy-elementor-addons' ),
383
  'type' => Controls_Manager::SWITCHER,
384
+ 'label_on' => __( 'Yes', 'happy-elementor-addons' ),
385
+ 'label_off' => __( 'No', 'happy-elementor-addons' ),
386
  'return_value' => 'yes',
387
  'default' => 'yes',
388
  ]
391
  $this->add_responsive_control(
392
  'button_width',
393
  [
394
+ 'label' => __( 'Button Width', 'happy-elementor-addons' ),
395
  'type' => Controls_Manager::SLIDER,
396
  'size_units' => [ 'px', '%' ],
397
  'condition' => [
420
  $this->add_responsive_control(
421
  'submit_btn_position',
422
  [
423
+ 'label' => __( 'Button Position', 'happy-elementor-addons' ),
424
  'type' => Controls_Manager::CHOOSE,
425
  'options' => [
426
  'left' => [
427
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
428
  'icon' => 'eicon-h-align-left',
429
  ],
430
  'center' => [
431
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
432
  'icon' => 'eicon-h-align-center',
433
  ],
434
  'right' => [
435
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
436
  'icon' => 'eicon-h-align-right',
437
  ],
438
  ],
451
  $this->add_responsive_control(
452
  'submit_margin',
453
  [
454
+ 'label' => __( 'Margin', 'happy-elementor-addons' ),
455
  'type' => Controls_Manager::DIMENSIONS,
456
  'size_units' => [ 'px', '%' ],
457
  'selectors' => [
463
  $this->add_responsive_control(
464
  'submit_padding',
465
  [
466
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
467
  'type' => Controls_Manager::DIMENSIONS,
468
  'size_units' => [ 'px', 'em', '%' ],
469
  'selectors' => [
491
  $this->add_control(
492
  'submit_border_radius',
493
  [
494
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
495
  'type' => Controls_Manager::DIMENSIONS,
496
  'size_units' => [ 'px', '%' ],
497
  'selectors' => [
529
  $this->start_controls_tab(
530
  'tab_button_normal',
531
  [
532
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
533
  ]
534
  );
535
 
536
  $this->add_control(
537
  'submit_color',
538
  [
539
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
540
  'type' => Controls_Manager::COLOR,
541
  'default' => '',
542
  'selectors' => [
548
  $this->add_control(
549
  'submit_bg_color',
550
  [
551
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
552
  'type' => Controls_Manager::COLOR,
553
  'selectors' => [
554
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]' => 'background-color: {{VALUE}};',
561
  $this->start_controls_tab(
562
  'tab_button_hover',
563
  [
564
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
565
  ]
566
  );
567
 
568
  $this->add_control(
569
  'submit_hover_color',
570
  [
571
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
572
  'type' => Controls_Manager::COLOR,
573
  'selectors' => [
574
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:hover, {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:focus' => 'color: {{VALUE}};',
579
  $this->add_control(
580
  'submit_hover_bg_color',
581
  [
582
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
583
  'type' => Controls_Manager::COLOR,
584
  'selectors' => [
585
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:hover, {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:focus' => 'background-color: {{VALUE}};',
590
  $this->add_control(
591
  'submit_hover_border_color',
592
  [
593
+ 'label' => __( 'Border Color', 'happy-elementor-addons' ),
594
  'type' => Controls_Manager::COLOR,
595
  'selectors' => [
596
  '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:hover, {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:focus' => 'border-color: {{VALUE}};',
widgets/wpform/widget.php CHANGED
@@ -24,7 +24,7 @@ class WPForm extends Base {
24
  * @return string Widget title.
25
  */
26
  public function get_title() {
27
- return __( 'WP Form', 'happy_addons' );
28
  }
29
 
30
  /**
@@ -47,7 +47,7 @@ class WPForm extends Base {
47
  $this->start_controls_section(
48
  '_section_wpf',
49
  [
50
- 'label' => ha_is_wpf_activated() ? __( 'WPForm', 'happy_addons' ) : __( 'Notice', 'happy_addons' ),
51
  'tab' => Controls_Manager::TAB_CONTENT,
52
  ]
53
  );
@@ -58,9 +58,10 @@ class WPForm extends Base {
58
  [
59
  'type' => Controls_Manager::RAW_HTML,
60
  'raw' => sprintf(
61
- __( 'Hi, it seems %1$s is missing in your site. Please install and activate %1$s first.', 'happy_addons' ),
62
  '<a href="https://wordpress.org/plugins/wpforms-lite/" target="_blank" rel="noopener">WPForms</a>'
63
- )
 
64
  ]
65
  );
66
  $this->end_controls_section();
@@ -70,10 +71,10 @@ class WPForm extends Base {
70
  $this->add_control(
71
  'form_id',
72
  [
73
- 'label' => __( 'Select Your Form', 'happy_addons' ),
74
  'type' => Controls_Manager::SELECT,
75
  'label_block' => true,
76
- 'options' => ['' => __( 'Select a WPForm', 'happy_addons' ) ] + \ha_get_wpforms(),
77
  ]
78
  );
79
 
@@ -84,7 +85,7 @@ class WPForm extends Base {
84
  $this->start_controls_section(
85
  '_section_fields_style',
86
  [
87
- 'label' => __( 'Form Fields', 'happy_addons' ),
88
  'tab' => Controls_Manager::TAB_STYLE,
89
  ]
90
  );
@@ -92,7 +93,7 @@ class WPForm extends Base {
92
  $this->add_responsive_control(
93
  'field_margin',
94
  [
95
- 'label' => __( 'Field Spacing', 'happy_addons' ),
96
  'type' => Controls_Manager::DIMENSIONS,
97
  'size_units' => [ 'px', '%' ],
98
  'selectors' => [
@@ -104,7 +105,7 @@ class WPForm extends Base {
104
  $this->add_responsive_control(
105
  'field_padding',
106
  [
107
- 'label' => __( 'Padding', 'happy_addons' ),
108
  'type' => Controls_Manager::DIMENSIONS,
109
  'size_units' => [ 'px', 'em', '%' ],
110
  'selectors' => [
@@ -116,7 +117,7 @@ class WPForm extends Base {
116
  $this->add_responsive_control(
117
  'field_border_radius',
118
  [
119
- 'label' => __( 'Border Radius', 'happy_addons' ),
120
  'type' => Controls_Manager::DIMENSIONS,
121
  'size_units' => [ 'px', '%' ],
122
  'selectors' => [
@@ -129,7 +130,7 @@ class WPForm extends Base {
129
  Group_Control_Typography::get_type(),
130
  [
131
  'name' => 'field_typography',
132
- 'label' => __( 'Typography', 'happy_addons' ),
133
  'selector' => '{{WRAPPER}} .wpforms-field input, {{WRAPPER}} .wpforms-field-textarea textarea',
134
  ]
135
  );
@@ -137,7 +138,7 @@ class WPForm extends Base {
137
  $this->add_control(
138
  'field_textcolor',
139
  [
140
- 'label' => __( 'Field Text Color', 'happy_addons' ),
141
  'type' => Controls_Manager::COLOR,
142
  'selectors' => [
143
  '{{WRAPPER}} .wpforms-field input, {{WRAPPER}} .wpforms-field-textarea textarea' => 'color: {{VALUE}}',
@@ -148,7 +149,7 @@ class WPForm extends Base {
148
  $this->add_control(
149
  'field_placeholder_color',
150
  [
151
- 'label' => __( 'Field Placeholder Color', 'happy_addons' ),
152
  'type' => Controls_Manager::COLOR,
153
  'selectors' => [
154
  '{{WRAPPER}} ::-webkit-input-placeholder' => 'color: {{VALUE}};',
@@ -163,7 +164,7 @@ class WPForm extends Base {
163
  $this->start_controls_tab(
164
  'tab_field_normal',
165
  [
166
- 'label' => __( 'Normal State', 'happy_addons' ),
167
  ]
168
  );
169
 
@@ -186,7 +187,7 @@ class WPForm extends Base {
186
  $this->add_control(
187
  'field_bg_color',
188
  [
189
- 'label' => __( 'Background Color', 'happy_addons' ),
190
  'type' => Controls_Manager::COLOR,
191
  'selectors' => [
192
  '{{WRAPPER}} .wpforms-field input, {{WRAPPER}} .wpforms-field-textarea textarea' => 'background-color: {{VALUE}}',
@@ -199,7 +200,7 @@ class WPForm extends Base {
199
  $this->start_controls_tab(
200
  'tab_field_focus',
201
  [
202
- 'label' => __( 'Focus', 'happy_addons' ),
203
  ]
204
  );
205
 
@@ -225,7 +226,7 @@ class WPForm extends Base {
225
  $this->add_control(
226
  'field_focus_bg_color',
227
  [
228
- 'label' => __( 'Background Color', 'happy_addons' ),
229
  'type' => Controls_Manager::COLOR,
230
  'selectors' => [
231
  '{{WRAPPER}} .wpforms-field input:focus, {{WRAPPER}} .wpforms-field-textarea textarea:focus' => 'background-color: {{VALUE}}',
@@ -241,7 +242,7 @@ class WPForm extends Base {
241
  $this->start_controls_section(
242
  'wpf-form-label',
243
  [
244
- 'label' => __( 'Form Fields Label', 'happy_addons' ),
245
  'tab' => Controls_Manager::TAB_STYLE,
246
  ]
247
  );
@@ -249,7 +250,7 @@ class WPForm extends Base {
249
  $this->add_responsive_control(
250
  'label_margin',
251
  [
252
- 'label' => __( 'Margin', 'happy_addons' ),
253
  'type' => Controls_Manager::DIMENSIONS,
254
  'size_units' => [ 'px', '%' ],
255
  'selectors' => [
@@ -261,7 +262,7 @@ class WPForm extends Base {
261
  $this->add_responsive_control(
262
  'label_padding',
263
  [
264
- 'label' => __( 'Padding', 'happy_addons' ),
265
  'type' => Controls_Manager::DIMENSIONS,
266
  'size_units' => [ 'px', 'em', '%' ],
267
  'selectors' => [
@@ -282,7 +283,7 @@ class WPForm extends Base {
282
  Group_Control_Typography::get_type(),
283
  [
284
  'name' => 'label_typography',
285
- 'label' => __( 'Label Typography', 'happy_addons' ),
286
  'selector' => '{{WRAPPER}} .wpforms-field-container label.wpforms-field-label',
287
  ]
288
  );
@@ -291,7 +292,7 @@ class WPForm extends Base {
291
  Group_Control_Typography::get_type(),
292
  [
293
  'name' => 'sublabel_typography',
294
- 'label' => __( 'Sub Label Typography', 'happy_addons' ),
295
  'selector' => '{{WRAPPER}} .wpforms-field-sublabel',
296
  ]
297
  );
@@ -300,7 +301,7 @@ class WPForm extends Base {
300
  Group_Control_Typography::get_type(),
301
  [
302
  'name' => 'desc_typography',
303
- 'label' => __( 'Description Typography', 'happy_addons' ),
304
  'selector' => '{{WRAPPER}} .wpforms-field-description',
305
  ]
306
  );
@@ -308,10 +309,10 @@ class WPForm extends Base {
308
  $this->add_control(
309
  'label_color_popover',
310
  [
311
- 'label' => __( 'Colors', 'happy_addons' ),
312
  'type' => Controls_Manager::POPOVER_TOGGLE,
313
- 'label_off' => __( '', 'happy_addons' ),
314
- 'label_on' => __( 'Custom', 'happy_addons' ),
315
  'return_value' => 'yes',
316
  ]
317
  );
@@ -321,7 +322,7 @@ class WPForm extends Base {
321
  $this->add_control(
322
  'label_color',
323
  [
324
- 'label' => __( 'Label Text Color', 'happy_addons' ),
325
  'type' => Controls_Manager::COLOR,
326
  'selectors' => [
327
  '{{WRAPPER}} .wpforms-field-container label.wpforms-field-label' => 'color: {{VALUE}}',
@@ -335,7 +336,7 @@ class WPForm extends Base {
335
  $this->add_control(
336
  'requered_label',
337
  [
338
- 'label' => __( 'Required Label Color', 'happy_addons' ),
339
  'type' => Controls_Manager::COLOR,
340
  'selectors' => [
341
  '{{WRAPPER}} .wpforms-required-label' => 'color: {{VALUE}}',
@@ -349,7 +350,7 @@ class WPForm extends Base {
349
  $this->add_control(
350
  'sublabel_color',
351
  [
352
- 'label' => __( 'Sub Label Text Color', 'happy_addons' ),
353
  'type' => Controls_Manager::COLOR,
354
  'selectors' => [
355
  '{{WRAPPER}} .wpforms-field-sublabel' => 'color: {{VALUE}}',
@@ -363,7 +364,7 @@ class WPForm extends Base {
363
  $this->add_control(
364
  'desc_label_color',
365
  [
366
- 'label' => __( 'Description Text Color', 'happy_addons' ),
367
  'type' => Controls_Manager::COLOR,
368
  'selectors' => [
369
  '{{WRAPPER}} .wpforms-field-description' => 'color: {{VALUE}}',
@@ -381,7 +382,7 @@ class WPForm extends Base {
381
  $this->start_controls_section(
382
  'submit',
383
  [
384
- 'label' => __( 'Submit Button', 'happy_addons' ),
385
  'tab' => Controls_Manager::TAB_STYLE,
386
  ]
387
  );
@@ -389,10 +390,10 @@ class WPForm extends Base {
389
  $this->add_control(
390
  'submit_btn_width',
391
  [
392
- 'label' => __( 'Button Full Width?', 'happy_addons' ),
393
  'type' => Controls_Manager::SWITCHER,
394
- 'label_on' => __( 'Yes', 'happy_addons' ),
395
- 'label_off' => __( 'No', 'happy_addons' ),
396
  'return_value' => 'yes',
397
  'default' => 'yes',
398
  ]
@@ -401,7 +402,7 @@ class WPForm extends Base {
401
  $this->add_responsive_control(
402
  'button_width',
403
  [
404
- 'label' => __( 'Button Width', 'happy_addons' ),
405
  'type' => Controls_Manager::SLIDER,
406
  'size_units' => [ 'px', '%' ],
407
  'condition' => [
@@ -430,19 +431,19 @@ class WPForm extends Base {
430
  $this->add_responsive_control(
431
  'submit_btn_position',
432
  [
433
- 'label' => __( 'Button Position', 'happy_addons' ),
434
  'type' => Controls_Manager::CHOOSE,
435
  'options' => [
436
  'left' => [
437
- 'title' => __( 'Left', 'happy_addons' ),
438
  'icon' => 'eicon-h-align-left',
439
  ],
440
  'center' => [
441
- 'title' => __( 'Center', 'happy_addons' ),
442
  'icon' => 'eicon-h-align-center',
443
  ],
444
  'right' => [
445
- 'title' => __( 'Right', 'happy_addons' ),
446
  'icon' => 'eicon-h-align-right',
447
  ],
448
  ],
@@ -462,7 +463,7 @@ class WPForm extends Base {
462
  $this->add_responsive_control(
463
  'submit_margin',
464
  [
465
- 'label' => __( 'Margin', 'happy_addons' ),
466
  'type' => Controls_Manager::DIMENSIONS,
467
  'size_units' => [ 'px', '%' ],
468
  'selectors' => [
@@ -474,7 +475,7 @@ class WPForm extends Base {
474
  $this->add_responsive_control(
475
  'submit_padding',
476
  [
477
- 'label' => __( 'Padding', 'happy_addons' ),
478
  'type' => Controls_Manager::DIMENSIONS,
479
  'size_units' => [ 'px', 'em', '%' ],
480
  'selectors' => [
@@ -502,7 +503,7 @@ class WPForm extends Base {
502
  $this->add_control(
503
  'submit_border_radius',
504
  [
505
- 'label' => __( 'Border Radius', 'happy_addons' ),
506
  'type' => Controls_Manager::DIMENSIONS,
507
  'size_units' => [ 'px', '%' ],
508
  'selectors' => [
@@ -532,14 +533,14 @@ class WPForm extends Base {
532
  $this->start_controls_tab(
533
  'tab_button_normal',
534
  [
535
- 'label' => __( 'Normal', 'happy_addons' ),
536
  ]
537
  );
538
 
539
  $this->add_control(
540
  'submit_color',
541
  [
542
- 'label' => __( 'Text Color', 'happy_addons' ),
543
  'type' => Controls_Manager::COLOR,
544
  'default' => '',
545
  'selectors' => [
@@ -551,7 +552,7 @@ class WPForm extends Base {
551
  $this->add_control(
552
  'submit_bg_color',
553
  [
554
- 'label' => __( 'Background Color', 'happy_addons' ),
555
  'type' => Controls_Manager::COLOR,
556
  'selectors' => [
557
  '{{WRAPPER}} .wpforms-submit' => 'background-color: {{VALUE}};',
@@ -564,14 +565,14 @@ class WPForm extends Base {
564
  $this->start_controls_tab(
565
  'tab_button_hover',
566
  [
567
- 'label' => __( 'Hover', 'happy_addons' ),
568
  ]
569
  );
570
 
571
  $this->add_control(
572
  'submit_hover_color',
573
  [
574
- 'label' => __( 'Text Color', 'happy_addons' ),
575
  'type' => Controls_Manager::COLOR,
576
  'selectors' => [
577
  '{{WRAPPER}} .wpforms-submit:hover, {{WRAPPER}} .wpforms-submit:focus' => 'color: {{VALUE}};',
@@ -582,7 +583,7 @@ class WPForm extends Base {
582
  $this->add_control(
583
  'submit_hover_bg_color',
584
  [
585
- 'label' => __( 'Background Color', 'happy_addons' ),
586
  'type' => Controls_Manager::COLOR,
587
  'selectors' => [
588
  '{{WRAPPER}} .wpforms-submit:hover, {{WRAPPER}} .wpforms-submit:focus' => 'background-color: {{VALUE}};',
@@ -593,7 +594,7 @@ class WPForm extends Base {
593
  $this->add_control(
594
  'submit_hover_border_color',
595
  [
596
- 'label' => __( 'Border Color', 'happy_addons' ),
597
  'type' => Controls_Manager::COLOR,
598
  'selectors' => [
599
  '{{WRAPPER}} .wpforms-submit:hover, {{WRAPPER}} .wpforms-submit:focus' => 'border-color: {{VALUE}};',
24
  * @return string Widget title.
25
  */
26
  public function get_title() {
27
+ return __( 'WPForms', 'happy-elementor-addons' );
28
  }
29
 
30
  /**
47
  $this->start_controls_section(
48
  '_section_wpf',
49
  [
50
+ 'label' => ha_is_wpf_activated() ? __( 'WPForms', 'happy-elementor-addons' ) : __( 'Notice', 'happy-elementor-addons' ),
51
  'tab' => Controls_Manager::TAB_CONTENT,
52
  ]
53
  );
58
  [
59
  'type' => Controls_Manager::RAW_HTML,
60
  'raw' => sprintf(
61
+ __( 'Hi, it seems %1$s is missing in your site. Please install and activate %1$s first.', 'happy-elementor-addons' ),
62
  '<a href="https://wordpress.org/plugins/wpforms-lite/" target="_blank" rel="noopener">WPForms</a>'
63
+ ),
64
+ 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning',
65
  ]
66
  );
67
  $this->end_controls_section();
71
  $this->add_control(
72
  'form_id',
73
  [
74
+ 'label' => __( 'Select Your Form', 'happy-elementor-addons' ),
75
  'type' => Controls_Manager::SELECT,
76
  'label_block' => true,
77
+ 'options' => ['' => __( 'Select a WPForm', 'happy-elementor-addons' ) ] + \ha_get_wpforms(),
78
  ]
79
  );
80
 
85
  $this->start_controls_section(
86
  '_section_fields_style',
87
  [
88
+ 'label' => __( 'Form Fields', 'happy-elementor-addons' ),
89
  'tab' => Controls_Manager::TAB_STYLE,
90
  ]
91
  );
93
  $this->add_responsive_control(
94
  'field_margin',
95
  [
96
+ 'label' => __( 'Field Spacing', 'happy-elementor-addons' ),
97
  'type' => Controls_Manager::DIMENSIONS,
98
  'size_units' => [ 'px', '%' ],
99
  'selectors' => [
105
  $this->add_responsive_control(
106
  'field_padding',
107
  [
108
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
109
  'type' => Controls_Manager::DIMENSIONS,
110
  'size_units' => [ 'px', 'em', '%' ],
111
  'selectors' => [
117
  $this->add_responsive_control(
118
  'field_border_radius',
119
  [
120
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
121
  'type' => Controls_Manager::DIMENSIONS,
122
  'size_units' => [ 'px', '%' ],
123
  'selectors' => [
130
  Group_Control_Typography::get_type(),
131
  [
132
  'name' => 'field_typography',
133
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
134
  'selector' => '{{WRAPPER}} .wpforms-field input, {{WRAPPER}} .wpforms-field-textarea textarea',
135
  ]
136
  );
138
  $this->add_control(
139
  'field_textcolor',
140
  [
141
+ 'label' => __( 'Field Text Color', 'happy-elementor-addons' ),
142
  'type' => Controls_Manager::COLOR,
143
  'selectors' => [
144
  '{{WRAPPER}} .wpforms-field input, {{WRAPPER}} .wpforms-field-textarea textarea' => 'color: {{VALUE}}',
149
  $this->add_control(
150
  'field_placeholder_color',
151
  [
152
+ 'label' => __( 'Field Placeholder Color', 'happy-elementor-addons' ),
153
  'type' => Controls_Manager::COLOR,
154
  'selectors' => [
155
  '{{WRAPPER}} ::-webkit-input-placeholder' => 'color: {{VALUE}};',
164
  $this->start_controls_tab(
165
  'tab_field_normal',
166
  [
167
+ 'label' => __( 'Normal State', 'happy-elementor-addons' ),
168
  ]
169
  );
170
 
187
  $this->add_control(
188
  'field_bg_color',
189
  [
190
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
191
  'type' => Controls_Manager::COLOR,
192
  'selectors' => [
193
  '{{WRAPPER}} .wpforms-field input, {{WRAPPER}} .wpforms-field-textarea textarea' => 'background-color: {{VALUE}}',
200
  $this->start_controls_tab(
201
  'tab_field_focus',
202
  [
203
+ 'label' => __( 'Focus', 'happy-elementor-addons' ),
204
  ]
205
  );
206
 
226
  $this->add_control(
227
  'field_focus_bg_color',
228
  [
229
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
230
  'type' => Controls_Manager::COLOR,
231
  'selectors' => [
232
  '{{WRAPPER}} .wpforms-field input:focus, {{WRAPPER}} .wpforms-field-textarea textarea:focus' => 'background-color: {{VALUE}}',
242
  $this->start_controls_section(
243
  'wpf-form-label',
244
  [
245
+ 'label' => __( 'Form Fields Label', 'happy-elementor-addons' ),
246
  'tab' => Controls_Manager::TAB_STYLE,
247
  ]
248
  );
250
  $this->add_responsive_control(
251
  'label_margin',
252
  [
253
+ 'label' => __( 'Margin', 'happy-elementor-addons' ),
254
  'type' => Controls_Manager::DIMENSIONS,
255
  'size_units' => [ 'px', '%' ],
256
  'selectors' => [
262
  $this->add_responsive_control(
263
  'label_padding',
264
  [
265
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
266
  'type' => Controls_Manager::DIMENSIONS,
267
  'size_units' => [ 'px', 'em', '%' ],
268
  'selectors' => [
283
  Group_Control_Typography::get_type(),
284
  [
285
  'name' => 'label_typography',
286
+ 'label' => __( 'Label Typography', 'happy-elementor-addons' ),
287
  'selector' => '{{WRAPPER}} .wpforms-field-container label.wpforms-field-label',
288
  ]
289
  );
292
  Group_Control_Typography::get_type(),
293
  [
294
  'name' => 'sublabel_typography',
295
+ 'label' => __( 'Sub Label Typography', 'happy-elementor-addons' ),
296
  'selector' => '{{WRAPPER}} .wpforms-field-sublabel',
297
  ]
298
  );
301
  Group_Control_Typography::get_type(),
302
  [
303
  'name' => 'desc_typography',
304
+ 'label' => __( 'Description Typography', 'happy-elementor-addons' ),
305
  'selector' => '{{WRAPPER}} .wpforms-field-description',
306
  ]
307
  );
309
  $this->add_control(
310
  'label_color_popover',
311
  [
312
+ 'label' => __( 'Colors', 'happy-elementor-addons' ),
313
  'type' => Controls_Manager::POPOVER_TOGGLE,
314
+ 'label_off' => __( '', 'happy-elementor-addons' ),
315
+ 'label_on' => __( 'Custom', 'happy-elementor-addons' ),
316
  'return_value' => 'yes',
317
  ]
318
  );
322
  $this->add_control(
323
  'label_color',
324
  [
325
+ 'label' => __( 'Label Text Color', 'happy-elementor-addons' ),
326
  'type' => Controls_Manager::COLOR,
327
  'selectors' => [
328
  '{{WRAPPER}} .wpforms-field-container label.wpforms-field-label' => 'color: {{VALUE}}',
336
  $this->add_control(
337
  'requered_label',
338
  [
339
+ 'label' => __( 'Required Label Color', 'happy-elementor-addons' ),
340
  'type' => Controls_Manager::COLOR,
341
  'selectors' => [
342
  '{{WRAPPER}} .wpforms-required-label' => 'color: {{VALUE}}',
350
  $this->add_control(
351
  'sublabel_color',
352
  [
353
+ 'label' => __( 'Sub Label Text Color', 'happy-elementor-addons' ),
354
  'type' => Controls_Manager::COLOR,
355
  'selectors' => [
356
  '{{WRAPPER}} .wpforms-field-sublabel' => 'color: {{VALUE}}',
364
  $this->add_control(
365
  'desc_label_color',
366
  [
367
+ 'label' => __( 'Description Text Color', 'happy-elementor-addons' ),
368
  'type' => Controls_Manager::COLOR,
369
  'selectors' => [
370
  '{{WRAPPER}} .wpforms-field-description' => 'color: {{VALUE}}',
382
  $this->start_controls_section(
383
  'submit',
384
  [
385
+ 'label' => __( 'Submit Button', 'happy-elementor-addons' ),
386
  'tab' => Controls_Manager::TAB_STYLE,
387
  ]
388
  );
390
  $this->add_control(
391
  'submit_btn_width',
392
  [
393
+ 'label' => __( 'Button Full Width?', 'happy-elementor-addons' ),
394
  'type' => Controls_Manager::SWITCHER,
395
+ 'label_on' => __( 'Yes', 'happy-elementor-addons' ),
396
+ 'label_off' => __( 'No', 'happy-elementor-addons' ),
397
  'return_value' => 'yes',
398
  'default' => 'yes',
399
  ]
402
  $this->add_responsive_control(
403
  'button_width',
404
  [
405
+ 'label' => __( 'Button Width', 'happy-elementor-addons' ),
406
  'type' => Controls_Manager::SLIDER,
407
  'size_units' => [ 'px', '%' ],
408
  'condition' => [
431
  $this->add_responsive_control(
432
  'submit_btn_position',
433
  [
434
+ 'label' => __( 'Button Position', 'happy-elementor-addons' ),
435
  'type' => Controls_Manager::CHOOSE,
436
  'options' => [
437
  'left' => [
438
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
439
  'icon' => 'eicon-h-align-left',
440
  ],
441
  'center' => [
442
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
443
  'icon' => 'eicon-h-align-center',
444
  ],
445
  'right' => [
446
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
447
  'icon' => 'eicon-h-align-right',
448
  ],
449
  ],
463
  $this->add_responsive_control(
464
  'submit_margin',
465
  [
466
+ 'label' => __( 'Margin', 'happy-elementor-addons' ),
467
  'type' => Controls_Manager::DIMENSIONS,
468
  'size_units' => [ 'px', '%' ],
469
  'selectors' => [
475
  $this->add_responsive_control(
476
  'submit_padding',
477
  [
478
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
479
  'type' => Controls_Manager::DIMENSIONS,
480
  'size_units' => [ 'px', 'em', '%' ],
481
  'selectors' => [
503
  $this->add_control(
504
  'submit_border_radius',
505
  [
506
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
507
  'type' => Controls_Manager::DIMENSIONS,
508
  'size_units' => [ 'px', '%' ],
509
  'selectors' => [
533
  $this->start_controls_tab(
534
  'tab_button_normal',
535
  [
536
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
537
  ]
538
  );
539
 
540
  $this->add_control(
541
  'submit_color',
542
  [
543
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
544
  'type' => Controls_Manager::COLOR,
545
  'default' => '',
546
  'selectors' => [
552
  $this->add_control(
553
  'submit_bg_color',
554
  [
555
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
556
  'type' => Controls_Manager::COLOR,
557
  'selectors' => [
558
  '{{WRAPPER}} .wpforms-submit' => 'background-color: {{VALUE}};',
565
  $this->start_controls_tab(
566
  'tab_button_hover',
567
  [
568
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
569
  ]
570
  );
571
 
572
  $this->add_control(
573
  'submit_hover_color',
574
  [
575
+ 'label' => __( 'Text Color', 'happy-elementor-addons' ),
576
  'type' => Controls_Manager::COLOR,
577
  'selectors' => [
578
  '{{WRAPPER}} .wpforms-submit:hover, {{WRAPPER}} .wpforms-submit:focus' => 'color: {{VALUE}};',
583
  $this->add_control(
584
  'submit_hover_bg_color',
585
  [
586
+ 'label' => __( 'Background Color', 'happy-elementor-addons' ),
587
  'type' => Controls_Manager::COLOR,
588
  'selectors' => [
589
  '{{WRAPPER}} .wpforms-submit:hover, {{WRAPPER}} .wpforms-submit:focus' => 'background-color: {{VALUE}};',
594
  $this->add_control(
595
  'submit_hover_border_color',
596
  [
597
+ 'label' => __( 'Border Color', 'happy-elementor-addons' ),
598
  'type' => Controls_Manager::COLOR,
599
  'selectors' => [
600
  '{{WRAPPER}} .wpforms-submit:hover, {{WRAPPER}} .wpforms-submit:focus' => 'border-color: {{VALUE}};',