Version Description
1 August 2019 =
New: On demand asset loading
New: On demand cached asset cleaning
New: Step Flow Widget
New: Calendly Widget
New: Flip Box Widget
New: Pricing Table Widget
Update: Added animated number support to Number Widget
Update: Added progress animation to Skill Bars Widget
Update: Various widgets default styles
Fix: Various responsive issue
Download this release
Release Info
Developer | thehappymonster |
Plugin | Happy Addons for Elementor (Mega Menu, Post Grid, Woocommerce Product Grid, Table, Event Calendar, Slider Elementor Widget) |
Version | 1.4.0 |
Comparing to | |
See all releases |
Code changes from version 1.3.1 to 1.4.0
- assets/admin/css/admin-bar.css +54 -0
- assets/admin/css/dashboard.css +0 -139
- assets/admin/css/main.css +27 -0
- assets/admin/css/main.min.css +1 -1
- assets/admin/js/admin-bar.js +30 -0
- assets/css/main.css +1151 -24
- assets/css/main.min.css +1 -1
- assets/css/widgets/btn.min.css +1 -0
- assets/css/widgets/card.min.css +1 -0
- assets/css/widgets/common.min.css +1 -0
- assets/css/widgets/dual-btn.min.css +1 -0
- assets/css/widgets/flip-box.min.css +1 -0
- assets/css/widgets/gallery-filter.min.css +1 -0
- assets/css/widgets/gradient-heading.min.css +1 -0
- assets/css/widgets/hover-box.min.css +1 -0
- assets/css/widgets/icon-box.min.css +1 -0
- assets/css/widgets/image-comparison.min.css +1 -0
- assets/css/widgets/infobox.min.css +1 -0
- assets/css/widgets/justified-gallery.min.css +1 -0
- assets/css/widgets/logo-grid.min.css +1 -0
- assets/css/widgets/member.min.css +1 -0
- assets/css/widgets/number.min.css +1 -0
- assets/css/widgets/pricing-table.min.css +1 -0
- assets/css/widgets/review.min.css +1 -0
- assets/css/widgets/skills.min.css +1 -0
- assets/css/widgets/slider-carousel.min.css +1 -0
- assets/css/widgets/steps-flow.min.css +1 -0
- assets/css/widgets/testimonial.min.css +1 -0
- assets/js/happy-addons.js +36 -4
- assets/js/happy-addons.min.js +1 -1
- base.php +13 -1
- base/widget-base.php +46 -0
- classes/admin-bar.php +100 -0
- classes/asset-manager.php +110 -53
- classes/class.ondemand-loader.php +246 -0
- classes/widget-manager.php +284 -34
- inc/functions.php +36 -0
- plugin.php +1 -1
- readme.txt +19 -2
- widgets/calendly/widget.php +180 -0
- widgets/flip-box/widget.php +1181 -0
- widgets/icon-box/widget.php +3 -1
- widgets/justified-gallery/widget.php +1 -1
- widgets/number/widget.php +183 -174
- widgets/pricing-table/widget.php +967 -0
- widgets/skills/widget.php +29 -8
- widgets/step-flow/widget.php +598 -0
assets/admin/css/admin-bar.css
ADDED
@@ -0,0 +1,54 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
#wpadminbar #wp-admin-bar-happy-addons > .ab-item::before {
|
2 |
+
content: "\f328";
|
3 |
+
font-family: dashicons;
|
4 |
+
top: 3px;
|
5 |
+
font-size: 18px;
|
6 |
+
}
|
7 |
+
|
8 |
+
#wp-admin-bar-happy-addons .ab-item .dashicons {
|
9 |
+
font-size: 16px;
|
10 |
+
display: inline-block;
|
11 |
+
font-family: dashicons;
|
12 |
+
font-size: inherit;
|
13 |
+
font-weight: normal;
|
14 |
+
font-style: normal;
|
15 |
+
font-variant: normal;
|
16 |
+
line-height: 1;
|
17 |
+
text-rendering: auto;
|
18 |
+
-webkit-font-smoothing: antialiased;
|
19 |
+
-moz-osx-font-smoothing: grayscale;
|
20 |
+
top: 7px;
|
21 |
+
position: relative;
|
22 |
+
}
|
23 |
+
|
24 |
+
#wp-admin-bar-happy-addons .ab-item .dashicons-update-alt:before {
|
25 |
+
content: "\f113";
|
26 |
+
}
|
27 |
+
|
28 |
+
#wp-admin-bar-happy-addons .ha-clear-cache--done .ab-item > i {
|
29 |
+
color: #46b450;
|
30 |
+
}
|
31 |
+
|
32 |
+
#wp-admin-bar-happy-addons .ha-clear-cache--init .ab-item > i {
|
33 |
+
-webkit-animation: ha-inifinite-rotate .5s infinite linear;
|
34 |
+
animation: ha-inifinite-rotate .5s infinite linear;
|
35 |
+
}
|
36 |
+
|
37 |
+
@-webkit-keyframes ha-inifinite-rotate {
|
38 |
+
from {
|
39 |
+
-webkit-transform: rotate(0deg);
|
40 |
+
}
|
41 |
+
to {
|
42 |
+
-webkit-transform: rotate(359deg);
|
43 |
+
}
|
44 |
+
}
|
45 |
+
|
46 |
+
@keyframes ha-inifinite-rotate {
|
47 |
+
from {
|
48 |
+
transform: rotate(0deg);
|
49 |
+
}
|
50 |
+
to {
|
51 |
+
transform: rotate(359deg);
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
assets/admin/css/dashboard.css
DELETED
@@ -1,139 +0,0 @@
|
|
1 |
-
.happy-settings {
|
2 |
-
padding: 15px;
|
3 |
-
}
|
4 |
-
.happy-settings .ha-settings-tab {
|
5 |
-
background-color: #fff;
|
6 |
-
position: relative;
|
7 |
-
padding: 10px 10px 20px 10px;
|
8 |
-
}
|
9 |
-
.happy-settings .row {
|
10 |
-
width: 100%;
|
11 |
-
height: auto;
|
12 |
-
display: flex;
|
13 |
-
flex-flow: row wrap;
|
14 |
-
justify-content: space-between;
|
15 |
-
align-content: flex-start;
|
16 |
-
}
|
17 |
-
.happy-settings .ha-container {
|
18 |
-
width: 100%;
|
19 |
-
height: auto;
|
20 |
-
}
|
21 |
-
.happy-settings .ha-container p.ha-elements-control-notice {
|
22 |
-
margin: 10px 0 15px 10px;
|
23 |
-
}
|
24 |
-
.happy-settings #widgets .checkbox-wrapper {
|
25 |
-
display: flex;
|
26 |
-
flex-flow: row wrap;
|
27 |
-
align-items: center;
|
28 |
-
}
|
29 |
-
.happy-settings #widgets .ha-checkbox {
|
30 |
-
display: flex;
|
31 |
-
flex-direction: row;
|
32 |
-
flex: 0 0 250px;
|
33 |
-
align-items: center;
|
34 |
-
justify-content: space-between;
|
35 |
-
font-size: 18px;
|
36 |
-
margin: 10px 40px 10px 10px;
|
37 |
-
border-radius: 3px;
|
38 |
-
box-shadow: 1px 1px 6px 1px rgba(80,80,80,0.1);
|
39 |
-
padding: 15px;
|
40 |
-
}
|
41 |
-
|
42 |
-
.ha-switch {
|
43 |
-
position: relative;
|
44 |
-
display: inline-block;
|
45 |
-
width: 50px;
|
46 |
-
height: 30px;
|
47 |
-
}
|
48 |
-
.ha-switch input {
|
49 |
-
opacity: 0;
|
50 |
-
width: 0;
|
51 |
-
height: 0;
|
52 |
-
}
|
53 |
-
|
54 |
-
.ha-slider {
|
55 |
-
position: absolute;
|
56 |
-
cursor: pointer;
|
57 |
-
top: 0;
|
58 |
-
left: 0;
|
59 |
-
right: 0;
|
60 |
-
bottom: 0;
|
61 |
-
background-color: #ccc;
|
62 |
-
-webkit-transition: .4s;
|
63 |
-
transition: .4s;
|
64 |
-
}
|
65 |
-
|
66 |
-
.ha-slider:before {
|
67 |
-
content: "";
|
68 |
-
position: absolute;
|
69 |
-
height: 23px;
|
70 |
-
width: 23px;
|
71 |
-
left: 0px;
|
72 |
-
bottom: 4px;
|
73 |
-
background-color: white;
|
74 |
-
-webkit-transition: .4s;
|
75 |
-
transition: .4s;
|
76 |
-
}
|
77 |
-
|
78 |
-
.ha-switch input:checked + .ha-slider {
|
79 |
-
background-color: #562dd4;
|
80 |
-
}
|
81 |
-
|
82 |
-
.ha-switch input:focus + .ha-slider {
|
83 |
-
box-shadow: 0 0 1px #2196F3;
|
84 |
-
}
|
85 |
-
.ha-switch input + .ha-slider:before {
|
86 |
-
-webkit-transform: translateX(4px);
|
87 |
-
-ms-transform: translateX(4px);
|
88 |
-
transform: translateX(4px);
|
89 |
-
}
|
90 |
-
.ha-switch input:checked + .ha-slider:before {
|
91 |
-
-webkit-transform: translateX(22px);
|
92 |
-
-ms-transform: translateX(22px);
|
93 |
-
transform: translateX(22px);
|
94 |
-
}
|
95 |
-
|
96 |
-
/* Rounded sliders */
|
97 |
-
.ha-slider.round {
|
98 |
-
border-radius: 34px;
|
99 |
-
}
|
100 |
-
.ha-slider.round:before {
|
101 |
-
border-radius: 50%;
|
102 |
-
}
|
103 |
-
|
104 |
-
/* save button */
|
105 |
-
.ha-button-wrap {
|
106 |
-
display: flex;
|
107 |
-
flex-direction: row;
|
108 |
-
align-items: center;
|
109 |
-
justify-content: space-between;
|
110 |
-
padding: 20px;
|
111 |
-
margin-top: 20px;
|
112 |
-
background: #fff;
|
113 |
-
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
|
114 |
-
}
|
115 |
-
.brand {
|
116 |
-
font-size: 22px;
|
117 |
-
text-transform: capitalize;
|
118 |
-
color: #fff;
|
119 |
-
font-weight: 500;
|
120 |
-
margin: 0px;
|
121 |
-
background: linear-gradient(90deg, #e2498a 0%, #562dd4 100%);
|
122 |
-
padding: 10px;
|
123 |
-
}
|
124 |
-
button.ha-save-button {
|
125 |
-
font-size: 16px;
|
126 |
-
text-transform: capitalize;
|
127 |
-
padding: 12px 18px;
|
128 |
-
border-radius: 4px;
|
129 |
-
border: none;
|
130 |
-
background-color: #e2498a;
|
131 |
-
box-shadow: 0 1px 0 #8a0d42;
|
132 |
-
color: #fff;
|
133 |
-
transition: background-color .4s, transform .4s;
|
134 |
-
}
|
135 |
-
button.ha-save-button:hover {
|
136 |
-
background-color: #562dd4;
|
137 |
-
box-shadow: 0 1px 0 #301963;
|
138 |
-
transition: background-color .4s, transform .4s;
|
139 |
-
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
assets/admin/css/main.css
CHANGED
@@ -35,3 +35,30 @@
|
|
35 |
Â
|
36 |
Â
-webkit-text-fill-color: initial;
|
37 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
35 |
Â
|
36 |
Â
-webkit-text-fill-color: initial;
|
37 |
Â
}
|
38 |
+
|
39 |
+
.elementor-panel .elementor-control-_section_happy_effects .elementor-panel-heading-toggle,
|
40 |
+
.elementor-panel .elementor-control-_section_happy_effects .elementor-panel-heading-title {
|
41 |
+
color: #562dd4;
|
42 |
+
}
|
43 |
+
|
44 |
+
.elementor-control-ha_floating_fx_translate_toggle + .elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after,
|
45 |
+
.elementor-control-ha_floating_fx_rotate_toggle + .elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after,
|
46 |
+
.elementor-control-ha_floating_fx_scale_toggle + .elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after {
|
47 |
+
left: -5px;
|
48 |
+
box-shadow: -2px 2px 3px 0 rgba(0, 0, 0, .1);
|
49 |
+
}
|
50 |
+
|
51 |
+
.elementor-control-ha_floating_fx_translate_toggle + .elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after,
|
52 |
+
.elementor-control-ha_floating_fx_rotate_toggle + .elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after,
|
53 |
+
.elementor-control-ha_floating_fx_scale_toggle + .elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after {
|
54 |
+
left: 5px;
|
55 |
+
box-shadow: 2px -2px 3px 0 rgba(0, 0, 0, .1);
|
56 |
+
}
|
57 |
+
|
58 |
+
.elementor-control-ha_floating_fx_translate_toggle + .elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper .noUi-tooltip,
|
59 |
+
.elementor-control-ha_floating_fx_rotate_toggle + .elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper .noUi-tooltip,
|
60 |
+
.elementor-control-ha_floating_fx_scale_toggle + .elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper .noUi-tooltip {
|
61 |
+
top: auto;
|
62 |
+
bottom: calc(100% + 5px);
|
63 |
+
left: 100%;
|
64 |
+
}
|
assets/admin/css/main.min.css
CHANGED
@@ -1 +1 @@
|
|
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}
|
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}.elementor-panel .elementor-control-_section_happy_effects .elementor-panel-heading-title,.elementor-panel .elementor-control-_section_happy_effects .elementor-panel-heading-toggle{color:#562dd4}.elementor-control-ha_floating_fx_rotate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after,.elementor-control-ha_floating_fx_scale_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after,.elementor-control-ha_floating_fx_translate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after{left:-5px;box-shadow:-2px 2px 3px 0 rgba(0,0,0,.1)}.elementor-control-ha_floating_fx_rotate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after,.elementor-control-ha_floating_fx_scale_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after,.elementor-control-ha_floating_fx_translate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after{left:5px;box-shadow:2px -2px 3px 0 rgba(0,0,0,.1)}.elementor-control-ha_floating_fx_rotate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper .noUi-tooltip,.elementor-control-ha_floating_fx_scale_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper .noUi-tooltip,.elementor-control-ha_floating_fx_translate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper .noUi-tooltip{top:auto;bottom:calc(100% + 5px);left:100%}
|
assets/admin/js/admin-bar.js
ADDED
@@ -0,0 +1,30 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
;(function($) {
|
2 |
+
$(function() {
|
3 |
+
var $clearCache = $('.hajs-clear-cache ');
|
4 |
+
|
5 |
+
$clearCache.on('click', 'a', function(e) {
|
6 |
+
e.preventDefault();
|
7 |
+
|
8 |
+
var type = 'all',
|
9 |
+
$m = $(e.delegateTarget);
|
10 |
+
|
11 |
+
if ($m.hasClass('ha-clear-page-cache')) {
|
12 |
+
type = 'page';
|
13 |
+
}
|
14 |
+
|
15 |
+
$m.addClass('ha-clear-cache--init');
|
16 |
+
|
17 |
+
$.post(
|
18 |
+
HappyAdmin.ajax_url,
|
19 |
+
{
|
20 |
+
action: 'ha_clear_cache',
|
21 |
+
type: type,
|
22 |
+
nonce: HappyAdmin.nonce,
|
23 |
+
post_id: HappyAdmin.post_id
|
24 |
+
}
|
25 |
+
).done(function(res) {
|
26 |
+
$m.removeClass('ha-clear-cache--init').addClass('ha-clear-cache--done');
|
27 |
+
});
|
28 |
+
});
|
29 |
+
})
|
30 |
+
}(jQuery));
|
assets/css/main.css
CHANGED
@@ -3,7 +3,8 @@
|
|
3 |
Â
.ha-icon-box > .elementor-widget-container,
|
4 |
Â
.ha-member > .elementor-widget-container,
|
5 |
Â
.ha-review > .elementor-widget-container,
|
6 |
-
.ha-image-compare > .elementor-widget-container
|
Â
|
|
7 |
Â
border-radius: .5rem;
|
8 |
Â
background-color: #fff;
|
9 |
Â
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
@@ -12,6 +13,41 @@
|
|
12 |
Â
overflow-wrap: break-word;
|
13 |
Â
}
|
14 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
15 |
Â
.happy-addon {
|
16 |
Â
box-sizing: border-box;
|
17 |
Â
}
|
@@ -29,15 +65,27 @@
|
|
29 |
Â
display: none;
|
30 |
Â
}
|
31 |
Â
|
32 |
-
.ha-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
33 |
Â
.ha-logo-grid-wrapper:before,
|
34 |
-
.ha-cf:after,
|
35 |
Â
.ha-logo-grid-wrapper:after {
|
36 |
Â
display: table;
|
37 |
Â
content: " ";
|
38 |
Â
}
|
39 |
Â
|
40 |
-
.ha-cf:after,
|
41 |
Â
.ha-logo-grid-wrapper:after {
|
42 |
Â
clear: both;
|
43 |
Â
}
|
@@ -78,6 +126,31 @@
|
|
78 |
Â
margin-left: 5px;
|
79 |
Â
}
|
80 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
81 |
Â
.ha-card-figure {
|
82 |
Â
position: relative;
|
83 |
Â
height: 250px;
|
@@ -233,6 +306,31 @@
|
|
233 |
Â
bottom: 1rem;
|
234 |
Â
}
|
235 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
236 |
Â
.ha-infobox > .elementor-widget-container {
|
237 |
Â
padding: 1.5rem;
|
238 |
Â
}
|
@@ -280,6 +378,31 @@
|
|
280 |
Â
margin-bottom: 0;
|
281 |
Â
}
|
282 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
283 |
Â
.ha-icon-box > .elementor-widget-container {
|
284 |
Â
position: relative;
|
285 |
Â
padding: 1.25rem;
|
@@ -336,6 +459,31 @@
|
|
336 |
Â
color: #fff;
|
337 |
Â
}
|
338 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
339 |
Â
.ha-member > .elementor-widget-container {
|
340 |
Â
padding: 1.25rem;
|
341 |
Â
}
|
@@ -389,6 +537,31 @@
|
|
389 |
Â
margin-right: .3rem;
|
390 |
Â
}
|
391 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
392 |
Â
.ha-review-header {
|
393 |
Â
margin-top: 1.5rem;
|
394 |
Â
}
|
@@ -531,11 +704,61 @@ span .ha-review-ratting--star:before,
|
|
531 |
Â
text-align: right;
|
532 |
Â
}
|
533 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
534 |
Â
.ha-image-compare .twentytwenty-container,
|
535 |
Â
.ha-image-compare .twentytwenty-wrapper {
|
536 |
Â
border-radius: inherit;
|
537 |
Â
}
|
538 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
539 |
Â
.ha-gallery-filter {
|
540 |
Â
margin: 0 10px 2rem;
|
541 |
Â
padding: 0;
|
@@ -572,12 +795,37 @@ span .ha-review-ratting--star:before,
|
|
572 |
Â
color: #fff;
|
573 |
Â
}
|
574 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
575 |
Â
.ha-justified-gallery-item,
|
576 |
Â
.ha-justified-gallery-item > img {
|
577 |
Â
border-radius: 6px;
|
578 |
Â
}
|
579 |
Â
|
580 |
-
.justified-gallery > .ha-justified-gallery-item > .caption {
|
581 |
Â
bottom: -100px !important;
|
582 |
Â
padding: 10px;
|
583 |
Â
-webkit-transition: all .25s !important;
|
@@ -586,12 +834,12 @@ span .ha-review-ratting--star:before,
|
|
586 |
Â
animation: haSmoothReveal .3s forwards;
|
587 |
Â
}
|
588 |
Â
|
589 |
-
.justified-gallery > .ha-justified-gallery-item > .caption.caption-visible {
|
590 |
Â
bottom: 0 !important;
|
591 |
Â
}
|
592 |
Â
|
593 |
-
.justified-gallery > .entry-visible > img,
|
594 |
-
.justified-gallery > .entry-visible > a > img {
|
595 |
Â
-webkit-transition: all 300ms, opacity 500ms ease-in;
|
596 |
Â
transition: all 300ms, opacity 500ms ease-in;
|
597 |
Â
}
|
@@ -618,6 +866,31 @@ span .ha-review-ratting--star:before,
|
|
618 |
Â
}
|
619 |
Â
}
|
620 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
621 |
Â
.ha-slider .slick-vertical .slick-slide,
|
622 |
Â
.ha-carousel .slick-vertical .slick-slide {
|
623 |
Â
border: 0;
|
@@ -749,16 +1022,42 @@ span .ha-review-ratting--star:before,
|
|
749 |
Â
color: #fff;
|
750 |
Â
}
|
751 |
Â
|
752 |
-
.ha-
|
753 |
-
|
754 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
755 |
Â
|
756 |
Â
.ha-skill {
|
757 |
Â
display: -webkit-box;
|
758 |
Â
display: -webkit-flex;
|
759 |
Â
display: -ms-flexbox;
|
760 |
Â
display: flex;
|
761 |
-
|
Â
|
|
762 |
Â
font-size: .75rem;
|
763 |
Â
}
|
764 |
Â
.ha-skill--outside .ha-skill-info,
|
@@ -783,9 +1082,7 @@ span .ha-review-ratting--star:before,
|
|
783 |
Â
color: #242424;
|
784 |
Â
}
|
785 |
Â
.ha-skill--inside {
|
786 |
-
overflow: hidden;
|
787 |
Â
height: 30px;
|
788 |
-
border-radius: .3rem;
|
789 |
Â
}
|
790 |
Â
.ha-skill--inside .ha-skill-info {
|
791 |
Â
padding-right: 1rem;
|
@@ -806,7 +1103,9 @@ span .ha-review-ratting--star:before,
|
|
806 |
Â
-ms-flex-pack: center;
|
807 |
Â
-webkit-justify-content: center;
|
808 |
Â
justify-content: center;
|
809 |
-
|
Â
|
|
Â
|
|
810 |
Â
color: #fff;
|
811 |
Â
text-align: center;
|
812 |
Â
white-space: nowrap;
|
@@ -820,6 +1119,31 @@ span .ha-review-ratting--star:before,
|
|
820 |
Â
margin-top: 20px;
|
821 |
Â
}
|
822 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
823 |
Â
.ha-gradient-heading {
|
824 |
Â
margin-top: 0;
|
825 |
Â
margin-bottom: 0;
|
@@ -829,6 +1153,31 @@ span .ha-review-ratting--star:before,
|
|
829 |
Â
text-decoration: none;
|
830 |
Â
}
|
831 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
832 |
Â
.ha-logo-grid-item {
|
833 |
Â
float: left;
|
834 |
Â
overflow: hidden;
|
@@ -1282,6 +1631,31 @@ span .ha-review-ratting--star:before,
|
|
1282 |
Â
}
|
1283 |
Â
}
|
1284 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
1285 |
Â
.ha-dual-button > .elementor-widget-container {
|
1286 |
Â
display: -webkit-box;
|
1287 |
Â
display: -webkit-flex;
|
@@ -1354,6 +1728,31 @@ span .ha-review-ratting--star:before,
|
|
1354 |
Â
margin-left: 5px;
|
1355 |
Â
}
|
1356 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
1357 |
Â
.ha-testimonial--basic > .elementor-widget-container {
|
1358 |
Â
padding: 2rem;
|
1359 |
Â
border: 1px solid #ececec;
|
@@ -1476,39 +1875,767 @@ span .ha-review-ratting--star:before,
|
|
1476 |
Â
text-align: center;
|
1477 |
Â
}
|
1478 |
Â
|
1479 |
-
.ha-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
1480 |
Â
position: relative;
|
1481 |
-
display: -webkit-flex;
|
1482 |
-
/* Safari 7.0+ */
|
1483 |
Â
display: -webkit-box;
|
Â
|
|
1484 |
Â
display: -ms-flexbox;
|
1485 |
Â
display: flex;
|
1486 |
Â
overflow: hidden;
|
1487 |
Â
-webkit-box-align: center;
|
1488 |
-
/* Safari */
|
1489 |
Â
-webkit-align-items: center;
|
1490 |
Â
align-items: center;
|
1491 |
Â
-ms-flex-align: center;
|
1492 |
-
padding: 6px
|
1493 |
Â
width: 50px;
|
1494 |
Â
height: 50px;
|
1495 |
Â
border-radius: 100%;
|
1496 |
-
background: #
|
1497 |
Â
color: #fff;
|
1498 |
Â
text-align: center;
|
1499 |
Â
font-size: 20px;
|
1500 |
Â
}
|
1501 |
-
|
Â
|
|
1502 |
Â
position: absolute;
|
1503 |
Â
top: 0;
|
1504 |
Â
left: 0;
|
1505 |
Â
width: 100%;
|
1506 |
Â
height: 100%;
|
1507 |
Â
}
|
1508 |
-
|
1509 |
-
|
Â
|
|
Â
|
|
1510 |
Â
-webkit-box-flex: 1;
|
1511 |
Â
-webkit-flex: 1;
|
1512 |
Â
-ms-flex: 1;
|
1513 |
Â
flex: 1;
|
1514 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
3 |
Â
.ha-icon-box > .elementor-widget-container,
|
4 |
Â
.ha-member > .elementor-widget-container,
|
5 |
Â
.ha-review > .elementor-widget-container,
|
6 |
+
.ha-image-compare > .elementor-widget-container,
|
7 |
+
.ha-pricing-table > .elementor-widget-container {
|
8 |
Â
border-radius: .5rem;
|
9 |
Â
background-color: #fff;
|
10 |
Â
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
13 |
Â
overflow-wrap: break-word;
|
14 |
Â
}
|
15 |
Â
|
16 |
+
.ha-logo-grid-wrapper:before,
|
17 |
+
.ha-logo-grid-wrapper:after {
|
18 |
+
display: table;
|
19 |
+
content: " ";
|
20 |
+
}
|
21 |
+
|
22 |
+
.ha-logo-grid-wrapper:after {
|
23 |
+
clear: both;
|
24 |
+
}
|
25 |
+
|
26 |
+
.ha-card > .elementor-widget-container,
|
27 |
+
.ha-infobox > .elementor-widget-container,
|
28 |
+
.ha-icon-box > .elementor-widget-container,
|
29 |
+
.ha-member > .elementor-widget-container,
|
30 |
+
.ha-review > .elementor-widget-container,
|
31 |
+
.ha-image-compare > .elementor-widget-container,
|
32 |
+
.ha-pricing-table > .elementor-widget-container {
|
33 |
+
border-radius: .5rem;
|
34 |
+
background-color: #fff;
|
35 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
36 |
+
word-wrap: break-word;
|
37 |
+
|
38 |
+
overflow-wrap: break-word;
|
39 |
+
}
|
40 |
+
|
41 |
+
.ha-logo-grid-wrapper:before,
|
42 |
+
.ha-logo-grid-wrapper:after {
|
43 |
+
display: table;
|
44 |
+
content: " ";
|
45 |
+
}
|
46 |
+
|
47 |
+
.ha-logo-grid-wrapper:after {
|
48 |
+
clear: both;
|
49 |
+
}
|
50 |
+
|
51 |
Â
.happy-addon {
|
52 |
Â
box-sizing: border-box;
|
53 |
Â
}
|
65 |
Â
display: none;
|
66 |
Â
}
|
67 |
Â
|
68 |
+
.ha-card > .elementor-widget-container,
|
69 |
+
.ha-infobox > .elementor-widget-container,
|
70 |
+
.ha-icon-box > .elementor-widget-container,
|
71 |
+
.ha-member > .elementor-widget-container,
|
72 |
+
.ha-review > .elementor-widget-container,
|
73 |
+
.ha-image-compare > .elementor-widget-container,
|
74 |
+
.ha-pricing-table > .elementor-widget-container {
|
75 |
+
border-radius: .5rem;
|
76 |
+
background-color: #fff;
|
77 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
78 |
+
word-wrap: break-word;
|
79 |
+
|
80 |
+
overflow-wrap: break-word;
|
81 |
+
}
|
82 |
+
|
83 |
Â
.ha-logo-grid-wrapper:before,
|
Â
|
|
84 |
Â
.ha-logo-grid-wrapper:after {
|
85 |
Â
display: table;
|
86 |
Â
content: " ";
|
87 |
Â
}
|
88 |
Â
|
Â
|
|
89 |
Â
.ha-logo-grid-wrapper:after {
|
90 |
Â
clear: both;
|
91 |
Â
}
|
126 |
Â
margin-left: 5px;
|
127 |
Â
}
|
128 |
Â
|
129 |
+
.ha-card > .elementor-widget-container,
|
130 |
+
.ha-infobox > .elementor-widget-container,
|
131 |
+
.ha-icon-box > .elementor-widget-container,
|
132 |
+
.ha-member > .elementor-widget-container,
|
133 |
+
.ha-review > .elementor-widget-container,
|
134 |
+
.ha-image-compare > .elementor-widget-container,
|
135 |
+
.ha-pricing-table > .elementor-widget-container {
|
136 |
+
border-radius: .5rem;
|
137 |
+
background-color: #fff;
|
138 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
139 |
+
word-wrap: break-word;
|
140 |
+
|
141 |
+
overflow-wrap: break-word;
|
142 |
+
}
|
143 |
+
|
144 |
+
.ha-logo-grid-wrapper:before,
|
145 |
+
.ha-logo-grid-wrapper:after {
|
146 |
+
display: table;
|
147 |
+
content: " ";
|
148 |
+
}
|
149 |
+
|
150 |
+
.ha-logo-grid-wrapper:after {
|
151 |
+
clear: both;
|
152 |
+
}
|
153 |
+
|
154 |
Â
.ha-card-figure {
|
155 |
Â
position: relative;
|
156 |
Â
height: 250px;
|
306 |
Â
bottom: 1rem;
|
307 |
Â
}
|
308 |
Â
|
309 |
+
.ha-card > .elementor-widget-container,
|
310 |
+
.ha-infobox > .elementor-widget-container,
|
311 |
+
.ha-icon-box > .elementor-widget-container,
|
312 |
+
.ha-member > .elementor-widget-container,
|
313 |
+
.ha-review > .elementor-widget-container,
|
314 |
+
.ha-image-compare > .elementor-widget-container,
|
315 |
+
.ha-pricing-table > .elementor-widget-container {
|
316 |
+
border-radius: .5rem;
|
317 |
+
background-color: #fff;
|
318 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
319 |
+
word-wrap: break-word;
|
320 |
+
|
321 |
+
overflow-wrap: break-word;
|
322 |
+
}
|
323 |
+
|
324 |
+
.ha-logo-grid-wrapper:before,
|
325 |
+
.ha-logo-grid-wrapper:after {
|
326 |
+
display: table;
|
327 |
+
content: " ";
|
328 |
+
}
|
329 |
+
|
330 |
+
.ha-logo-grid-wrapper:after {
|
331 |
+
clear: both;
|
332 |
+
}
|
333 |
+
|
334 |
Â
.ha-infobox > .elementor-widget-container {
|
335 |
Â
padding: 1.5rem;
|
336 |
Â
}
|
378 |
Â
margin-bottom: 0;
|
379 |
Â
}
|
380 |
Â
|
381 |
+
.ha-card > .elementor-widget-container,
|
382 |
+
.ha-infobox > .elementor-widget-container,
|
383 |
+
.ha-icon-box > .elementor-widget-container,
|
384 |
+
.ha-member > .elementor-widget-container,
|
385 |
+
.ha-review > .elementor-widget-container,
|
386 |
+
.ha-image-compare > .elementor-widget-container,
|
387 |
+
.ha-pricing-table > .elementor-widget-container {
|
388 |
+
border-radius: .5rem;
|
389 |
+
background-color: #fff;
|
390 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
391 |
+
word-wrap: break-word;
|
392 |
+
|
393 |
+
overflow-wrap: break-word;
|
394 |
+
}
|
395 |
+
|
396 |
+
.ha-logo-grid-wrapper:before,
|
397 |
+
.ha-logo-grid-wrapper:after {
|
398 |
+
display: table;
|
399 |
+
content: " ";
|
400 |
+
}
|
401 |
+
|
402 |
+
.ha-logo-grid-wrapper:after {
|
403 |
+
clear: both;
|
404 |
+
}
|
405 |
+
|
406 |
Â
.ha-icon-box > .elementor-widget-container {
|
407 |
Â
position: relative;
|
408 |
Â
padding: 1.25rem;
|
459 |
Â
color: #fff;
|
460 |
Â
}
|
461 |
Â
|
462 |
+
.ha-card > .elementor-widget-container,
|
463 |
+
.ha-infobox > .elementor-widget-container,
|
464 |
+
.ha-icon-box > .elementor-widget-container,
|
465 |
+
.ha-member > .elementor-widget-container,
|
466 |
+
.ha-review > .elementor-widget-container,
|
467 |
+
.ha-image-compare > .elementor-widget-container,
|
468 |
+
.ha-pricing-table > .elementor-widget-container {
|
469 |
+
border-radius: .5rem;
|
470 |
+
background-color: #fff;
|
471 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
472 |
+
word-wrap: break-word;
|
473 |
+
|
474 |
+
overflow-wrap: break-word;
|
475 |
+
}
|
476 |
+
|
477 |
+
.ha-logo-grid-wrapper:before,
|
478 |
+
.ha-logo-grid-wrapper:after {
|
479 |
+
display: table;
|
480 |
+
content: " ";
|
481 |
+
}
|
482 |
+
|
483 |
+
.ha-logo-grid-wrapper:after {
|
484 |
+
clear: both;
|
485 |
+
}
|
486 |
+
|
487 |
Â
.ha-member > .elementor-widget-container {
|
488 |
Â
padding: 1.25rem;
|
489 |
Â
}
|
537 |
Â
margin-right: .3rem;
|
538 |
Â
}
|
539 |
Â
|
540 |
+
.ha-card > .elementor-widget-container,
|
541 |
+
.ha-infobox > .elementor-widget-container,
|
542 |
+
.ha-icon-box > .elementor-widget-container,
|
543 |
+
.ha-member > .elementor-widget-container,
|
544 |
+
.ha-review > .elementor-widget-container,
|
545 |
+
.ha-image-compare > .elementor-widget-container,
|
546 |
+
.ha-pricing-table > .elementor-widget-container {
|
547 |
+
border-radius: .5rem;
|
548 |
+
background-color: #fff;
|
549 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
550 |
+
word-wrap: break-word;
|
551 |
+
|
552 |
+
overflow-wrap: break-word;
|
553 |
+
}
|
554 |
+
|
555 |
+
.ha-logo-grid-wrapper:before,
|
556 |
+
.ha-logo-grid-wrapper:after {
|
557 |
+
display: table;
|
558 |
+
content: " ";
|
559 |
+
}
|
560 |
+
|
561 |
+
.ha-logo-grid-wrapper:after {
|
562 |
+
clear: both;
|
563 |
+
}
|
564 |
+
|
565 |
Â
.ha-review-header {
|
566 |
Â
margin-top: 1.5rem;
|
567 |
Â
}
|
704 |
Â
text-align: right;
|
705 |
Â
}
|
706 |
Â
|
707 |
+
.ha-card > .elementor-widget-container,
|
708 |
+
.ha-infobox > .elementor-widget-container,
|
709 |
+
.ha-icon-box > .elementor-widget-container,
|
710 |
+
.ha-member > .elementor-widget-container,
|
711 |
+
.ha-review > .elementor-widget-container,
|
712 |
+
.ha-image-compare > .elementor-widget-container,
|
713 |
+
.ha-pricing-table > .elementor-widget-container {
|
714 |
+
border-radius: .5rem;
|
715 |
+
background-color: #fff;
|
716 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
717 |
+
word-wrap: break-word;
|
718 |
+
|
719 |
+
overflow-wrap: break-word;
|
720 |
+
}
|
721 |
+
|
722 |
+
.ha-logo-grid-wrapper:before,
|
723 |
+
.ha-logo-grid-wrapper:after {
|
724 |
+
display: table;
|
725 |
+
content: " ";
|
726 |
+
}
|
727 |
+
|
728 |
+
.ha-logo-grid-wrapper:after {
|
729 |
+
clear: both;
|
730 |
+
}
|
731 |
+
|
732 |
Â
.ha-image-compare .twentytwenty-container,
|
733 |
Â
.ha-image-compare .twentytwenty-wrapper {
|
734 |
Â
border-radius: inherit;
|
735 |
Â
}
|
736 |
Â
|
737 |
+
.ha-card > .elementor-widget-container,
|
738 |
+
.ha-infobox > .elementor-widget-container,
|
739 |
+
.ha-icon-box > .elementor-widget-container,
|
740 |
+
.ha-member > .elementor-widget-container,
|
741 |
+
.ha-review > .elementor-widget-container,
|
742 |
+
.ha-image-compare > .elementor-widget-container,
|
743 |
+
.ha-pricing-table > .elementor-widget-container {
|
744 |
+
border-radius: .5rem;
|
745 |
+
background-color: #fff;
|
746 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
747 |
+
word-wrap: break-word;
|
748 |
+
|
749 |
+
overflow-wrap: break-word;
|
750 |
+
}
|
751 |
+
|
752 |
+
.ha-logo-grid-wrapper:before,
|
753 |
+
.ha-logo-grid-wrapper:after {
|
754 |
+
display: table;
|
755 |
+
content: " ";
|
756 |
+
}
|
757 |
+
|
758 |
+
.ha-logo-grid-wrapper:after {
|
759 |
+
clear: both;
|
760 |
+
}
|
761 |
+
|
762 |
Â
.ha-gallery-filter {
|
763 |
Â
margin: 0 10px 2rem;
|
764 |
Â
padding: 0;
|
795 |
Â
color: #fff;
|
796 |
Â
}
|
797 |
Â
|
798 |
+
.ha-card > .elementor-widget-container,
|
799 |
+
.ha-infobox > .elementor-widget-container,
|
800 |
+
.ha-icon-box > .elementor-widget-container,
|
801 |
+
.ha-member > .elementor-widget-container,
|
802 |
+
.ha-review > .elementor-widget-container,
|
803 |
+
.ha-image-compare > .elementor-widget-container,
|
804 |
+
.ha-pricing-table > .elementor-widget-container {
|
805 |
+
border-radius: .5rem;
|
806 |
+
background-color: #fff;
|
807 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
808 |
+
word-wrap: break-word;
|
809 |
+
|
810 |
+
overflow-wrap: break-word;
|
811 |
+
}
|
812 |
+
|
813 |
+
.ha-logo-grid-wrapper:before,
|
814 |
+
.ha-logo-grid-wrapper:after {
|
815 |
+
display: table;
|
816 |
+
content: " ";
|
817 |
+
}
|
818 |
+
|
819 |
+
.ha-logo-grid-wrapper:after {
|
820 |
+
clear: both;
|
821 |
+
}
|
822 |
+
|
823 |
Â
.ha-justified-gallery-item,
|
824 |
Â
.ha-justified-gallery-item > img {
|
825 |
Â
border-radius: 6px;
|
826 |
Â
}
|
827 |
Â
|
828 |
+
.ha-justified-gallery .justified-gallery > .ha-justified-gallery-item > .caption {
|
829 |
Â
bottom: -100px !important;
|
830 |
Â
padding: 10px;
|
831 |
Â
-webkit-transition: all .25s !important;
|
834 |
Â
animation: haSmoothReveal .3s forwards;
|
835 |
Â
}
|
836 |
Â
|
837 |
+
.ha-justified-gallery .justified-gallery > .ha-justified-gallery-item > .caption.caption-visible {
|
838 |
Â
bottom: 0 !important;
|
839 |
Â
}
|
840 |
Â
|
841 |
+
.ha-justified-gallery .justified-gallery > .entry-visible > img,
|
842 |
+
.ha-justified-gallery .justified-gallery > .entry-visible > a > img {
|
843 |
Â
-webkit-transition: all 300ms, opacity 500ms ease-in;
|
844 |
Â
transition: all 300ms, opacity 500ms ease-in;
|
845 |
Â
}
|
866 |
Â
}
|
867 |
Â
}
|
868 |
Â
|
869 |
+
.ha-card > .elementor-widget-container,
|
870 |
+
.ha-infobox > .elementor-widget-container,
|
871 |
+
.ha-icon-box > .elementor-widget-container,
|
872 |
+
.ha-member > .elementor-widget-container,
|
873 |
+
.ha-review > .elementor-widget-container,
|
874 |
+
.ha-image-compare > .elementor-widget-container,
|
875 |
+
.ha-pricing-table > .elementor-widget-container {
|
876 |
+
border-radius: .5rem;
|
877 |
+
background-color: #fff;
|
878 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
879 |
+
word-wrap: break-word;
|
880 |
+
|
881 |
+
overflow-wrap: break-word;
|
882 |
+
}
|
883 |
+
|
884 |
+
.ha-logo-grid-wrapper:before,
|
885 |
+
.ha-logo-grid-wrapper:after {
|
886 |
+
display: table;
|
887 |
+
content: " ";
|
888 |
+
}
|
889 |
+
|
890 |
+
.ha-logo-grid-wrapper:after {
|
891 |
+
clear: both;
|
892 |
+
}
|
893 |
+
|
894 |
Â
.ha-slider .slick-vertical .slick-slide,
|
895 |
Â
.ha-carousel .slick-vertical .slick-slide {
|
896 |
Â
border: 0;
|
1022 |
Â
color: #fff;
|
1023 |
Â
}
|
1024 |
Â
|
1025 |
+
.ha-card > .elementor-widget-container,
|
1026 |
+
.ha-infobox > .elementor-widget-container,
|
1027 |
+
.ha-icon-box > .elementor-widget-container,
|
1028 |
+
.ha-member > .elementor-widget-container,
|
1029 |
+
.ha-review > .elementor-widget-container,
|
1030 |
+
.ha-image-compare > .elementor-widget-container,
|
1031 |
+
.ha-pricing-table > .elementor-widget-container {
|
1032 |
+
border-radius: .5rem;
|
1033 |
+
background-color: #fff;
|
1034 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
1035 |
+
word-wrap: break-word;
|
1036 |
+
|
1037 |
+
overflow-wrap: break-word;
|
1038 |
+
}
|
1039 |
+
|
1040 |
+
.ha-logo-grid-wrapper:before,
|
1041 |
+
.ha-logo-grid-wrapper:after {
|
1042 |
+
display: table;
|
1043 |
+
content: " ";
|
1044 |
+
}
|
1045 |
+
|
1046 |
+
.ha-logo-grid-wrapper:after {
|
1047 |
+
clear: both;
|
1048 |
+
}
|
1049 |
+
|
1050 |
+
.ha-skills > .elementor-widget-container {
|
1051 |
+
padding-top: 1px;
|
1052 |
+
}
|
1053 |
Â
|
1054 |
Â
.ha-skill {
|
1055 |
Â
display: -webkit-box;
|
1056 |
Â
display: -webkit-flex;
|
1057 |
Â
display: -ms-flexbox;
|
1058 |
Â
display: flex;
|
1059 |
+
border-radius: 15px;
|
1060 |
+
background-color: #e9ecef;
|
1061 |
Â
font-size: .75rem;
|
1062 |
Â
}
|
1063 |
Â
.ha-skill--outside .ha-skill-info,
|
1082 |
Â
color: #242424;
|
1083 |
Â
}
|
1084 |
Â
.ha-skill--inside {
|
Â
|
|
1085 |
Â
height: 30px;
|
Â
|
|
1086 |
Â
}
|
1087 |
Â
.ha-skill--inside .ha-skill-info {
|
1088 |
Â
padding-right: 1rem;
|
1103 |
Â
-ms-flex-pack: center;
|
1104 |
Â
-webkit-justify-content: center;
|
1105 |
Â
justify-content: center;
|
1106 |
+
width: 10%;
|
1107 |
+
border-radius: inherit;
|
1108 |
+
background-color: #562dd4;
|
1109 |
Â
color: #fff;
|
1110 |
Â
text-align: center;
|
1111 |
Â
white-space: nowrap;
|
1119 |
Â
margin-top: 20px;
|
1120 |
Â
}
|
1121 |
Â
|
1122 |
+
.ha-card > .elementor-widget-container,
|
1123 |
+
.ha-infobox > .elementor-widget-container,
|
1124 |
+
.ha-icon-box > .elementor-widget-container,
|
1125 |
+
.ha-member > .elementor-widget-container,
|
1126 |
+
.ha-review > .elementor-widget-container,
|
1127 |
+
.ha-image-compare > .elementor-widget-container,
|
1128 |
+
.ha-pricing-table > .elementor-widget-container {
|
1129 |
+
border-radius: .5rem;
|
1130 |
+
background-color: #fff;
|
1131 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
1132 |
+
word-wrap: break-word;
|
1133 |
+
|
1134 |
+
overflow-wrap: break-word;
|
1135 |
+
}
|
1136 |
+
|
1137 |
+
.ha-logo-grid-wrapper:before,
|
1138 |
+
.ha-logo-grid-wrapper:after {
|
1139 |
+
display: table;
|
1140 |
+
content: " ";
|
1141 |
+
}
|
1142 |
+
|
1143 |
+
.ha-logo-grid-wrapper:after {
|
1144 |
+
clear: both;
|
1145 |
+
}
|
1146 |
+
|
1147 |
Â
.ha-gradient-heading {
|
1148 |
Â
margin-top: 0;
|
1149 |
Â
margin-bottom: 0;
|
1153 |
Â
text-decoration: none;
|
1154 |
Â
}
|
1155 |
Â
|
1156 |
+
.ha-card > .elementor-widget-container,
|
1157 |
+
.ha-infobox > .elementor-widget-container,
|
1158 |
+
.ha-icon-box > .elementor-widget-container,
|
1159 |
+
.ha-member > .elementor-widget-container,
|
1160 |
+
.ha-review > .elementor-widget-container,
|
1161 |
+
.ha-image-compare > .elementor-widget-container,
|
1162 |
+
.ha-pricing-table > .elementor-widget-container {
|
1163 |
+
border-radius: .5rem;
|
1164 |
+
background-color: #fff;
|
1165 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
1166 |
+
word-wrap: break-word;
|
1167 |
+
|
1168 |
+
overflow-wrap: break-word;
|
1169 |
+
}
|
1170 |
+
|
1171 |
+
.ha-logo-grid-wrapper:before,
|
1172 |
+
.ha-logo-grid-wrapper:after {
|
1173 |
+
display: table;
|
1174 |
+
content: " ";
|
1175 |
+
}
|
1176 |
+
|
1177 |
+
.ha-logo-grid-wrapper:after {
|
1178 |
+
clear: both;
|
1179 |
+
}
|
1180 |
+
|
1181 |
Â
.ha-logo-grid-item {
|
1182 |
Â
float: left;
|
1183 |
Â
overflow: hidden;
|
1631 |
Â
}
|
1632 |
Â
}
|
1633 |
Â
|
1634 |
+
.ha-card > .elementor-widget-container,
|
1635 |
+
.ha-infobox > .elementor-widget-container,
|
1636 |
+
.ha-icon-box > .elementor-widget-container,
|
1637 |
+
.ha-member > .elementor-widget-container,
|
1638 |
+
.ha-review > .elementor-widget-container,
|
1639 |
+
.ha-image-compare > .elementor-widget-container,
|
1640 |
+
.ha-pricing-table > .elementor-widget-container {
|
1641 |
+
border-radius: .5rem;
|
1642 |
+
background-color: #fff;
|
1643 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
1644 |
+
word-wrap: break-word;
|
1645 |
+
|
1646 |
+
overflow-wrap: break-word;
|
1647 |
+
}
|
1648 |
+
|
1649 |
+
.ha-logo-grid-wrapper:before,
|
1650 |
+
.ha-logo-grid-wrapper:after {
|
1651 |
+
display: table;
|
1652 |
+
content: " ";
|
1653 |
+
}
|
1654 |
+
|
1655 |
+
.ha-logo-grid-wrapper:after {
|
1656 |
+
clear: both;
|
1657 |
+
}
|
1658 |
+
|
1659 |
Â
.ha-dual-button > .elementor-widget-container {
|
1660 |
Â
display: -webkit-box;
|
1661 |
Â
display: -webkit-flex;
|
1728 |
Â
margin-left: 5px;
|
1729 |
Â
}
|
1730 |
Â
|
1731 |
+
.ha-card > .elementor-widget-container,
|
1732 |
+
.ha-infobox > .elementor-widget-container,
|
1733 |
+
.ha-icon-box > .elementor-widget-container,
|
1734 |
+
.ha-member > .elementor-widget-container,
|
1735 |
+
.ha-review > .elementor-widget-container,
|
1736 |
+
.ha-image-compare > .elementor-widget-container,
|
1737 |
+
.ha-pricing-table > .elementor-widget-container {
|
1738 |
+
border-radius: .5rem;
|
1739 |
+
background-color: #fff;
|
1740 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
1741 |
+
word-wrap: break-word;
|
1742 |
+
|
1743 |
+
overflow-wrap: break-word;
|
1744 |
+
}
|
1745 |
+
|
1746 |
+
.ha-logo-grid-wrapper:before,
|
1747 |
+
.ha-logo-grid-wrapper:after {
|
1748 |
+
display: table;
|
1749 |
+
content: " ";
|
1750 |
+
}
|
1751 |
+
|
1752 |
+
.ha-logo-grid-wrapper:after {
|
1753 |
+
clear: both;
|
1754 |
+
}
|
1755 |
+
|
1756 |
Â
.ha-testimonial--basic > .elementor-widget-container {
|
1757 |
Â
padding: 2rem;
|
1758 |
Â
border: 1px solid #ececec;
|
1875 |
Â
text-align: center;
|
1876 |
Â
}
|
1877 |
Â
|
1878 |
+
.ha-card > .elementor-widget-container,
|
1879 |
+
.ha-infobox > .elementor-widget-container,
|
1880 |
+
.ha-icon-box > .elementor-widget-container,
|
1881 |
+
.ha-member > .elementor-widget-container,
|
1882 |
+
.ha-review > .elementor-widget-container,
|
1883 |
+
.ha-image-compare > .elementor-widget-container,
|
1884 |
+
.ha-pricing-table > .elementor-widget-container {
|
1885 |
+
border-radius: .5rem;
|
1886 |
+
background-color: #fff;
|
1887 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
1888 |
+
word-wrap: break-word;
|
1889 |
+
|
1890 |
+
overflow-wrap: break-word;
|
1891 |
+
}
|
1892 |
+
|
1893 |
+
.ha-logo-grid-wrapper:before,
|
1894 |
+
.ha-logo-grid-wrapper:after {
|
1895 |
+
display: table;
|
1896 |
+
content: " ";
|
1897 |
+
}
|
1898 |
+
|
1899 |
+
.ha-logo-grid-wrapper:after {
|
1900 |
+
clear: both;
|
1901 |
+
}
|
1902 |
+
|
1903 |
+
.ha-number-body {
|
1904 |
Â
position: relative;
|
Â
|
|
Â
|
|
1905 |
Â
display: -webkit-box;
|
1906 |
+
display: -webkit-flex;
|
1907 |
Â
display: -ms-flexbox;
|
1908 |
Â
display: flex;
|
1909 |
Â
overflow: hidden;
|
1910 |
Â
-webkit-box-align: center;
|
Â
|
|
1911 |
Â
-webkit-align-items: center;
|
1912 |
Â
align-items: center;
|
1913 |
Â
-ms-flex-align: center;
|
1914 |
+
padding: 6px;
|
1915 |
Â
width: 50px;
|
1916 |
Â
height: 50px;
|
1917 |
Â
border-radius: 100%;
|
1918 |
+
background-color: #562dd4;
|
1919 |
Â
color: #fff;
|
1920 |
Â
text-align: center;
|
1921 |
Â
font-size: 20px;
|
1922 |
Â
}
|
1923 |
+
|
1924 |
+
.ha-number-overlay {
|
1925 |
Â
position: absolute;
|
1926 |
Â
top: 0;
|
1927 |
Â
left: 0;
|
1928 |
Â
width: 100%;
|
1929 |
Â
height: 100%;
|
1930 |
Â
}
|
1931 |
+
|
1932 |
+
.ha-number-text {
|
1933 |
+
position: relative;
|
1934 |
+
z-index: 1;
|
1935 |
Â
-webkit-box-flex: 1;
|
1936 |
Â
-webkit-flex: 1;
|
1937 |
Â
-ms-flex: 1;
|
1938 |
Â
flex: 1;
|
1939 |
Â
}
|
1940 |
+
|
1941 |
+
.ha-card > .elementor-widget-container,
|
1942 |
+
.ha-infobox > .elementor-widget-container,
|
1943 |
+
.ha-icon-box > .elementor-widget-container,
|
1944 |
+
.ha-member > .elementor-widget-container,
|
1945 |
+
.ha-review > .elementor-widget-container,
|
1946 |
+
.ha-image-compare > .elementor-widget-container,
|
1947 |
+
.ha-pricing-table > .elementor-widget-container {
|
1948 |
+
border-radius: .5rem;
|
1949 |
+
background-color: #fff;
|
1950 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
1951 |
+
word-wrap: break-word;
|
1952 |
+
|
1953 |
+
overflow-wrap: break-word;
|
1954 |
+
}
|
1955 |
+
|
1956 |
+
.ha-logo-grid-wrapper:before,
|
1957 |
+
.ha-logo-grid-wrapper:after {
|
1958 |
+
display: table;
|
1959 |
+
content: " ";
|
1960 |
+
}
|
1961 |
+
|
1962 |
+
.ha-logo-grid-wrapper:after {
|
1963 |
+
clear: both;
|
1964 |
+
}
|
1965 |
+
|
1966 |
+
.ha-hover-box {
|
1967 |
+
overflow: hidden;
|
1968 |
+
}
|
1969 |
+
.ha-hover-box .ha-hover-box-main {
|
1970 |
+
position: relative;
|
1971 |
+
overflow: hidden;
|
1972 |
+
}
|
1973 |
+
|
1974 |
+
.ha-hover-box-wrapper {
|
1975 |
+
position: relative;
|
1976 |
+
display: -webkit-box;
|
1977 |
+
display: -webkit-flex;
|
1978 |
+
display: -ms-flexbox;
|
1979 |
+
display: flex;
|
1980 |
+
overflow: hidden;
|
1981 |
+
-webkit-box-align: center;
|
1982 |
+
-webkit-align-items: center;
|
1983 |
+
align-items: center;
|
1984 |
+
-ms-flex-align: center;
|
1985 |
+
padding: 50px;
|
1986 |
+
max-height: 100%;
|
1987 |
+
width: 100%;
|
1988 |
+
height: 400px;
|
1989 |
+
-webkit-transition-duration: .4s;
|
1990 |
+
transition-duration: .4s;
|
1991 |
+
}
|
1992 |
+
.ha-hover-box-wrapper:before {
|
1993 |
+
position: absolute;
|
1994 |
+
top: 0;
|
1995 |
+
left: 0;
|
1996 |
+
z-index: 1;
|
1997 |
+
width: 100%;
|
1998 |
+
height: 100%;
|
1999 |
+
content: "";
|
2000 |
+
}
|
2001 |
+
.ha-hover-box-wrapper:hover {
|
2002 |
+
-webkit-transition-duration: .3s;
|
2003 |
+
transition-duration: .3s;
|
2004 |
+
-webkit-transform: scale(1.06);
|
2005 |
+
-ms-transform: scale(1.06);
|
2006 |
+
transform: scale(1.06);
|
2007 |
+
}
|
2008 |
+
.ha-hover-box-wrapper:hover .ha-hover-box-content {
|
2009 |
+
opacity: 0;
|
2010 |
+
-webkit-transition-delay: 0ms;
|
2011 |
+
transition-delay: 0ms;
|
2012 |
+
-webkit-transition-timing-function: cubic-bezier(.57, .21, .69, 1);
|
2013 |
+
transition-timing-function: cubic-bezier(.57, .21, .69, 1);
|
2014 |
+
-webkit-transition-duration: .1s;
|
2015 |
+
transition-duration: .1s;
|
2016 |
+
-webkit-transition-property: opacity,-webkit-transform;
|
2017 |
+
transition-property: opacity,-webkit-transform;
|
2018 |
+
transition-property: transform,opacity;
|
2019 |
+
transition-property: transform,opacity,-webkit-transform;
|
2020 |
+
-webkit-transform: translate(0, 36px);
|
2021 |
+
-ms-transform: translate(0, 36px);
|
2022 |
+
transform: translate(0, 36px);
|
2023 |
+
}
|
2024 |
+
.ha-hover-box-wrapper .ha-hover-box-content {
|
2025 |
+
position: relative;
|
2026 |
+
z-index: 99;
|
2027 |
+
display: -webkit-box;
|
2028 |
+
display: -webkit-flex;
|
2029 |
+
display: -ms-flexbox;
|
2030 |
+
display: flex;
|
2031 |
+
-webkit-box-orient: vertical;
|
2032 |
+
-webkit-box-direction: normal;
|
2033 |
+
-webkit-flex-direction: column;
|
2034 |
+
-ms-flex-direction: column;
|
2035 |
+
flex-direction: column;
|
2036 |
+
width: 100%;
|
2037 |
+
text-align: left;
|
2038 |
+
opacity: 1;
|
2039 |
+
-webkit-transition: opacity .2s ease-in-out,-webkit-transform .2s ease-in-out;
|
2040 |
+
transition: opacity .2s ease-in-out,-webkit-transform .2s ease-in-out;
|
2041 |
+
transition: opacity .2s ease-in-out,transform .2s ease-in-out;
|
2042 |
+
transition: opacity .2s ease-in-out,transform .2s ease-in-out,-webkit-transform .2s ease-in-out;
|
2043 |
+
-webkit-transition-delay: .1s;
|
2044 |
+
transition-delay: .1s;
|
2045 |
+
-webkit-transition-duration: .1s;
|
2046 |
+
transition-duration: .1s;
|
2047 |
+
-webkit-transform: translate(0, 0);
|
2048 |
+
-ms-transform: translate(0, 0);
|
2049 |
+
transform: translate(0, 0);
|
2050 |
+
}
|
2051 |
+
.ha-hover-box-wrapper .ha-hover-sub-title {
|
2052 |
+
display: inline-block;
|
2053 |
+
margin-bottom: 20px;
|
2054 |
+
color: #222;
|
2055 |
+
}
|
2056 |
+
.ha-hover-box-wrapper .ha-hover-title {
|
2057 |
+
margin-top: 0;
|
2058 |
+
margin-bottom: 10px;
|
2059 |
+
color: #222;
|
2060 |
+
}
|
2061 |
+
.ha-hover-box-wrapper .ha-hover-description {
|
2062 |
+
margin: 0;
|
2063 |
+
color: #222;
|
2064 |
+
}
|
2065 |
+
|
2066 |
+
.ha-hover-box-wrapper.reverse:hover .ha-hover-box-content {
|
2067 |
+
opacity: 1;
|
2068 |
+
-webkit-transition-delay: .1s;
|
2069 |
+
transition-delay: .1s;
|
2070 |
+
-webkit-transform: translate(0, -16px);
|
2071 |
+
-ms-transform: translate(0, -16px);
|
2072 |
+
transform: translate(0, -16px);
|
2073 |
+
}
|
2074 |
+
|
2075 |
+
.ha-hover-box-wrapper.reverse .ha-hover-box-content {
|
2076 |
+
opacity: 0;
|
2077 |
+
-webkit-transition-delay: 0s;
|
2078 |
+
transition-delay: 0s;
|
2079 |
+
}
|
2080 |
+
|
2081 |
+
.ha-pre--column .ha-hover-sub-title {
|
2082 |
+
margin-bottom: 20px;
|
2083 |
+
}
|
2084 |
+
|
2085 |
+
.ha-pre--column-reverse p.ha-hover-sub-title {
|
2086 |
+
margin-top: 20px;
|
2087 |
+
margin-bottom: 0;
|
2088 |
+
}
|
2089 |
+
|
2090 |
+
.ha-card > .elementor-widget-container,
|
2091 |
+
.ha-infobox > .elementor-widget-container,
|
2092 |
+
.ha-icon-box > .elementor-widget-container,
|
2093 |
+
.ha-member > .elementor-widget-container,
|
2094 |
+
.ha-review > .elementor-widget-container,
|
2095 |
+
.ha-image-compare > .elementor-widget-container,
|
2096 |
+
.ha-pricing-table > .elementor-widget-container {
|
2097 |
+
border-radius: .5rem;
|
2098 |
+
background-color: #fff;
|
2099 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
2100 |
+
word-wrap: break-word;
|
2101 |
+
|
2102 |
+
overflow-wrap: break-word;
|
2103 |
+
}
|
2104 |
+
|
2105 |
+
.ha-logo-grid-wrapper:before,
|
2106 |
+
.ha-logo-grid-wrapper:after {
|
2107 |
+
display: table;
|
2108 |
+
content: " ";
|
2109 |
+
}
|
2110 |
+
|
2111 |
+
.ha-logo-grid-wrapper:after {
|
2112 |
+
clear: both;
|
2113 |
+
}
|
2114 |
+
|
2115 |
+
.ha-flip-box-container:after {
|
2116 |
+
display: block;
|
2117 |
+
visibility: hidden;
|
2118 |
+
clear: both;
|
2119 |
+
height: 0;
|
2120 |
+
content: " ";
|
2121 |
+
font-size: 0;
|
2122 |
+
}
|
2123 |
+
|
2124 |
+
.ha-flip-box-container .ha-flip-box-inner {
|
2125 |
+
position: relative;
|
2126 |
+
z-index: 1;
|
2127 |
+
margin: 0;
|
2128 |
+
padding: 0;
|
2129 |
+
|
2130 |
+
-webkit-backface-visibility: hidden;
|
2131 |
+
backface-visibility: hidden;
|
2132 |
+
}
|
2133 |
+
.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-back {
|
2134 |
+
z-index: 1;
|
2135 |
+
}
|
2136 |
+
.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-front {
|
2137 |
+
z-index: -1;
|
2138 |
+
}
|
2139 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-inner-wrapper {
|
2140 |
+
position: relative;
|
2141 |
+
-webkit-transform: translateZ(0);
|
2142 |
+
|
2143 |
+
-webkit-perspective: 1000px;
|
2144 |
+
perspective: 1000px;
|
2145 |
+
}
|
2146 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back,
|
2147 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front {
|
2148 |
+
top: 0;
|
2149 |
+
right: 0;
|
2150 |
+
left: 0;
|
2151 |
+
display: -webkit-box;
|
2152 |
+
display: -webkit-flex;
|
2153 |
+
display: -ms-flexbox;
|
2154 |
+
display: flex;
|
2155 |
+
-webkit-box-align: center;
|
2156 |
+
-webkit-align-items: center;
|
2157 |
+
align-items: center;
|
2158 |
+
-ms-flex-align: center;
|
2159 |
+
height: 250px;
|
2160 |
+
background-color: transparent;
|
2161 |
+
background-position: center;
|
2162 |
+
background-clip: padding-box;
|
2163 |
+
background-size: cover;
|
2164 |
+
background-repeat: no-repeat;
|
2165 |
+
text-align: center;
|
2166 |
+
|
2167 |
+
-webkit-backface-visibility: hidden;
|
2168 |
+
backface-visibility: hidden;
|
2169 |
+
-webkit-perspective: 1000px;
|
2170 |
+
perspective: 1000px;
|
2171 |
+
}
|
2172 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back:before,
|
2173 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front:before {
|
2174 |
+
position: absolute;
|
2175 |
+
top: 0;
|
2176 |
+
left: 0;
|
2177 |
+
z-index: -9;
|
2178 |
+
width: 100%;
|
2179 |
+
height: 100%;
|
2180 |
+
background-color: transparent;
|
2181 |
+
content: "";
|
2182 |
+
}
|
2183 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front {
|
2184 |
+
position: relative;
|
2185 |
+
bottom: 0;
|
2186 |
+
z-index: 10;
|
2187 |
+
padding: 30px;
|
2188 |
+
border: 1px solid #ddd;
|
2189 |
+
border-radius: .3rem;
|
2190 |
+
}
|
2191 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back {
|
2192 |
+
position: absolute;
|
2193 |
+
z-index: -1;
|
2194 |
+
padding: 46px;
|
2195 |
+
border-radius: .3rem;
|
2196 |
+
background-color: #562dd4;
|
2197 |
+
color: #fff;
|
2198 |
+
}
|
2199 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner,
|
2200 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner {
|
2201 |
+
position: relative;
|
2202 |
+
display: -webkit-box;
|
2203 |
+
display: -webkit-flex;
|
2204 |
+
display: -ms-flexbox;
|
2205 |
+
display: flex;
|
2206 |
+
-webkit-box-orient: vertical;
|
2207 |
+
-webkit-box-direction: normal;
|
2208 |
+
-webkit-flex-direction: column;
|
2209 |
+
-ms-flex-direction: column;
|
2210 |
+
flex-direction: column;
|
2211 |
+
width: 100%;
|
2212 |
+
}
|
2213 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text,
|
2214 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text {
|
2215 |
+
text-align: center;
|
2216 |
+
}
|
2217 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text p,
|
2218 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text p {
|
2219 |
+
margin-top: 10px;
|
2220 |
+
margin-bottom: 0;
|
2221 |
+
}
|
2222 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon.icon {
|
2223 |
+
padding: 20px;
|
2224 |
+
border-radius: 50%;
|
2225 |
+
background-color: #f1f4f8;
|
2226 |
+
color: #242424;
|
2227 |
+
}
|
2228 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon {
|
2229 |
+
display: inline-block;
|
2230 |
+
margin-bottom: 20px;
|
2231 |
+
text-align: center;
|
2232 |
+
}
|
2233 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i {
|
2234 |
+
position: relative;
|
2235 |
+
display: block;
|
2236 |
+
width: 1em;
|
2237 |
+
height: 1em;
|
2238 |
+
font-size: 28px;
|
2239 |
+
}
|
2240 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i:before {
|
2241 |
+
position: absolute;
|
2242 |
+
left: 50%;
|
2243 |
+
-webkit-transform: translateX(-50%);
|
2244 |
+
-ms-transform: translateX(-50%);
|
2245 |
+
transform: translateX(-50%);
|
2246 |
+
}
|
2247 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon img {
|
2248 |
+
width: 60px;
|
2249 |
+
height: 60px;
|
2250 |
+
vertical-align: middle;
|
2251 |
+
}
|
2252 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-box-heading {
|
2253 |
+
margin: 0;
|
2254 |
+
font-weight: bold;
|
2255 |
+
font-size: 20px;
|
2256 |
+
}
|
2257 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner p {
|
2258 |
+
margin-bottom: 0;
|
2259 |
+
font-size: 16px;
|
2260 |
+
}
|
2261 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-box-heading-back {
|
2262 |
+
margin: 0;
|
2263 |
+
color: #fff;
|
2264 |
+
font-size: 18px;
|
2265 |
+
}
|
2266 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon {
|
2267 |
+
display: inline-block;
|
2268 |
+
margin-bottom: 20px;
|
2269 |
+
text-align: center;
|
2270 |
+
}
|
2271 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i {
|
2272 |
+
position: relative;
|
2273 |
+
display: block;
|
2274 |
+
width: 1em;
|
2275 |
+
height: 1em;
|
2276 |
+
color: #fff;
|
2277 |
+
font-size: 20px;
|
2278 |
+
}
|
2279 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i:before {
|
2280 |
+
position: absolute;
|
2281 |
+
left: 50%;
|
2282 |
+
-webkit-transform: translateX(-50%);
|
2283 |
+
-ms-transform: translateX(-50%);
|
2284 |
+
transform: translateX(-50%);
|
2285 |
+
}
|
2286 |
+
.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon img {
|
2287 |
+
width: 60px;
|
2288 |
+
height: 60px;
|
2289 |
+
vertical-align: middle;
|
2290 |
+
}
|
2291 |
+
|
2292 |
+
.ha-flip-box-container .ha-flip-box-back-inner .button-wrap {
|
2293 |
+
margin-top: 12px;
|
2294 |
+
}
|
2295 |
+
|
2296 |
+
.ha-flip-box-container .ha-flip-box-back-inner .ha-flip-btn {
|
2297 |
+
display: inline-block;
|
2298 |
+
padding: .8rem 2.5rem;
|
2299 |
+
border-radius: 4px;
|
2300 |
+
background-color: #fff;
|
2301 |
+
color: #562dd4;
|
2302 |
+
text-decoration: none;
|
2303 |
+
text-transform: uppercase;
|
2304 |
+
font-size: 12px;
|
2305 |
+
-webkit-transition: all .3s;
|
2306 |
+
transition: all .3s;
|
2307 |
+
}
|
2308 |
+
.ha-flip-box-container .ha-flip-box-back-inner .ha-flip-btn:hover {
|
2309 |
+
background-color: #fff;
|
2310 |
+
color: #562dd4;
|
2311 |
+
}
|
2312 |
+
|
2313 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-front {
|
2314 |
+
-webkit-transform: rotateY(0);
|
2315 |
+
transform: rotateY(0);
|
2316 |
+
}
|
2317 |
+
|
2318 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-back {
|
2319 |
+
-webkit-transform: rotateY(-180deg);
|
2320 |
+
transform: rotateY(-180deg);
|
2321 |
+
}
|
2322 |
+
|
2323 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-back {
|
2324 |
+
-webkit-transform: rotateY(0);
|
2325 |
+
transform: rotateY(0);
|
2326 |
+
}
|
2327 |
+
|
2328 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-front {
|
2329 |
+
-webkit-transform: rotateY(180deg);
|
2330 |
+
transform: rotateY(180deg);
|
2331 |
+
}
|
2332 |
+
|
2333 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-left .ha-flip-box-front {
|
2334 |
+
-webkit-transform: rotateY(0);
|
2335 |
+
transform: rotateY(0);
|
2336 |
+
}
|
2337 |
+
|
2338 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-left .ha-flip-box-back {
|
2339 |
+
-webkit-transform: rotateY(180deg);
|
2340 |
+
transform: rotateY(180deg);
|
2341 |
+
}
|
2342 |
+
|
2343 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-left:hover .ha-flip-box-back {
|
2344 |
+
-webkit-transform: rotateY(0);
|
2345 |
+
transform: rotateY(0);
|
2346 |
+
}
|
2347 |
+
|
2348 |
+
.ha-flip-box-container .ha-flip-box.ha-flip-left:hover .ha-flip-box-front {
|
2349 |
+
-webkit-transform: rotateY(-180deg);
|
2350 |
+
transform: rotateY(-180deg);
|
2351 |
+
}
|
2352 |
+
|
2353 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-front {
|
2354 |
+
-webkit-transform: rotateX(0);
|
2355 |
+
transform: rotateX(0);
|
2356 |
+
}
|
2357 |
+
|
2358 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-back {
|
2359 |
+
-webkit-transform: rotateX(-180deg);
|
2360 |
+
transform: rotateX(-180deg);
|
2361 |
+
}
|
2362 |
+
|
2363 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-back {
|
2364 |
+
-webkit-transform: rotateX(0);
|
2365 |
+
transform: rotateX(0);
|
2366 |
+
}
|
2367 |
+
|
2368 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-front {
|
2369 |
+
-webkit-transform: rotateX(180deg);
|
2370 |
+
transform: rotateX(180deg);
|
2371 |
+
}
|
2372 |
+
|
2373 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-down .ha-flip-box-front {
|
2374 |
+
-webkit-transform: rotateX(0);
|
2375 |
+
transform: rotateX(0);
|
2376 |
+
}
|
2377 |
+
|
2378 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-down .ha-flip-box-back {
|
2379 |
+
-webkit-transform: rotateX(180deg);
|
2380 |
+
transform: rotateX(180deg);
|
2381 |
+
}
|
2382 |
+
|
2383 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-down:hover .ha-flip-box-back {
|
2384 |
+
-webkit-transform: rotateX(0);
|
2385 |
+
transform: rotateX(0);
|
2386 |
+
}
|
2387 |
+
|
2388 |
+
.ha-flip-box-container .ha-flip-box-inner.ha-flip-down:hover .ha-flip-box-front {
|
2389 |
+
-webkit-transform: rotateX(-180deg);
|
2390 |
+
transform: rotateX(-180deg);
|
2391 |
+
}
|
2392 |
+
|
2393 |
+
.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-back,
|
2394 |
+
.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-front {
|
2395 |
+
-webkit-transition: -webkit-transform .6s cubic-bezier(.2, .85, .4, 1.275);
|
2396 |
+
transition: -webkit-transform .6s cubic-bezier(.2, .85, .4, 1.275);
|
2397 |
+
transition: transform .6s cubic-bezier(.2, .85, .4, 1.275);
|
2398 |
+
transition: transform .6s cubic-bezier(.2, .85, .4, 1.275), -webkit-transform .6s cubic-bezier(.2, .85, .4, 1.275);
|
2399 |
+
}
|
2400 |
+
|
2401 |
+
.ha-card > .elementor-widget-container,
|
2402 |
+
.ha-infobox > .elementor-widget-container,
|
2403 |
+
.ha-icon-box > .elementor-widget-container,
|
2404 |
+
.ha-member > .elementor-widget-container,
|
2405 |
+
.ha-review > .elementor-widget-container,
|
2406 |
+
.ha-image-compare > .elementor-widget-container,
|
2407 |
+
.ha-pricing-table > .elementor-widget-container {
|
2408 |
+
border-radius: .5rem;
|
2409 |
+
background-color: #fff;
|
2410 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
2411 |
+
word-wrap: break-word;
|
2412 |
+
|
2413 |
+
overflow-wrap: break-word;
|
2414 |
+
}
|
2415 |
+
|
2416 |
+
.ha-logo-grid-wrapper:before,
|
2417 |
+
.ha-logo-grid-wrapper:after {
|
2418 |
+
display: table;
|
2419 |
+
content: " ";
|
2420 |
+
}
|
2421 |
+
|
2422 |
+
.ha-logo-grid-wrapper:after {
|
2423 |
+
clear: both;
|
2424 |
+
}
|
2425 |
+
|
2426 |
+
.ha-pricing-table > .elementor-widget-container {
|
2427 |
+
position: relative;
|
2428 |
+
overflow: hidden;
|
2429 |
+
padding: 3em 4em;
|
2430 |
+
}
|
2431 |
+
|
2432 |
+
.ha-pricing-table-badge {
|
2433 |
+
position: absolute;
|
2434 |
+
top: 0;
|
2435 |
+
padding: .8rem 1rem;
|
2436 |
+
background-color: #e2498a;
|
2437 |
+
color: #fff;
|
2438 |
+
line-height: 1;
|
2439 |
+
}
|
2440 |
+
.ha-pricing-table-badge--left {
|
2441 |
+
left: 0;
|
2442 |
+
-webkit-transform: rotate(-90deg) translateX(-100%);
|
2443 |
+
-ms-transform: rotate(-90deg) translateX(-100%);
|
2444 |
+
transform: rotate(-90deg) translateX(-100%);
|
2445 |
+
-webkit-transform-origin: left top;
|
2446 |
+
-ms-transform-origin: left top;
|
2447 |
+
transform-origin: left top;
|
2448 |
+
}
|
2449 |
+
.ha-pricing-table-badge--right {
|
2450 |
+
right: 0;
|
2451 |
+
-webkit-transform: rotate(-90deg) translateY(-100%);
|
2452 |
+
-ms-transform: rotate(-90deg) translateY(-100%);
|
2453 |
+
transform: rotate(-90deg) translateY(-100%);
|
2454 |
+
-webkit-transform-origin: right top;
|
2455 |
+
-ms-transform-origin: right top;
|
2456 |
+
transform-origin: right top;
|
2457 |
+
}
|
2458 |
+
|
2459 |
+
.ha-pricing-table-title {
|
2460 |
+
margin-top: 0;
|
2461 |
+
margin-bottom: .5rem;
|
2462 |
+
color: #242424;
|
2463 |
+
font-weight: 400;
|
2464 |
+
font-size: 24px;
|
2465 |
+
}
|
2466 |
+
|
2467 |
+
.ha-pricing-table-price {
|
2468 |
+
margin-bottom: 3rem;
|
2469 |
+
}
|
2470 |
+
|
2471 |
+
.ha-pricing-table-price-tag {
|
2472 |
+
margin-bottom: .5rem;
|
2473 |
+
color: #242424;
|
2474 |
+
font-weight: bold;
|
2475 |
+
font-size: 60px;
|
2476 |
+
line-height: normal;
|
2477 |
+
}
|
2478 |
+
|
2479 |
+
.ha-pricing-table-currency {
|
2480 |
+
font-size: 24px;
|
2481 |
+
}
|
2482 |
+
|
2483 |
+
.ha-pricing-table-period {
|
2484 |
+
color: #8c8c8c;
|
2485 |
+
font-size: 16px;
|
2486 |
+
}
|
2487 |
+
|
2488 |
+
.ha-pricing-table-body {
|
2489 |
+
margin-bottom: 3rem;
|
2490 |
+
}
|
2491 |
+
|
2492 |
+
.ha-pricing-table-features-title {
|
2493 |
+
margin-top: 0;
|
2494 |
+
margin-bottom: 1rem;
|
2495 |
+
font-weight: bold;
|
2496 |
+
font-size: 16px;
|
2497 |
+
}
|
2498 |
+
|
2499 |
+
.ha-pricing-table-features-list {
|
2500 |
+
margin: 0;
|
2501 |
+
padding: 0;
|
2502 |
+
list-style: none;
|
2503 |
+
}
|
2504 |
+
.ha-pricing-table-features-list li {
|
2505 |
+
margin-bottom: 1rem;
|
2506 |
+
font-size: 16px;
|
2507 |
+
}
|
2508 |
+
.ha-pricing-table-features-list i {
|
2509 |
+
margin-right: .5rem;
|
2510 |
+
min-width: 15px;
|
2511 |
+
font-size: .8em;
|
2512 |
+
}
|
2513 |
+
|
2514 |
+
.ha-pricing-table-btn {
|
2515 |
+
display: inline-block;
|
2516 |
+
padding: .8rem 2rem;
|
2517 |
+
border-radius: 40px;
|
2518 |
+
background-color: #e2498a;
|
2519 |
+
color: #fff;
|
2520 |
+
text-decoration: none;
|
2521 |
+
text-transform: uppercase;
|
2522 |
+
font-size: 12px;
|
2523 |
+
-webkit-transition: all .3s;
|
2524 |
+
transition: all .3s;
|
2525 |
+
}
|
2526 |
+
.ha-pricing-table-btn:hover {
|
2527 |
+
background-color: #562dd4;
|
2528 |
+
color: #fff;
|
2529 |
+
}
|
2530 |
+
|
2531 |
+
.ha-card > .elementor-widget-container,
|
2532 |
+
.ha-infobox > .elementor-widget-container,
|
2533 |
+
.ha-icon-box > .elementor-widget-container,
|
2534 |
+
.ha-member > .elementor-widget-container,
|
2535 |
+
.ha-review > .elementor-widget-container,
|
2536 |
+
.ha-image-compare > .elementor-widget-container,
|
2537 |
+
.ha-pricing-table > .elementor-widget-container {
|
2538 |
+
border-radius: .5rem;
|
2539 |
+
background-color: #fff;
|
2540 |
+
box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
|
2541 |
+
word-wrap: break-word;
|
2542 |
+
|
2543 |
+
overflow-wrap: break-word;
|
2544 |
+
}
|
2545 |
+
|
2546 |
+
.ha-logo-grid-wrapper:before,
|
2547 |
+
.ha-logo-grid-wrapper:after {
|
2548 |
+
display: table;
|
2549 |
+
content: " ";
|
2550 |
+
}
|
2551 |
+
|
2552 |
+
.ha-logo-grid-wrapper:after {
|
2553 |
+
clear: both;
|
2554 |
+
}
|
2555 |
+
|
2556 |
+
.ha-step-flow > .elementor-widget-container {
|
2557 |
+
padding: 30px;
|
2558 |
+
text-align: center;
|
2559 |
+
}
|
2560 |
+
|
2561 |
+
.ha-step-arrow {
|
2562 |
+
position: absolute;
|
2563 |
+
top: 49%;
|
2564 |
+
left: calc(100% + 50px);
|
2565 |
+
display: inline-block;
|
2566 |
+
width: 100px;
|
2567 |
+
border-top: 1px dashed #ddd;
|
2568 |
+
}
|
2569 |
+
.ha-step-arrow:after {
|
2570 |
+
position: absolute;
|
2571 |
+
right: -6px;
|
2572 |
+
height: 1.5em;
|
2573 |
+
color: #ddd;
|
2574 |
+
content: "\e90b";
|
2575 |
+
font-size: 18px;
|
2576 |
+
font-family: "Happy Icons" !important;
|
2577 |
+
-webkit-transform: translateY(-50%);
|
2578 |
+
-ms-transform: translateY(-50%);
|
2579 |
+
transform: translateY(-50%);
|
2580 |
+
}
|
2581 |
+
|
2582 |
+
.ha-steps-icon {
|
2583 |
+
position: relative;
|
2584 |
+
display: inline-block;
|
2585 |
+
margin-bottom: 2rem;
|
2586 |
+
padding: 40px;
|
2587 |
+
border-radius: 50%;
|
2588 |
+
background-color: #f1f4f8;
|
2589 |
+
color: #242424;
|
2590 |
+
text-align: center;
|
2591 |
+
font-size: 46px;
|
2592 |
+
}
|
2593 |
+
.ha-steps-icon i {
|
2594 |
+
position: relative;
|
2595 |
+
display: block;
|
2596 |
+
width: 1em;
|
2597 |
+
height: 1em;
|
2598 |
+
}
|
2599 |
+
.ha-steps-icon i:before {
|
2600 |
+
position: absolute;
|
2601 |
+
left: 50%;
|
2602 |
+
-webkit-transform: translateX(-50%);
|
2603 |
+
-ms-transform: translateX(-50%);
|
2604 |
+
transform: translateX(-50%);
|
2605 |
+
}
|
2606 |
+
.ha-steps-icon .ha-steps-label {
|
2607 |
+
position: absolute;
|
2608 |
+
top: 5px;
|
2609 |
+
right: 0;
|
2610 |
+
padding: 10px 12px;
|
2611 |
+
border: 3px solid #fff;
|
2612 |
+
border-radius: 20px;
|
2613 |
+
background-color: #e2498a;
|
2614 |
+
color: #fff;
|
2615 |
+
font-size: 12px;
|
2616 |
+
line-height: 0;
|
2617 |
+
}
|
2618 |
+
|
2619 |
+
.ha-steps-title {
|
2620 |
+
margin-top: 0;
|
2621 |
+
margin-bottom: 30px;
|
2622 |
+
font-weight: bold;
|
2623 |
+
font-size: 16px;
|
2624 |
+
}
|
2625 |
+
|
2626 |
+
.ha-steps-title a {
|
2627 |
+
display: block;
|
2628 |
+
color: #562dd4;
|
2629 |
+
}
|
2630 |
+
|
2631 |
+
.ha-steps-title a:hover {
|
2632 |
+
color: #242424;
|
2633 |
+
}
|
2634 |
+
|
2635 |
+
.ha-step-description {
|
2636 |
+
margin: 0;
|
2637 |
+
color: #616161;
|
2638 |
+
font-weight: normal;
|
2639 |
+
font-size: 16px;
|
2640 |
+
line-height: 1.5;
|
2641 |
+
}
|
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,.ha-logo-grid-wrapper:after,.ha-logo-grid-wrapper:before{display:table;content:" "}.ha-cf:after,.ha-logo-grid-wrapper:after{clear:both}.ha-btn{display:inline-block;vertical-align:middle;text-align:center;text-decoration:none;font-size:14px;line-height:1;-webkit-transition:all .3s;transition:all .3s}.ha-btn:not(.ha-btn--link){padding:15px 25px;border-radius:.25rem;background-color:#562dd4;color:#fff}.ha-btn:not(.ha-btn--link):focus,.ha-btn:not(.ha-btn--link):hover{background-color:#e2498a}.ha-btn.ha-btn--link{color:#562dd4}.ha-btn.ha-btn--link:focus,.ha-btn.ha-btn--link:hover{color:#e2498a}.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-weight:700;font-size:22px}.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{display:inline-block;width:100%}.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{display:inline-block;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-gallery-filter{margin:0 10px 2rem;padding:0;list-style:none}.ha-gallery-filter>li{display:inline-block;margin-bottom:10px}.ha-gallery-filter>li:not(:last-child){margin-right:10px}.ha-gallery-filter>li>button{display:block;padding:10px 25px;border:2px solid #562dd4;border-radius:.25rem;background-color:transparent;color:#562dd4;text-transform:uppercase;font-size:14px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ha-gallery-filter>li>button:focus,.ha-gallery-filter>li>button:hover{outline:0;background-color:#562dd4;color:#fff}.ha-gallery-filter>.ha-filter-active>button{background-color:#562dd4;color:#fff}.ha-justified-gallery-item,.ha-justified-gallery-item>img{border-radius:6px}.justified-gallery>.ha-justified-gallery-item>.caption{bottom:-100px!important;padding:10px;-webkit-transition:all .25s!important;transition:all .25s!important;-webkit-animation:haSmoothReveal .3s forwards;animation:haSmoothReveal .3s forwards}.justified-gallery>.ha-justified-gallery-item>.caption.caption-visible{bottom:0!important}.justified-gallery>.entry-visible>a>img,.justified-gallery>.entry-visible>img{-webkit-transition:all 300ms,opacity 500ms ease-in;transition:all 300ms,opacity 500ms ease-in}@-webkit-keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.ha-carousel .slick-vertical .slick-slide,.ha-slider .slick-vertical .slick-slide{border:0}.ha-carousel .slick-next,.ha-carousel .slick-prev,.ha-slider .slick-next,.ha-slider .slick-prev{z-index:999;padding:0;border:1px solid rgba(255,255,255,.8);border-radius:50%;background-color:rgba(255,255,255,.8);color:#8c8c8c;text-align:center;font-size:12px;opacity:1}.ha-carousel .slick-next:focus,.ha-carousel .slick-next:hover,.ha-carousel .slick-prev:focus,.ha-carousel .slick-prev:hover,.ha-slider .slick-next:focus,.ha-slider .slick-next:hover,.ha-slider .slick-prev:focus,.ha-slider .slick-prev:hover{background-color:#fff}.ha-carousel .slick-next:before,.ha-carousel .slick-prev:before,.ha-slider .slick-next:before,.ha-slider .slick-prev:before{content:""}.ha-carousel .slick-disabled,.ha-slider .slick-disabled{opacity:.7}.ha-carousel .slick-prev,.ha-slider .slick-prev{left:25px}.ha-carousel .slick-next,.ha-slider .slick-next{right:25px}.ha-carousel .slick-dots,.ha-slider .slick-dots{bottom:-40px}.ha-carousel .slick-dots li,.ha-slider .slick-dots li{margin-right:2px;margin-left:2px}.ha-carousel .slick-dots li button:focus,.ha-carousel .slick-dots li button:hover,.ha-slider .slick-dots li button:focus,.ha-slider .slick-dots li button:hover{background-color:transparent}.ha-carousel .slick-dots li button:before,.ha-slider .slick-dots li button:before{color:#1b1b1b;opacity:1}.ha-carousel .slick-dots .slick-active button:before,.ha-carousel .slick-dots li button:hover:before,.ha-slider .slick-dots .slick-active button:before,.ha-slider .slick-dots li button:hover:before{-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5)}.ha-carousel .slick-next,.ha-carousel .slick-prev{width:40px;height:40px;line-height:40px}.ha-slider .slick-next,.ha-slider .slick-prev{width:50px;height:50px;line-height:50px}.ha-carousel .slick-slider:not(.slick-vertical) .slick-slide{padding-right:5px;padding-left:5px}.ha-carousel .slick-slider.slick-vertical .slick-slide{padding-top:5px;padding-bottom:5px}.ha-slick-item{position:relative;overflow:hidden;vertical-align:bottom}.ha-slick-content{position:absolute;bottom:0;padding:1.5rem;width:100%;background:-webkit-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3));background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3))}.ha-slick-title{margin-top:0;margin-bottom:.2rem;color:#fff;font-size:20px}.ha-slick-subtitle{margin:0;color:#fff}.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-logo-grid-item{float:left;overflow:hidden;height:180px;border-color:#e7e7e7}.ha-logo-grid-figure{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;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0;padding:30px;width:100%;height:100%}.ha-logo-grid-img{max-height:100%}@media (min-width:1025px){.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:767px){.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc(100%/6)}}.ha-logo-grid--tictactoe .ha-logo-grid-item{border-width:2px 2px 0 0;border-style:solid}@media (min-width:1025px){.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:767px){.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}.ha-logo-grid--border .ha-logo-grid-item{border-width:0 2px 2px 0;border-style:solid}.ha-logo-grid--border .ha-logo-grid-item:first-child{border-top-left-radius:10px}.ha-logo-grid--border .ha-logo-grid-item:last-child{border-bottom-right-radius:10px}@media (min-width:1025px){.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:767px){.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}.ha-logo-grid--box .ha-logo-grid-wrapper{margin:-.5rem}.ha-logo-grid--box .ha-logo-grid-item{margin:.5rem;border-width:2px;border-style:solid;border-radius:.5rem}@media (min-width:1025px){.ha-logo-grid--box.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--box.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:767px){.ha-logo-grid--box.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}.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:#562dd4}.ha-dual-btn--left:focus,.ha-dual-btn--left:hover{background-color:#4423ab}.ha-dual-btn--right{border-top-right-radius:50px;border-bottom-right-radius:50px;background-color:#e2498a}.ha-dual-btn--right:focus,.ha-dual-btn--right:hover{background-color:#d6226e}.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}.ha-testimonial--basic>.elementor-widget-container{padding:2rem;border:1px solid #ececec;border-radius:.5rem}.ha-testimonial--basic .ha-testimonial__content{margin-bottom:2.5em}.ha-testimonial--bubble .ha-testimonial__content{position:relative;margin-bottom:1.5rem;padding:2rem;border-radius:6px;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);line-height:1.6rem}.ha-testimonial--bubble .ha-testimonial__content:after{position:absolute;bottom:-14px;color:#fff;content:"\e911";font-style:normal;font-size:36px;font-family:"Happy Icons";-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.ha-testimonial--left.ha-testimonial--bubble .ha-testimonial__content:after{left:15px}.ha-testimonial--center.ha-testimonial--bubble .ha-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) rotate(-180deg);-ms-transform:translateX(-50%) rotate(-180deg);transform:translateX(-50%) rotate(-180deg)}.ha-testimonial--right.ha-testimonial--bubble .ha-testimonial__content:after{right:15px}.ha-testimonial__reviewer{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;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-testimonial__reviewer-thumb{width:65px;height:65px}.ha-testimonial__reviewer-thumb>img{width:100%;height:100%;border-radius:50%;-o-object-fit:cover;object-fit:cover}.ha-testimonial__reviewer-name{margin-bottom:.3rem;color:#562dd4;font-weight:700;font-size:18px}.ha-testimonial__reviewer-title{color:#8c8c8c;font-size:16px}.ha-testimonial--left .ha-testimonial__reviewer-meta{padding-left:1em}.ha-testimonial--center .ha-testimonial__reviewer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-testimonial--center .ha-testimonial__reviewer-meta{padding-top:1em}.ha-testimonial--right .ha-testimonial__reviewer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-testimonial--right .ha-testimonial__reviewer-meta{padding-right:1em}.ha-testimonial--left{text-align:left}.ha-testimonial--right{text-align:right}.ha-testimonial--center{text-align:center}.ha-number-body .ha-number-border{position:relative;display:-webkit-flex;display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding:6px;width:50px;height:50px;border-radius:100%;background:#c36;color:#fff;text-align:center;font-size:20px}.ha-number-body .ha-number-border .ha-number-border-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ha-number-body .ha-number-border span{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}
|
1 |
+
.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-btn{display:inline-block;vertical-align:middle;text-align:center;text-decoration:none;font-size:14px;line-height:1;-webkit-transition:all .3s;transition:all .3s}.ha-btn:not(.ha-btn--link){padding:15px 25px;border-radius:.25rem;background-color:#562dd4;color:#fff}.ha-btn:not(.ha-btn--link):focus,.ha-btn:not(.ha-btn--link):hover{background-color:#e2498a}.ha-btn.ha-btn--link{color:#562dd4}.ha-btn.ha-btn--link:focus,.ha-btn.ha-btn--link:hover{color:#e2498a}.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-weight:700;font-size:22px}.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{display:inline-block;width:100%}.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-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i:before,.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{display:inline-block;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-gallery-filter{margin:0 10px 2rem;padding:0;list-style:none}.ha-gallery-filter>li{display:inline-block;margin-bottom:10px}.ha-gallery-filter>li:not(:last-child){margin-right:10px}.ha-gallery-filter>li>button{display:block;padding:10px 25px;border:2px solid #562dd4;border-radius:.25rem;background-color:transparent;color:#562dd4;text-transform:uppercase;font-size:14px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ha-gallery-filter>li>button:focus,.ha-gallery-filter>li>button:hover{outline:0;background-color:#562dd4;color:#fff}.ha-gallery-filter>.ha-filter-active>button{background-color:#562dd4;color:#fff}.ha-justified-gallery-item,.ha-justified-gallery-item>img{border-radius:6px}.ha-justified-gallery .justified-gallery>.ha-justified-gallery-item>.caption{bottom:-100px!important;padding:10px;-webkit-transition:all .25s!important;transition:all .25s!important;-webkit-animation:haSmoothReveal .3s forwards;animation:haSmoothReveal .3s forwards}.ha-justified-gallery .justified-gallery>.ha-justified-gallery-item>.caption.caption-visible{bottom:0!important}.ha-justified-gallery .justified-gallery>.entry-visible>a>img,.ha-justified-gallery .justified-gallery>.entry-visible>img{-webkit-transition:all 300ms,opacity 500ms ease-in;transition:all 300ms,opacity 500ms ease-in}@-webkit-keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.ha-carousel .slick-vertical .slick-slide,.ha-slider .slick-vertical .slick-slide{border:0}.ha-carousel .slick-next,.ha-carousel .slick-prev,.ha-slider .slick-next,.ha-slider .slick-prev{z-index:999;padding:0;border:1px solid rgba(255,255,255,.8);border-radius:50%;background-color:rgba(255,255,255,.8);color:#8c8c8c;text-align:center;font-size:12px;opacity:1}.ha-carousel .slick-next:focus,.ha-carousel .slick-next:hover,.ha-carousel .slick-prev:focus,.ha-carousel .slick-prev:hover,.ha-slider .slick-next:focus,.ha-slider .slick-next:hover,.ha-slider .slick-prev:focus,.ha-slider .slick-prev:hover{background-color:#fff}.ha-carousel .slick-next:before,.ha-carousel .slick-prev:before,.ha-slider .slick-next:before,.ha-slider .slick-prev:before{content:""}.ha-carousel .slick-disabled,.ha-slider .slick-disabled{opacity:.7}.ha-carousel .slick-prev,.ha-slider .slick-prev{left:25px}.ha-carousel .slick-next,.ha-slider .slick-next{right:25px}.ha-carousel .slick-dots,.ha-slider .slick-dots{bottom:-40px}.ha-carousel .slick-dots li,.ha-slider .slick-dots li{margin-right:2px;margin-left:2px}.ha-carousel .slick-dots li button:focus,.ha-carousel .slick-dots li button:hover,.ha-slider .slick-dots li button:focus,.ha-slider .slick-dots li button:hover{background-color:transparent}.ha-carousel .slick-dots li button:before,.ha-slider .slick-dots li button:before{color:#1b1b1b;opacity:1}.ha-carousel .slick-dots .slick-active button:before,.ha-carousel .slick-dots li button:hover:before,.ha-slider .slick-dots .slick-active button:before,.ha-slider .slick-dots li button:hover:before{-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5)}.ha-carousel .slick-next,.ha-carousel .slick-prev{width:40px;height:40px;line-height:40px}.ha-slider .slick-next,.ha-slider .slick-prev{width:50px;height:50px;line-height:50px}.ha-carousel .slick-slider:not(.slick-vertical) .slick-slide{padding-right:5px;padding-left:5px}.ha-carousel .slick-slider.slick-vertical .slick-slide{padding-top:5px;padding-bottom:5px}.ha-slick-item{position:relative;overflow:hidden;vertical-align:bottom}.ha-slick-content{position:absolute;bottom:0;padding:1.5rem;width:100%;background:-webkit-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3));background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3))}.ha-slick-title{margin-top:0;margin-bottom:.2rem;color:#fff;font-size:20px}.ha-slick-subtitle{margin:0;color:#fff}.ha-skills>.elementor-widget-container{padding-top:1px}.ha-skill{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-radius:15px;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{height:30px}.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;width:10%;border-radius:inherit;background-color:#562dd4;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-logo-grid-item{float:left;overflow:hidden;height:180px;border-color:#e7e7e7}.ha-logo-grid-figure{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;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0;padding:30px;width:100%;height:100%}.ha-logo-grid-img{max-height:100%}@media (min-width:1025px){.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:767px){.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc(100%/6)}}.ha-logo-grid--tictactoe .ha-logo-grid-item{border-width:2px 2px 0 0;border-style:solid}@media (min-width:1025px){.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:767px){.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}.ha-logo-grid--border .ha-logo-grid-item{border-width:0 2px 2px 0;border-style:solid}.ha-logo-grid--border .ha-logo-grid-item:first-child{border-top-left-radius:10px}.ha-logo-grid--border .ha-logo-grid-item:last-child{border-bottom-right-radius:10px}@media (min-width:1025px){.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:767px){.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}.ha-logo-grid--box .ha-logo-grid-wrapper{margin:-.5rem}.ha-logo-grid--box .ha-logo-grid-item{margin:.5rem;border-width:2px;border-style:solid;border-radius:.5rem}@media (min-width:1025px){.ha-logo-grid--box.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--box.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:767px){.ha-logo-grid--box.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}.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:#562dd4}.ha-dual-btn--left:focus,.ha-dual-btn--left:hover{background-color:#4423ab}.ha-dual-btn--right{border-top-right-radius:50px;border-bottom-right-radius:50px;background-color:#e2498a}.ha-dual-btn--right:focus,.ha-dual-btn--right:hover{background-color:#d6226e}.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}.ha-testimonial--basic>.elementor-widget-container{padding:2rem;border:1px solid #ececec;border-radius:.5rem}.ha-testimonial--basic .ha-testimonial__content{margin-bottom:2.5em}.ha-testimonial--bubble .ha-testimonial__content{position:relative;margin-bottom:1.5rem;padding:2rem;border-radius:6px;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);line-height:1.6rem}.ha-testimonial--bubble .ha-testimonial__content:after{position:absolute;bottom:-14px;color:#fff;content:"\e911";font-style:normal;font-size:36px;font-family:"Happy Icons";-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.ha-testimonial--left.ha-testimonial--bubble .ha-testimonial__content:after{left:15px}.ha-testimonial--center.ha-testimonial--bubble .ha-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) rotate(-180deg);-ms-transform:translateX(-50%) rotate(-180deg);transform:translateX(-50%) rotate(-180deg)}.ha-testimonial--right.ha-testimonial--bubble .ha-testimonial__content:after{right:15px}.ha-testimonial__reviewer{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;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-testimonial__reviewer-thumb{width:65px;height:65px}.ha-testimonial__reviewer-thumb>img{width:100%;height:100%;border-radius:50%;-o-object-fit:cover;object-fit:cover}.ha-testimonial__reviewer-name{margin-bottom:.3rem;color:#562dd4;font-weight:700;font-size:18px}.ha-testimonial__reviewer-title{color:#8c8c8c;font-size:16px}.ha-testimonial--left .ha-testimonial__reviewer-meta{padding-left:1em}.ha-testimonial--center .ha-testimonial__reviewer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-testimonial--center .ha-testimonial__reviewer-meta{padding-top:1em}.ha-testimonial--right .ha-testimonial__reviewer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-testimonial--right .ha-testimonial__reviewer-meta{padding-right:1em}.ha-testimonial--left{text-align:left}.ha-testimonial--right{text-align:right}.ha-number-body,.ha-testimonial--center{text-align:center}.ha-number-body{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding:6px;width:50px;height:50px;border-radius:100%;background-color:#562dd4;color:#fff;font-size:20px}.ha-hover-box-wrapper:before,.ha-number-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ha-number-text{position:relative;z-index:1;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-hover-box{overflow:hidden}.ha-hover-box .ha-hover-box-main{position:relative;overflow:hidden}.ha-hover-box-wrapper,.ha-hover-box-wrapper .ha-hover-box-content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%}.ha-hover-box-wrapper{overflow:hidden;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding:50px;max-height:100%;height:400px;-webkit-transition-duration:.4s;transition-duration:.4s}.ha-hover-box-wrapper:before{z-index:1;content:""}.ha-hover-box-wrapper:hover{-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transform:scale(1.06);-ms-transform:scale(1.06);transform:scale(1.06)}.ha-hover-box-wrapper:hover .ha-hover-box-content{opacity:0;-webkit-transition-delay:0ms;transition-delay:0ms;-webkit-transition-timing-function:cubic-bezier(.57,.21,.69,1);transition-timing-function:cubic-bezier(.57,.21,.69,1);-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transform:translate(0,36px);-ms-transform:translate(0,36px);transform:translate(0,36px)}.ha-hover-box-wrapper .ha-hover-box-content{z-index:99;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;text-align:left;opacity:1;-webkit-transition:opacity .2s ease-in-out,-webkit-transform .2s ease-in-out;transition:opacity .2s ease-in-out,transform .2s ease-in-out;transition:opacity .2s ease-in-out,transform .2s ease-in-out,-webkit-transform .2s ease-in-out;-webkit-transition-delay:.1s;transition-delay:.1s;-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.ha-hover-box-wrapper .ha-hover-sub-title{display:inline-block;margin-bottom:20px;color:#222}.ha-hover-box-wrapper .ha-hover-title{margin-top:0;margin-bottom:10px;color:#222}.ha-hover-box-wrapper .ha-hover-description{margin:0;color:#222}.ha-hover-box-wrapper.reverse:hover .ha-hover-box-content{opacity:1;-webkit-transition-delay:.1s;transition-delay:.1s;-webkit-transform:translate(0,-16px);-ms-transform:translate(0,-16px);transform:translate(0,-16px)}.ha-hover-box-wrapper.reverse .ha-hover-box-content{opacity:0;-webkit-transition-delay:0s;transition-delay:0s}.ha-pre--column .ha-hover-sub-title{margin-bottom:20px}.ha-pre--column-reverse p.ha-hover-sub-title{margin-top:20px;margin-bottom:0}.ha-flip-box-container:after{display:block;visibility:hidden;clear:both;height:0;content:" ";font-size:0}.ha-flip-box-container .ha-flip-box-inner{position:relative;z-index:1;margin:0;padding:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-back{z-index:1}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-front{z-index:-1}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-inner-wrapper{position:relative;-webkit-transform:translateZ(0);-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{top:0;right:0;left:0;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;height:250px;background-position:center;background-clip:padding-box;background-size:cover;background-repeat:no-repeat;text-align:center;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{background-color:transparent;position:relative;bottom:0;z-index:10;padding:30px;border:1px solid #ddd;border-radius:.3rem}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front:before{position:absolute;top:0;left:0;z-index:-9;width:100%;height:100%;background-color:transparent;content:""}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back{position:absolute;z-index:-1;padding:46px;border-radius:.3rem;background-color:#562dd4;color:#fff}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner{position:relative;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;width:100%}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text{text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text p,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text p{margin-top:10px;margin-bottom:0}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon.icon{padding:20px;border-radius:50%;background-color:#f1f4f8;color:#242424}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;font-size:28px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon img,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon img{width:60px;height:60px;vertical-align:middle}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-box-heading{margin:0;font-weight:700;font-size:20px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner p{margin-bottom:0;font-size:16px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-box-heading-back{margin:0;color:#fff;font-size:18px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;color:#fff;font-size:20px}.ha-flip-box-container .ha-flip-box-back-inner .button-wrap{margin-top:12px}.ha-flip-box-container .ha-flip-box-back-inner .ha-flip-btn{display:inline-block;padding:.8rem 2.5rem;border-radius:4px;background-color:#fff;color:#562dd4;text-decoration:none;text-transform:uppercase;font-size:12px;-webkit-transition:all .3s;transition:all .3s}.ha-flip-box-container .ha-flip-box-back-inner .ha-flip-btn:hover{background-color:#fff;color:#562dd4}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-back{-webkit-transform:rotateY(0);transform:rotateY(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-back{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-front{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-left .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-left:hover .ha-flip-box-back{-webkit-transform:rotateY(0);transform:rotateY(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-left .ha-flip-box-back{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.ha-flip-box-container .ha-flip-box.ha-flip-left:hover .ha-flip-box-front{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-back{-webkit-transform:rotateX(0);transform:rotateX(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-back{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-front{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-down .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-down:hover .ha-flip-box-back{-webkit-transform:rotateX(0);transform:rotateX(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-down .ha-flip-box-back{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-down:hover .ha-flip-box-front{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-back,.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-front{-webkit-transition:-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275),-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275)}.ha-pricing-table>.elementor-widget-container{position:relative;overflow:hidden;padding:3em 4em}.ha-pricing-table-badge{position:absolute;top:0;padding:.8rem 1rem;background-color:#e2498a;color:#fff;line-height:1}.ha-pricing-table-badge--left{left:0;-webkit-transform:rotate(-90deg) translateX(-100%);-ms-transform:rotate(-90deg) translateX(-100%);transform:rotate(-90deg) translateX(-100%);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.ha-pricing-table-badge--right{right:0;-webkit-transform:rotate(-90deg) translateY(-100%);-ms-transform:rotate(-90deg) translateY(-100%);transform:rotate(-90deg) translateY(-100%);-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.ha-pricing-table-title{margin-top:0;margin-bottom:.5rem;color:#242424;font-weight:400;font-size:24px}.ha-pricing-table-price{margin-bottom:3rem}.ha-pricing-table-price-tag{margin-bottom:.5rem;color:#242424;font-weight:700;font-size:60px;line-height:normal}.ha-pricing-table-currency{font-size:24px}.ha-pricing-table-period{color:#8c8c8c;font-size:16px}.ha-pricing-table-body{margin-bottom:3rem}.ha-pricing-table-features-title{margin-top:0;margin-bottom:1rem;font-weight:700;font-size:16px}.ha-pricing-table-features-list{margin:0;padding:0;list-style:none}.ha-pricing-table-features-list li{margin-bottom:1rem;font-size:16px}.ha-pricing-table-features-list i{margin-right:.5rem;min-width:15px;font-size:.8em}.ha-pricing-table-btn{display:inline-block;padding:.8rem 2rem;border-radius:40px;background-color:#e2498a;color:#fff;text-decoration:none;text-transform:uppercase;font-size:12px;-webkit-transition:all .3s;transition:all .3s}.ha-pricing-table-btn:hover{background-color:#562dd4;color:#fff}.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-pricing-table>.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}.ha-logo-grid-wrapper:after,.ha-logo-grid-wrapper:before{display:table;content:" "}.ha-logo-grid-wrapper:after{clear:both}.ha-step-flow>.elementor-widget-container{padding:30px;text-align:center}.ha-step-arrow{position:absolute;top:49%;left:calc(100% + 50px);display:inline-block;width:100px;border-top:1px dashed #ddd}.ha-step-arrow:after{position:absolute;right:-6px;height:1.5em;color:#ddd;content:"\e90b";font-size:18px;font-family:"Happy Icons"!important;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-steps-icon{position:relative;display:inline-block;margin-bottom:2rem;padding:40px;border-radius:50%;background-color:#f1f4f8;color:#242424;text-align:center;font-size:46px}.ha-steps-icon i{position:relative;display:block;width:1em;height:1em}.ha-steps-icon i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-steps-icon .ha-steps-label{position:absolute;top:5px;right:0;padding:10px 12px;border:3px solid #fff;border-radius:20px;background-color:#e2498a;color:#fff;font-size:12px;line-height:0}.ha-steps-title{margin-top:0;margin-bottom:30px;font-weight:700;font-size:16px}.ha-steps-title a{display:block;color:#562dd4}.ha-steps-title a:hover{color:#242424}.ha-step-description{margin:0;color:#616161;font-weight:400;font-size:16px;line-height:1.5}
|
assets/css/widgets/btn.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-btn{display:inline-block;vertical-align:middle;text-align:center;text-decoration:none;font-size:14px;line-height:1;-webkit-transition:all .3s;transition:all .3s}.ha-btn:not(.ha-btn--link){padding:15px 25px;border-radius:.25rem;background-color:#562dd4;color:#fff}.ha-btn:not(.ha-btn--link):focus,.ha-btn:not(.ha-btn--link):hover{background-color:#e2498a}.ha-btn.ha-btn--link{color:#562dd4}.ha-btn.ha-btn--link:focus,.ha-btn.ha-btn--link:hover{color:#e2498a}.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}
|
assets/css/widgets/card.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-card>.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}.ha-card-figure{position:relative;height:250px}.ha-card-figure>img{width:100%;height:100%;border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px);vertical-align:bottom}.ha-card-body{padding:1.5rem}.ha-card-title{margin-top:0;margin-bottom:.75rem;color:#151515;font-weight:700;font-size:22px}.ha-card-text{margin-bottom:2rem;color:#616161;font-size:16px;line-height:1.7}.ha-card-text>p{margin-top:0;margin-bottom:0}.ha-card--top .ha-card-figure{display:inline-block;width:100%}.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}
|
assets/css/widgets/common.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.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}
|
assets/css/widgets/dual-btn.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.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:#562dd4}.ha-dual-btn--left:focus,.ha-dual-btn--left:hover{background-color:#4423ab}.ha-dual-btn--right{border-top-right-radius:50px;border-bottom-right-radius:50px;background-color:#e2498a}.ha-dual-btn--right:focus,.ha-dual-btn--right:hover{background-color:#d6226e}.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/css/widgets/flip-box.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-flip-box-container:after{display:block;visibility:hidden;clear:both;height:0;content:" ";font-size:0}.ha-flip-box-container .ha-flip-box-inner{position:relative;z-index:1;margin:0;padding:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-back{z-index:1}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-front{z-index:-1}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-inner-wrapper{position:relative;-webkit-transform:translateZ(0);-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{top:0;right:0;left:0;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;height:250px;background-position:center;background-clip:padding-box;background-size:cover;background-repeat:no-repeat;text-align:center;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{background-color:transparent;position:relative;bottom:0;z-index:10;padding:30px;border:1px solid #ddd;border-radius:.3rem}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front:before{position:absolute;top:0;left:0;z-index:-9;width:100%;height:100%;background-color:transparent;content:""}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back{position:absolute;z-index:-1;padding:46px;border-radius:.3rem;background-color:#562dd4;color:#fff}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner{position:relative;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;width:100%}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text{text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text p,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text p{margin-top:10px;margin-bottom:0}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon.icon{padding:20px;border-radius:50%;background-color:#f1f4f8;color:#242424}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;font-size:28px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon img,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon img{width:60px;height:60px;vertical-align:middle}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-box-heading{margin:0;font-weight:700;font-size:20px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner p{margin-bottom:0;font-size:16px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-box-heading-back{margin:0;color:#fff;font-size:18px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;color:#fff;font-size:20px}.ha-flip-box-container .ha-flip-box-back-inner .button-wrap{margin-top:12px}.ha-flip-box-container .ha-flip-box-back-inner .ha-flip-btn{display:inline-block;padding:.8rem 2.5rem;border-radius:4px;background-color:#fff;color:#562dd4;text-decoration:none;text-transform:uppercase;font-size:12px;-webkit-transition:all .3s;transition:all .3s}.ha-flip-box-container .ha-flip-box-back-inner .ha-flip-btn:hover{background-color:#fff;color:#562dd4}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-back{-webkit-transform:rotateY(0);transform:rotateY(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-back{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-front{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-left .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-left:hover .ha-flip-box-back{-webkit-transform:rotateY(0);transform:rotateY(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-left .ha-flip-box-back{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.ha-flip-box-container .ha-flip-box.ha-flip-left:hover .ha-flip-box-front{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-back{-webkit-transform:rotateX(0);transform:rotateX(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-back{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-front{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-down .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-down:hover .ha-flip-box-back{-webkit-transform:rotateX(0);transform:rotateX(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-down .ha-flip-box-back{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-down:hover .ha-flip-box-front{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-back,.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-front{-webkit-transition:-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275),-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275)}
|
assets/css/widgets/gallery-filter.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-gallery-filter{margin:0 10px 2rem;padding:0;list-style:none}.ha-gallery-filter>li{display:inline-block;margin-bottom:10px}.ha-gallery-filter>li:not(:last-child){margin-right:10px}.ha-gallery-filter>li>button{display:block;padding:10px 25px;border:2px solid #562dd4;border-radius:.25rem;background-color:transparent;color:#562dd4;text-transform:uppercase;font-size:14px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ha-gallery-filter>li>button:focus,.ha-gallery-filter>li>button:hover{outline:0;background-color:#562dd4;color:#fff}.ha-gallery-filter>.ha-filter-active>button{background-color:#562dd4;color:#fff}
|
assets/css/widgets/gradient-heading.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-gradient-heading{margin-top:0;margin-bottom:0}.ha-gradient-heading>a{color:inherit;text-decoration:none}
|
assets/css/widgets/hover-box.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-hover-box{overflow:hidden}.ha-hover-box .ha-hover-box-main{position:relative;overflow:hidden}.ha-hover-box-wrapper,.ha-hover-box-wrapper .ha-hover-box-content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%}.ha-hover-box-wrapper{overflow:hidden;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding:50px;max-height:100%;height:400px;-webkit-transition-duration:.4s;transition-duration:.4s}.ha-hover-box-wrapper:before{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;content:""}.ha-hover-box-wrapper:hover{-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transform:scale(1.06);-ms-transform:scale(1.06);transform:scale(1.06)}.ha-hover-box-wrapper:hover .ha-hover-box-content{opacity:0;-webkit-transition-delay:0ms;transition-delay:0ms;-webkit-transition-timing-function:cubic-bezier(.57,.21,.69,1);transition-timing-function:cubic-bezier(.57,.21,.69,1);-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transform:translate(0,36px);-ms-transform:translate(0,36px);transform:translate(0,36px)}.ha-hover-box-wrapper .ha-hover-box-content{z-index:99;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;text-align:left;opacity:1;-webkit-transition:opacity .2s ease-in-out,-webkit-transform .2s ease-in-out;transition:opacity .2s ease-in-out,transform .2s ease-in-out;transition:opacity .2s ease-in-out,transform .2s ease-in-out,-webkit-transform .2s ease-in-out;-webkit-transition-delay:.1s;transition-delay:.1s;-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.ha-hover-box-wrapper .ha-hover-sub-title{display:inline-block;margin-bottom:20px;color:#222}.ha-hover-box-wrapper .ha-hover-title{margin-top:0;margin-bottom:10px;color:#222}.ha-hover-box-wrapper .ha-hover-description{margin:0;color:#222}.ha-hover-box-wrapper.reverse:hover .ha-hover-box-content{opacity:1;-webkit-transition-delay:.1s;transition-delay:.1s;-webkit-transform:translate(0,-16px);-ms-transform:translate(0,-16px);transform:translate(0,-16px)}.ha-hover-box-wrapper.reverse .ha-hover-box-content{opacity:0;-webkit-transition-delay:0s;transition-delay:0s}.ha-pre--column .ha-hover-sub-title{margin-bottom:20px}.ha-pre--column-reverse p.ha-hover-sub-title{margin-top:20px;margin-bottom:0}
|
assets/css/widgets/icon-box.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-icon-box>.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;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{position:relative;display:block;width:1em;height:1em;-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.ha-icon-box-icon>i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.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}
|
assets/css/widgets/image-comparison.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-image-compare>.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}.ha-image-compare .twentytwenty-container,.ha-image-compare .twentytwenty-wrapper{border-radius:inherit}
|
assets/css/widgets/infobox.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-infobox>.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;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-infobox-figure>i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-infobox-figure>img{width:100%;height:100%;vertical-align:bottom}.ha-infobox-text+.ha-btn--link{margin-top:1rem}.ha-infobox-text>p{margin-top:0;margin-bottom:0}
|
assets/css/widgets/justified-gallery.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-justified-gallery-item,.ha-justified-gallery-item>img{border-radius:6px}.ha-justified-gallery .justified-gallery>.ha-justified-gallery-item>.caption{bottom:-100px!important;padding:10px;-webkit-transition:all .25s!important;transition:all .25s!important;-webkit-animation:haSmoothReveal .3s forwards;animation:haSmoothReveal .3s forwards}.ha-justified-gallery .justified-gallery>.ha-justified-gallery-item>.caption.caption-visible{bottom:0!important}.ha-justified-gallery .justified-gallery>.entry-visible>a>img,.ha-justified-gallery .justified-gallery>.entry-visible>img{-webkit-transition:all 300ms,opacity 500ms ease-in;transition:all 300ms,opacity 500ms ease-in}@-webkit-keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}
|
assets/css/widgets/logo-grid.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-logo-grid-wrapper:after,.ha-logo-grid-wrapper:before{display:table;content:" "}.ha-logo-grid-wrapper:after{clear:both}.ha-logo-grid-item{float:left;overflow:hidden;height:180px;border-color:#e7e7e7}.ha-logo-grid-figure{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;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0;padding:30px;width:100%;height:100%}.ha-logo-grid-img{max-height:100%}@media (min-width:1025px){.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:767px){.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc(100%/6)}}.ha-logo-grid--tictactoe .ha-logo-grid-item{border-width:2px 2px 0 0;border-style:solid}@media (min-width:1025px){.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:767px){.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}.ha-logo-grid--border .ha-logo-grid-item{border-width:0 2px 2px 0;border-style:solid}.ha-logo-grid--border .ha-logo-grid-item:first-child{border-top-left-radius:10px}.ha-logo-grid--border .ha-logo-grid-item:last-child{border-bottom-right-radius:10px}@media (min-width:1025px){.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:767px){.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}.ha-logo-grid--box .ha-logo-grid-wrapper{margin:-.5rem}.ha-logo-grid--box .ha-logo-grid-item{margin:.5rem;border-width:2px;border-style:solid;border-radius:.5rem}@media (min-width:1025px){.ha-logo-grid--box.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--box.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:767px){.ha-logo-grid--box.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}
|
assets/css/widgets/member.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-member>.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;padding:1.25rem}.ha-member-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-member-figure img{width:100%;height:100%;vertical-align:bottom}.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{display:inline-block;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}
|
assets/css/widgets/number.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-number-body{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding:6px;width:50px;height:50px;border-radius:100%;background-color:#562dd4;color:#fff;text-align:center;font-size:20px}.ha-number-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ha-number-text{position:relative;z-index:1;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}
|
assets/css/widgets/pricing-table.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-pricing-table>.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;position:relative;overflow:hidden;padding:3em 4em}.ha-pricing-table-badge{position:absolute;top:0;padding:.8rem 1rem;background-color:#e2498a;color:#fff;line-height:1}.ha-pricing-table-badge--left{left:0;-webkit-transform:rotate(-90deg) translateX(-100%);-ms-transform:rotate(-90deg) translateX(-100%);transform:rotate(-90deg) translateX(-100%);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.ha-pricing-table-badge--right{right:0;-webkit-transform:rotate(-90deg) translateY(-100%);-ms-transform:rotate(-90deg) translateY(-100%);transform:rotate(-90deg) translateY(-100%);-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.ha-pricing-table-title{margin-top:0;margin-bottom:.5rem;color:#242424;font-weight:400;font-size:24px}.ha-pricing-table-price{margin-bottom:3rem}.ha-pricing-table-price-tag{margin-bottom:.5rem;color:#242424;font-weight:700;font-size:60px;line-height:normal}.ha-pricing-table-currency{font-size:24px}.ha-pricing-table-period{color:#8c8c8c;font-size:16px}.ha-pricing-table-body{margin-bottom:3rem}.ha-pricing-table-features-title{margin-top:0;margin-bottom:1rem;font-weight:700;font-size:16px}.ha-pricing-table-features-list{margin:0;padding:0;list-style:none}.ha-pricing-table-features-list li{margin-bottom:1rem;font-size:16px}.ha-pricing-table-features-list i{margin-right:.5rem;min-width:15px;font-size:.8em}.ha-pricing-table-btn{display:inline-block;padding:.8rem 2rem;border-radius:40px;background-color:#e2498a;color:#fff;text-decoration:none;text-transform:uppercase;font-size:12px;-webkit-transition:all .3s;transition:all .3s}.ha-pricing-table-btn:hover{background-color:#562dd4;color:#fff}
|
assets/css/widgets/review.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.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}.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}
|
assets/css/widgets/skills.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-skills>.elementor-widget-container{padding-top:1px}.ha-skill{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-radius:15px;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{height:30px}.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;width:10%;border-radius:inherit;background-color:#562dd4;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}
|
assets/css/widgets/slider-carousel.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-carousel .slick-vertical .slick-slide,.ha-slider .slick-vertical .slick-slide{border:0}.ha-carousel .slick-next,.ha-carousel .slick-prev,.ha-slider .slick-next,.ha-slider .slick-prev{z-index:999;padding:0;border:1px solid rgba(255,255,255,.8);border-radius:50%;background-color:rgba(255,255,255,.8);color:#8c8c8c;text-align:center;font-size:12px;opacity:1}.ha-carousel .slick-next:focus,.ha-carousel .slick-next:hover,.ha-carousel .slick-prev:focus,.ha-carousel .slick-prev:hover,.ha-slider .slick-next:focus,.ha-slider .slick-next:hover,.ha-slider .slick-prev:focus,.ha-slider .slick-prev:hover{background-color:#fff}.ha-carousel .slick-next:before,.ha-carousel .slick-prev:before,.ha-slider .slick-next:before,.ha-slider .slick-prev:before{content:""}.ha-carousel .slick-disabled,.ha-slider .slick-disabled{opacity:.7}.ha-carousel .slick-prev,.ha-slider .slick-prev{left:25px}.ha-carousel .slick-next,.ha-slider .slick-next{right:25px}.ha-carousel .slick-dots,.ha-slider .slick-dots{bottom:-40px}.ha-carousel .slick-dots li,.ha-slider .slick-dots li{margin-right:2px;margin-left:2px}.ha-carousel .slick-dots li button:focus,.ha-carousel .slick-dots li button:hover,.ha-slider .slick-dots li button:focus,.ha-slider .slick-dots li button:hover{background-color:transparent}.ha-carousel .slick-dots li button:before,.ha-slider .slick-dots li button:before{color:#1b1b1b;opacity:1}.ha-carousel .slick-dots .slick-active button:before,.ha-carousel .slick-dots li button:hover:before,.ha-slider .slick-dots .slick-active button:before,.ha-slider .slick-dots li button:hover:before{-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5)}.ha-carousel .slick-next,.ha-carousel .slick-prev{width:40px;height:40px;line-height:40px}.ha-slider .slick-next,.ha-slider .slick-prev{width:50px;height:50px;line-height:50px}.ha-carousel .slick-slider:not(.slick-vertical) .slick-slide{padding-right:5px;padding-left:5px}.ha-carousel .slick-slider.slick-vertical .slick-slide{padding-top:5px;padding-bottom:5px}.ha-slick-item{position:relative;overflow:hidden;vertical-align:bottom}.ha-slick-content{position:absolute;bottom:0;padding:1.5rem;width:100%;background:-webkit-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3));background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3))}.ha-slick-title{margin-top:0;margin-bottom:.2rem;color:#fff;font-size:20px}.ha-slick-subtitle{margin:0;color:#fff}
|
assets/css/widgets/steps-flow.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-step-flow>.elementor-widget-container{padding:30px;text-align:center}.ha-step-arrow{position:absolute;top:49%;left:calc(100% + 50px);display:inline-block;width:100px;border-top:1px dashed #ddd}.ha-step-arrow:after{position:absolute;right:-6px;height:1.5em;color:#ddd;content:"\e90b";font-size:18px;font-family:"Happy Icons"!important;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-steps-icon{position:relative;display:inline-block;margin-bottom:2rem;padding:40px;border-radius:50%;background-color:#f1f4f8;color:#242424;text-align:center;font-size:46px}.ha-steps-icon i{position:relative;display:block;width:1em;height:1em}.ha-steps-icon i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-steps-icon .ha-steps-label{position:absolute;top:5px;right:0;padding:10px 12px;border:3px solid #fff;border-radius:20px;background-color:#e2498a;color:#fff;font-size:12px;line-height:0}.ha-steps-title{margin-top:0;margin-bottom:30px;font-weight:700;font-size:16px}.ha-steps-title a{display:block;color:#562dd4}.ha-steps-title a:hover{color:#242424}.ha-step-description{margin:0;color:#616161;font-weight:400;font-size:16px;line-height:1.5}
|
assets/css/widgets/testimonial.min.css
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
.ha-testimonial--basic>.elementor-widget-container{padding:2rem;border:1px solid #ececec;border-radius:.5rem}.ha-testimonial--basic .ha-testimonial__content{margin-bottom:2.5em}.ha-testimonial--bubble .ha-testimonial__content{position:relative;margin-bottom:1.5rem;padding:2rem;border-radius:6px;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);line-height:1.6rem}.ha-testimonial--bubble .ha-testimonial__content:after{position:absolute;bottom:-14px;color:#fff;content:"\e911";font-style:normal;font-size:36px;font-family:"Happy Icons";-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.ha-testimonial--left.ha-testimonial--bubble .ha-testimonial__content:after{left:15px}.ha-testimonial--center.ha-testimonial--bubble .ha-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) rotate(-180deg);-ms-transform:translateX(-50%) rotate(-180deg);transform:translateX(-50%) rotate(-180deg)}.ha-testimonial--right.ha-testimonial--bubble .ha-testimonial__content:after{right:15px}.ha-testimonial__reviewer{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;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-testimonial__reviewer-thumb{width:65px;height:65px}.ha-testimonial__reviewer-thumb>img{width:100%;height:100%;border-radius:50%;-o-object-fit:cover;object-fit:cover}.ha-testimonial__reviewer-name{margin-bottom:.3rem;color:#562dd4;font-weight:700;font-size:18px}.ha-testimonial__reviewer-title{color:#8c8c8c;font-size:16px}.ha-testimonial--left .ha-testimonial__reviewer-meta{padding-left:1em}.ha-testimonial--center .ha-testimonial__reviewer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-testimonial--center .ha-testimonial__reviewer-meta{padding-top:1em}.ha-testimonial--right .ha-testimonial__reviewer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-testimonial--right .ha-testimonial__reviewer-meta{padding-right:1em}.ha-testimonial--left{text-align:left}.ha-testimonial--right{text-align:right}.ha-testimonial--center{text-align:center}
|
assets/js/happy-addons.js
CHANGED
@@ -231,30 +231,62 @@ window.Happy = window.Happy || {};
|
|
231 |
Â
}
|
232 |
Â
});
|
233 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
234 |
Â
elementorFrontend.hooks.addAction(
|
235 |
Â
'frontend/element_ready/ha-image-compare.default',
|
236 |
Â
Happy.initImageComparison
|
237 |
Â
);
|
238 |
-
|
239 |
Â
elementorFrontend.hooks.addAction(
|
240 |
Â
'frontend/element_ready/ha-justified-gallery.default',
|
241 |
Â
Happy.initJustifiedGallery
|
242 |
Â
);
|
243 |
-
|
244 |
Â
elementorFrontend.hooks.addAction(
|
245 |
Â
'frontend/element_ready/ha-slider.default',
|
246 |
Â
function($scope) {
|
247 |
Â
elementorFrontend.elementsHandler.addHandler(Slick, {$element: $scope});
|
248 |
Â
}
|
249 |
Â
);
|
250 |
-
|
251 |
Â
elementorFrontend.hooks.addAction(
|
252 |
Â
'frontend/element_ready/ha-carousel.default',
|
253 |
Â
function($scope) {
|
254 |
Â
elementorFrontend.elementsHandler.addHandler(Slick, {$element: $scope});
|
255 |
Â
}
|
256 |
Â
);
|
257 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
258 |
Â
elementorFrontend.hooks.addAction(
|
259 |
Â
'frontend/element_ready/widget',
|
260 |
Â
function($scope) {
|
231 |
Â
}
|
232 |
Â
});
|
233 |
Â
|
234 |
+
var NumberHandler = function($scope) {
|
235 |
+
elementorFrontend.waypoint($scope, function () {
|
236 |
+
var $number = $scope.find('.ha-number-text');
|
237 |
+
$number.numerator($number.data('animation'));
|
238 |
+
});
|
239 |
+
};
|
240 |
+
|
241 |
+
var SkillHandler = function($scope) {
|
242 |
+
elementorFrontend.waypoint($scope, function () {
|
243 |
+
$scope.find('.ha-skill-level').each(function() {
|
244 |
+
var $current = $(this),
|
245 |
+
$lt = $current.find('.ha-skill-level-text'),
|
246 |
+
lv = $current.data('level');
|
247 |
+
|
248 |
+
$current.animate({
|
249 |
+
width: lv+'%'
|
250 |
+
}, 500);
|
251 |
+
$lt.numerator({
|
252 |
+
toValue: lv + '%',
|
253 |
+
duration: 1300,
|
254 |
+
onComplete: function() {
|
255 |
+
$lt.append('%');
|
256 |
+
}
|
257 |
+
});
|
258 |
+
});
|
259 |
+
});
|
260 |
+
};
|
261 |
+
|
262 |
Â
elementorFrontend.hooks.addAction(
|
263 |
Â
'frontend/element_ready/ha-image-compare.default',
|
264 |
Â
Happy.initImageComparison
|
265 |
Â
);
|
Â
|
|
266 |
Â
elementorFrontend.hooks.addAction(
|
267 |
Â
'frontend/element_ready/ha-justified-gallery.default',
|
268 |
Â
Happy.initJustifiedGallery
|
269 |
Â
);
|
Â
|
|
270 |
Â
elementorFrontend.hooks.addAction(
|
271 |
Â
'frontend/element_ready/ha-slider.default',
|
272 |
Â
function($scope) {
|
273 |
Â
elementorFrontend.elementsHandler.addHandler(Slick, {$element: $scope});
|
274 |
Â
}
|
275 |
Â
);
|
Â
|
|
276 |
Â
elementorFrontend.hooks.addAction(
|
277 |
Â
'frontend/element_ready/ha-carousel.default',
|
278 |
Â
function($scope) {
|
279 |
Â
elementorFrontend.elementsHandler.addHandler(Slick, {$element: $scope});
|
280 |
Â
}
|
281 |
Â
);
|
282 |
+
elementorFrontend.hooks.addAction(
|
283 |
+
'frontend/element_ready/ha-number.default',
|
284 |
+
NumberHandler
|
285 |
+
);
|
286 |
+
elementorFrontend.hooks.addAction(
|
287 |
+
'frontend/element_ready/ha-skills.default',
|
288 |
+
SkillHandler
|
289 |
+
);
|
290 |
Â
elementorFrontend.hooks.addAction(
|
291 |
Â
'frontend/element_ready/widget',
|
292 |
Â
function($scope) {
|
assets/js/happy-addons.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
"use strict";window.Happy=window.Happy||{},function(t,e,
|
1 |
+
"use strict";window.Happy=window.Happy||{},function(t,e,n){function i(e,n){var i=e.find(".hajs-gallery-filter");i.length&&i.on("click","button",function(e){e.stopPropagation();var i=t(this);i.parent().addClass("ha-filter-active").siblings().removeClass("ha-filter-active"),n(i.data("filter"))})}var s=t(n);t.fn.getHappySettings=function(){return this.data("happy-settings")},e.initImageComparison=function(t){var e=t.find(".hajs-image-comparison"),n=e.getHappySettings();n[{on_hover:"move_slider_on_hover",on_swipe:"move_with_handle_only",on_click:"click_to_move"}[n.move_handle||"on_swipe"]]=!0,delete n.move_handle,e.imagesLoaded().done(function(){e.twentytwenty(n)})},e.initJustifiedGallery=function(e){var n=e.find(".hajs-justified-gallery"),s=n.getHappySettings();n.justifiedGallery(t.extend({},{rowHeight:150,lastRow:"justify",margins:10},s)),i(e,function(t){n.justifiedGallery({lastRow:"*"===t?s.lastRow:"nojustify",filter:t})})},s.on("elementor/frontend/init",function(){var n=elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$container=this.$element.find(".elementor-widget-container")[0],this.run()},getDefaultSettings:function(){return{targets:this.$container,loop:!0,direction:"alternate",easing:"easeInOutSine"}},onElementChange:function(){this.animation&&this.animation.restart(),this.run()},getConfig:function(t){return this.getElementSettings("ha_floating_fx_"+t)},run:function(){var t=this.getDefaultSettings();this.getConfig("translate_toggle")&&((this.getConfig("translate_x.size")||this.getConfig("translate_x.sizes.to"))&&(t.translateX={value:[this.getConfig("translate_x.sizes.from")||0,this.getConfig("translate_x.size")||this.getConfig("translate_x.sizes.to")],duration:this.getConfig("translate_duration.size"),delay:this.getConfig("translate_delay.size")||0}),(this.getConfig("translate_y.size")||this.getConfig("translate_y.sizes.to"))&&(t.translateY={value:[this.getConfig("translate_y.sizes.from")||0,this.getConfig("translate_y.size")||this.getConfig("translate_y.sizes.to")],duration:this.getConfig("translate_duration.size"),delay:this.getConfig("translate_delay.size")||0})),this.getConfig("rotate_toggle")&&((this.getConfig("rotate_x.size")||this.getConfig("rotate_x.sizes.to"))&&(t.rotateX={value:[this.getConfig("rotate_x.sizes.from")||0,this.getConfig("rotate_x.size")||this.getConfig("rotate_x.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0}),(this.getConfig("rotate_y.size")||this.getConfig("rotate_y.sizes.to"))&&(t.rotateY={value:[this.getConfig("rotate_y.sizes.from")||0,this.getConfig("rotate_y.size")||this.getConfig("rotate_y.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0}),(this.getConfig("rotate_z.size")||this.getConfig("rotate_z.sizes.to"))&&(t.rotateZ={value:[this.getConfig("rotate_z.sizes.from")||0,this.getConfig("rotate_z.size")||this.getConfig("rotate_z.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0})),this.getConfig("scale_toggle")&&((this.getConfig("scale_x.size")||this.getConfig("scale_x.sizes.to"))&&(t.scaleX={value:[this.getConfig("scale_x.sizes.from")||0,this.getConfig("scale_x.size")||this.getConfig("scale_x.sizes.to")],duration:this.getConfig("scale_duration.size"),delay:this.getConfig("scale_delay.size")||0}),(this.getConfig("scale_y.size")||this.getConfig("scale_y.sizes.to"))&&(t.scaleY={value:[this.getConfig("scale_y.sizes.from")||0,this.getConfig("scale_y.size")||this.getConfig("scale_y.sizes.to")],duration:this.getConfig("scale_duration.size"),delay:this.getConfig("scale_delay.size")||0})),(this.getConfig("translate_toggle")||this.getConfig("rotate_toggle")||this.getConfig("scale_toggle"))&&(this.$container.style.setProperty("will-change","transform"),this.animation=anime(t))}}),i=elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$container=this.$element.find(".hajs-slick"),this.run()},isCarousel:function(){return this.$element.hasClass("ha-carousel")},getDefaultSettings:function(){return{arrows:!1,dots:!1,checkVisible:!1,infinite:!0,slidesToShow:this.isCarousel()?3:1,rows:0,prevArrow:'<button type="button" class="slick-prev"><i class="fa fa-chevron-left"></i></button>',nextArrow:'<button type="button" class="slick-next"><i class="fa fa-chevron-right"></i></button>'}},onElementChange:function(){this.$container.slick("unslick"),this.run()},getReadySettings:function(){var e={infinite:!!this.getElementSettings("loop"),autoplay:!!this.getElementSettings("autoplay"),autoplaySpeed:this.getElementSettings("autoplay_speed"),speed:this.getElementSettings("animation_speed"),centerMode:!!this.getElementSettings("center"),vertical:!!this.getElementSettings("vertical"),slidesToScroll:1};switch(this.getElementSettings("navigation")){case"arrow":e.arrows=!0;break;case"dots":e.dots=!0;break;case"both":e.arrows=!0,e.dots=!0}return this.isCarousel()&&(e.slidesToShow=this.getElementSettings("slides_to_show")||3,e.responsive=[{breakpoint:elementorFrontend.config.breakpoints.lg,settings:{slidesToShow:this.getElementSettings("slides_to_show_tablet")||e.slidesToShow}},{breakpoint:elementorFrontend.config.breakpoints.md,settings:{slidesToShow:this.getElementSettings("slides_to_show_mobile")||this.getElementSettings("slides_to_show_tablet")||e.slidesToShow}}]),t.extend({},this.getDefaultSettings(),e)},run:function(){this.$container.slick(this.getReadySettings())}}),s=function(t){elementorFrontend.waypoint(t,function(){var e=t.find(".ha-number-text");e.numerator(e.data("animation"))})},o=function(e){elementorFrontend.waypoint(e,function(){e.find(".ha-skill-level").each(function(){var e=t(this),n=e.find(".ha-skill-level-text"),i=e.data("level");e.animate({width:i+"%"},500),n.numerator({toValue:i+"%",duration:1300,onComplete:function(){n.append("%")}})})})};elementorFrontend.hooks.addAction("frontend/element_ready/ha-image-compare.default",e.initImageComparison),elementorFrontend.hooks.addAction("frontend/element_ready/ha-justified-gallery.default",e.initJustifiedGallery),elementorFrontend.hooks.addAction("frontend/element_ready/ha-slider.default",function(t){elementorFrontend.elementsHandler.addHandler(i,{$element:t})}),elementorFrontend.hooks.addAction("frontend/element_ready/ha-carousel.default",function(t){elementorFrontend.elementsHandler.addHandler(i,{$element:t})}),elementorFrontend.hooks.addAction("frontend/element_ready/ha-number.default",s),elementorFrontend.hooks.addAction("frontend/element_ready/ha-skills.default",o),elementorFrontend.hooks.addAction("frontend/element_ready/widget",function(t){elementorFrontend.elementsHandler.addHandler(n,{$element:t})})})}(jQuery,Happy,window);
|
base.php
CHANGED
@@ -6,6 +6,7 @@
|
|
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;
|
@@ -14,7 +15,7 @@ defined( 'ABSPATH' ) || die();
|
|
14 |
Â
|
15 |
Â
class Base {
|
16 |
Â
|
17 |
-
const VERSION = '1.
|
18 |
Â
|
19 |
Â
const MINIMUM_ELEMENTOR_VERSION = '2.5.0';
|
20 |
Â
|
@@ -68,8 +69,13 @@ class Base {
|
|
68 |
Â
Widgets::init();
|
69 |
Â
Assets::init();
|
70 |
Â
Happy_Effects::init();
|
Â
|
|
71 |
Â
|
72 |
Â
$this->init_appsero_tracking();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
73 |
Â
}
|
74 |
Â
|
75 |
Â
/**
|
@@ -98,10 +104,15 @@ class Base {
|
|
98 |
Â
require( __DIR__ . '/classes/widget-manager.php' );
|
99 |
Â
require( __DIR__ . '/classes/asset-manager.php' );
|
100 |
Â
require( __DIR__ . '/classes/happy-effects.php' );
|
Â
|
|
101 |
Â
|
102 |
Â
if ( is_admin() ) {
|
103 |
Â
require( __DIR__ . '/classes/class.communicator.php' );
|
104 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
105 |
Â
}
|
106 |
Â
|
107 |
Â
/**
|
@@ -202,6 +213,7 @@ class Base {
|
|
202 |
Â
public function register_controls() {
|
203 |
Â
require( __DIR__ . '/controls/foreground.php' );
|
204 |
Â
$foreground = __NAMESPACE__ . '\Controls\Group_Control_Foreground';
|
Â
|
|
205 |
Â
\Elementor\Plugin::instance()->controls_manager->add_group_control( $foreground::get_type(), new $foreground() );
|
206 |
Â
}
|
207 |
Â
}
|
6 |
Â
*/
|
7 |
Â
namespace Happy_Addons\Elementor;
|
8 |
Â
|
9 |
+
use Happy_Addons\Elementor\Assets\OnDemand_Loader;
|
10 |
Â
use Happy_Addons\Elementor\Manager\Assets;
|
11 |
Â
use Happy_Addons\Elementor\Manager\Widgets;
|
12 |
Â
use Happy_Addons\Elementor\Extension\Happy_Effects;
|
15 |
Â
|
16 |
Â
class Base {
|
17 |
Â
|
18 |
+
const VERSION = '1.4.0';
|
19 |
Â
|
20 |
Â
const MINIMUM_ELEMENTOR_VERSION = '2.5.0';
|
21 |
Â
|
69 |
Â
Widgets::init();
|
70 |
Â
Assets::init();
|
71 |
Â
Happy_Effects::init();
|
72 |
+
OnDemand_Loader::init();
|
73 |
Â
|
74 |
Â
$this->init_appsero_tracking();
|
75 |
+
|
76 |
+
if ( is_user_logged_in() ) {
|
77 |
+
Admin_Bar::init();
|
78 |
+
}
|
79 |
Â
}
|
80 |
Â
|
81 |
Â
/**
|
104 |
Â
require( __DIR__ . '/classes/widget-manager.php' );
|
105 |
Â
require( __DIR__ . '/classes/asset-manager.php' );
|
106 |
Â
require( __DIR__ . '/classes/happy-effects.php' );
|
107 |
+
require( __DIR__ . '/classes/class.ondemand-loader.php' );
|
108 |
Â
|
109 |
Â
if ( is_admin() ) {
|
110 |
Â
require( __DIR__ . '/classes/class.communicator.php' );
|
111 |
Â
}
|
112 |
+
|
113 |
+
if ( is_user_logged_in() ) {
|
114 |
+
require( __DIR__ . '/classes/admin-bar.php' );
|
115 |
+
}
|
116 |
Â
}
|
117 |
Â
|
118 |
Â
/**
|
213 |
Â
public function register_controls() {
|
214 |
Â
require( __DIR__ . '/controls/foreground.php' );
|
215 |
Â
$foreground = __NAMESPACE__ . '\Controls\Group_Control_Foreground';
|
216 |
+
|
217 |
Â
\Elementor\Plugin::instance()->controls_manager->add_group_control( $foreground::get_type(), new $foreground() );
|
218 |
Â
}
|
219 |
Â
}
|
base/widget-base.php
CHANGED
@@ -125,4 +125,50 @@ abstract class Base extends Widget_Base {
|
|
125 |
Â
parent::render_edit_tools();
|
126 |
Â
}
|
127 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
128 |
Â
}
|
125 |
Â
parent::render_edit_tools();
|
126 |
Â
}
|
127 |
Â
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* Overriding the parent method
|
131 |
+
*
|
132 |
+
* Add inline editing attributes.
|
133 |
+
*
|
134 |
+
* Define specific area in the element to be editable inline. The element can have several areas, with this method
|
135 |
+
* you can set the area inside the element that can be edited inline. You can also define the type of toolbar the
|
136 |
+
* user will see, whether it will be a basic toolbar or an advanced one.
|
137 |
+
*
|
138 |
+
* Note: When you use wysiwyg control use the advanced toolbar, with textarea control use the basic toolbar. Text
|
139 |
+
* control should not have toolbar.
|
140 |
+
*
|
141 |
+
* PHP usage (inside `Widget_Base::render()` method):
|
142 |
+
*
|
143 |
+
* $this->add_inline_editing_attributes( 'text', 'advanced' );
|
144 |
+
* echo '<div ' . $this->get_render_attribute_string( 'text' ) . '>' . $this->get_settings( 'text' ) . '</div>';
|
145 |
+
*
|
146 |
+
* @since 1.8.0
|
147 |
+
* @access protected
|
148 |
+
*
|
149 |
+
* @param string $key Element key.
|
150 |
+
* @param string $toolbar Optional. Toolbar type. Accepted values are `advanced`, `basic` or `none`. Default is
|
151 |
+
* `basic`.
|
152 |
+
* @param string $setting_key Additional settings key in case $key != $setting_key
|
153 |
+
*/
|
154 |
+
protected function add_inline_editing_attributes( $key, $toolbar = 'basic', $setting_key = '' ) {
|
155 |
+
if ( ! \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
|
156 |
+
return;
|
157 |
+
}
|
158 |
+
|
159 |
+
if ( empty( $setting_key ) ) {
|
160 |
+
$setting_key = $key;
|
161 |
+
}
|
162 |
+
|
163 |
+
$this->add_render_attribute( $key, [
|
164 |
+
'class' => 'elementor-inline-editing',
|
165 |
+
'data-elementor-setting-key' => $setting_key,
|
166 |
+
] );
|
167 |
+
|
168 |
+
if ( 'basic' !== $toolbar ) {
|
169 |
+
$this->add_render_attribute( $key, [
|
170 |
+
'data-elementor-inline-editing-toolbar' => $toolbar,
|
171 |
+
] );
|
172 |
+
}
|
173 |
+
}
|
174 |
Â
}
|
classes/admin-bar.php
ADDED
@@ -0,0 +1,100 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
namespace Happy_Addons\Elementor;
|
3 |
+
|
4 |
+
use Happy_Addons\Elementor\Assets\OnDemand_Loader;
|
5 |
+
|
6 |
+
defined( 'ABSPATH' ) || die();
|
7 |
+
|
8 |
+
class Admin_Bar {
|
9 |
+
|
10 |
+
public static function init() {
|
11 |
+
add_action( 'admin_bar_menu', [__CLASS__, 'add_toolbar_items'], 500 );
|
12 |
+
add_action( 'wp_enqueue_scripts', [__CLASS__, 'enqueue_assets'] );
|
13 |
+
add_action( 'admin_enqueue_scripts', [__CLASS__, 'enqueue_assets'] );
|
14 |
+
add_action( 'wp_ajax_ha_clear_cache', [__CLASS__, 'clear_cache' ] );
|
15 |
+
}
|
16 |
+
|
17 |
+
public static function clear_cache() {
|
18 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
19 |
+
return;
|
20 |
+
}
|
21 |
+
|
22 |
+
if ( ! check_ajax_referer( 'ha_clear_cache', 'nonce' ) ) {
|
23 |
+
wp_send_json_error();
|
24 |
+
}
|
25 |
+
$type = isset( $_POST['type'] ) ? $_POST['type'] : '';
|
26 |
+
|
27 |
+
if ( $type === 'page' ) {
|
28 |
+
$post_id = isset( $_POST['post_id'] ) ? $_POST['post_id'] : 0;
|
29 |
+
OnDemand_Loader::clean_only_cache( $post_id );
|
30 |
+
} elseif ( $type === 'all' ) {
|
31 |
+
OnDemand_Loader::clean_all_cache();
|
32 |
+
}
|
33 |
+
wp_send_json_success();
|
34 |
+
}
|
35 |
+
|
36 |
+
public static function enqueue_assets() {
|
37 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
38 |
+
return;
|
39 |
+
}
|
40 |
+
|
41 |
+
wp_enqueue_style(
|
42 |
+
'happy-admin-bar',
|
43 |
+
HAPPY_ASSETS . 'admin/css/admin-bar.css',
|
44 |
+
null,
|
45 |
+
Base::VERSION
|
46 |
+
);
|
47 |
+
|
48 |
+
wp_enqueue_script(
|
49 |
+
'happy-admin-bar',
|
50 |
+
HAPPY_ASSETS . 'admin/js/admin-bar.js',
|
51 |
+
['jquery'],
|
52 |
+
Base::VERSION,
|
53 |
+
true
|
54 |
+
);
|
55 |
+
|
56 |
+
wp_localize_script(
|
57 |
+
'happy-admin-bar',
|
58 |
+
'HappyAdmin',
|
59 |
+
[
|
60 |
+
'nonce' => wp_create_nonce( 'ha_clear_cache' ),
|
61 |
+
'post_id' => get_queried_object_id(),
|
62 |
+
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
63 |
+
]
|
64 |
+
);
|
65 |
+
}
|
66 |
+
|
67 |
+
public static function add_toolbar_items( $admin_bar ) {
|
68 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
69 |
+
return;
|
70 |
+
}
|
71 |
+
|
72 |
+
$admin_bar->add_menu( array(
|
73 |
+
'id' => 'happy-addons',
|
74 |
+
'title' => __( 'HappyAddons', 'happy-elementor-addons' ),
|
75 |
+
'href' => '#',
|
76 |
+
) );
|
77 |
+
|
78 |
+
if ( is_singular() ) {
|
79 |
+
$admin_bar->add_menu( array(
|
80 |
+
'id' => 'ha-clear-page-cache',
|
81 |
+
'parent' => 'happy-addons',
|
82 |
+
'title' => '<i class="dashicons dashicons-update-alt"></i> ' . __( 'Clear Page Cache', 'happy-elementor-addons' ),
|
83 |
+
'href' => '#',
|
84 |
+
'meta' => [
|
85 |
+
'class' => 'hajs-clear-cache ha-clear-page-cache',
|
86 |
+
]
|
87 |
+
) );
|
88 |
+
}
|
89 |
+
|
90 |
+
$admin_bar->add_menu( array(
|
91 |
+
'id' => 'ha-clear-all-cache',
|
92 |
+
'parent' => 'happy-addons',
|
93 |
+
'title' => '<i class="dashicons dashicons-update-alt"></i> ' . __( 'Clear All Cache', 'happy-elementor-addons' ),
|
94 |
+
'href' => '#',
|
95 |
+
'meta' => [
|
96 |
+
'class' => 'hajs-clear-cache ha-clear-all-cache',
|
97 |
+
]
|
98 |
+
) );
|
99 |
+
}
|
100 |
+
}
|
classes/asset-manager.php
CHANGED
@@ -1,6 +1,8 @@
|
|
1 |
Â
<?php
|
Â
|
|
2 |
Â
namespace Happy_Addons\Elementor\Manager;
|
3 |
Â
|
Â
|
|
4 |
Â
use Happy_Addons\Elementor\Base;
|
5 |
Â
|
6 |
Â
defined( 'ABSPATH' ) || die();
|
@@ -12,26 +14,24 @@ class Assets {
|
|
12 |
Â
*/
|
13 |
Â
public static function init() {
|
14 |
Â
// Frontend scripts
|
15 |
-
add_action( '
|
Â
|
|
16 |
Â
|
17 |
Â
// Edit and preview enqueue
|
18 |
-
add_action( 'elementor/preview/enqueue_styles', [__CLASS__, 'enqueue_preview_style'] );
|
19 |
Â
|
20 |
-
|
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 |
-
|
32 |
-
*/
|
33 |
-
public static function enqueue_frontend_scripts() {
|
34 |
-
$suffix = ha_is_script_debug_enabled() ? '.' : '.';
|
35 |
Â
|
36 |
Â
wp_enqueue_style(
|
37 |
Â
'happy-icon',
|
@@ -40,75 +40,79 @@ class Assets {
|
|
40 |
Â
Base::VERSION
|
41 |
Â
);
|
42 |
Â
|
43 |
-
|
Â
|
|
Â
|
|
Â
|
|
44 |
Â
'twentytwenty',
|
45 |
Â
HAPPY_ASSETS . 'vendor/twentytwenty/css/twentytwenty.css',
|
46 |
Â
null,
|
47 |
Â
Base::VERSION
|
48 |
Â
);
|
49 |
Â
|
50 |
-
|
51 |
-
'justifiedGallery',
|
52 |
-
HAPPY_ASSETS . 'vendor/justifiedGallery/css/justifiedGallery.min.css',
|
53 |
-
null,
|
54 |
-
Base::VERSION
|
55 |
-
);
|
56 |
-
|
57 |
-
wp_enqueue_style(
|
58 |
-
'slick',
|
59 |
-
HAPPY_ASSETS . 'vendor/slick/slick.css',
|
60 |
-
null,
|
61 |
-
Base::VERSION
|
62 |
-
);
|
63 |
-
|
64 |
-
wp_enqueue_style(
|
65 |
-
'slick-theme',
|
66 |
-
HAPPY_ASSETS . 'vendor/slick/slick-theme.css',
|
67 |
-
null,
|
68 |
-
Base::VERSION
|
69 |
-
);
|
70 |
-
|
71 |
-
wp_enqueue_style(
|
72 |
-
'happy-elementor-addons',
|
73 |
-
HAPPY_ASSETS . 'css/main' . $suffix . 'css',
|
74 |
-
['elementor-frontend'],
|
75 |
-
Base::VERSION
|
76 |
-
);
|
77 |
-
|
78 |
-
// Scripts
|
79 |
-
wp_enqueue_script(
|
80 |
Â
'jquery-event-move',
|
81 |
Â
HAPPY_ASSETS . 'vendor/twentytwenty/js/jquery.event.move.js',
|
82 |
-
['jquery'],
|
83 |
Â
Base::VERSION,
|
84 |
Â
true
|
85 |
Â
);
|
86 |
Â
|
87 |
-
|
88 |
Â
'jquery-twentytwenty',
|
89 |
Â
HAPPY_ASSETS . 'vendor/twentytwenty/js/jquery.twentytwenty.js',
|
90 |
-
['jquery-event-move'],
|
91 |
Â
Base::VERSION,
|
92 |
Â
true
|
93 |
Â
);
|
94 |
Â
|
95 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
96 |
Â
'jquery-justifiedGallery',
|
97 |
Â
HAPPY_ASSETS . 'vendor/justifiedGallery/js/jquery.justifiedGallery.min.js',
|
98 |
-
['jquery'],
|
99 |
Â
Base::VERSION,
|
100 |
Â
true
|
101 |
Â
);
|
102 |
Â
|
103 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
104 |
Â
'jquery-slick',
|
105 |
Â
HAPPY_ASSETS . 'vendor/slick/slick' . $suffix . 'js',
|
106 |
-
['jquery'],
|
107 |
Â
Base::VERSION,
|
108 |
Â
true
|
109 |
Â
);
|
110 |
Â
|
111 |
-
|
Â
|
|
Â
|
|
Â
|
|
112 |
Â
'anime',
|
113 |
Â
HAPPY_ASSETS . 'vendor/anime/lib/anime.min.js',
|
114 |
Â
null,
|
@@ -116,10 +120,63 @@ class Assets {
|
|
116 |
Â
true
|
117 |
Â
);
|
118 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
119 |
Â
wp_enqueue_script(
|
120 |
Â
'happy-elementor-addons',
|
121 |
Â
HAPPY_ASSETS . 'js/happy-addons' . $suffix . 'js',
|
122 |
-
['
|
123 |
Â
Base::VERSION,
|
124 |
Â
true
|
125 |
Â
);
|
@@ -143,11 +200,11 @@ class Assets {
|
|
143 |
Â
wp_enqueue_script(
|
144 |
Â
'happy-elementor-addons-admin',
|
145 |
Â
HAPPY_ASSETS . 'admin/js/happy-addons.min.js',
|
146 |
-
['elementor-editor'],
|
147 |
Â
Base::VERSION,
|
148 |
Â
true
|
149 |
-
|
150 |
-
|
151 |
Â
|
152 |
Â
public static function enqueue_preview_style() {
|
153 |
Â
if ( class_exists( 'WeForms' ) ) {
|
@@ -166,7 +223,7 @@ class Assets {
|
|
166 |
Â
null,
|
167 |
Â
Base::VERSION
|
168 |
Â
);
|
169 |
-
|
170 |
Â
|
171 |
Â
if ( class_exists( 'Caldera_Forms' ) ) {
|
172 |
Â
wp_enqueue_style(
|
1 |
Â
<?php
|
2 |
+
|
3 |
Â
namespace Happy_Addons\Elementor\Manager;
|
4 |
Â
|
5 |
+
use Happy_Addons\Elementor\Assets\OnDemand_Loader;
|
6 |
Â
use Happy_Addons\Elementor\Base;
|
7 |
Â
|
8 |
Â
defined( 'ABSPATH' ) || die();
|
14 |
Â
*/
|
15 |
Â
public static function init() {
|
16 |
Â
// Frontend scripts
|
17 |
+
add_action( 'wp_enqueue_scripts', [ __CLASS__, 'enqueue_3rd_party_dependencies' ] );
|
18 |
+
add_action( 'wp_enqueue_scripts', [ __CLASS__, 'enqueue_self_dependencies' ], 99 );
|
19 |
Â
|
20 |
Â
// Edit and preview enqueue
|
21 |
+
add_action( 'elementor/preview/enqueue_styles', [ __CLASS__, 'enqueue_preview_style' ] );
|
22 |
Â
|
23 |
+
add_action( 'elementor/editor/before_enqueue_scripts', [ __CLASS__, 'enqueue_editor_scripts' ] );
|
24 |
Â
|
25 |
Â
// Placeholder image replacement
|
26 |
+
add_filter( 'elementor/utils/get_placeholder_image_src', [ __CLASS__, 'set_placeholder_image' ] );
|
27 |
Â
}
|
28 |
Â
|
29 |
Â
public static function set_placeholder_image() {
|
30 |
Â
return HAPPY_ASSETS . 'imgs/placeholder.jpg';
|
31 |
Â
}
|
32 |
Â
|
33 |
+
public static function enqueue_3rd_party_dependencies() {
|
34 |
+
$suffix = ha_is_script_debug_enabled() ? '.' : '.min.';
|
Â
|
|
Â
|
|
Â
|
|
35 |
Â
|
36 |
Â
wp_enqueue_style(
|
37 |
Â
'happy-icon',
|
40 |
Â
Base::VERSION
|
41 |
Â
);
|
42 |
Â
|
43 |
+
/**
|
44 |
+
* Image comparasion
|
45 |
+
*/
|
46 |
+
wp_register_style(
|
47 |
Â
'twentytwenty',
|
48 |
Â
HAPPY_ASSETS . 'vendor/twentytwenty/css/twentytwenty.css',
|
49 |
Â
null,
|
50 |
Â
Base::VERSION
|
51 |
Â
);
|
52 |
Â
|
53 |
+
wp_register_script(
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
54 |
Â
'jquery-event-move',
|
55 |
Â
HAPPY_ASSETS . 'vendor/twentytwenty/js/jquery.event.move.js',
|
56 |
+
[ 'jquery' ],
|
57 |
Â
Base::VERSION,
|
58 |
Â
true
|
59 |
Â
);
|
60 |
Â
|
61 |
+
wp_register_script(
|
62 |
Â
'jquery-twentytwenty',
|
63 |
Â
HAPPY_ASSETS . 'vendor/twentytwenty/js/jquery.twentytwenty.js',
|
64 |
+
[ 'jquery-event-move' ],
|
65 |
Â
Base::VERSION,
|
66 |
Â
true
|
67 |
Â
);
|
68 |
Â
|
69 |
+
/**
|
70 |
+
* Justified Grid
|
71 |
+
*/
|
72 |
+
wp_register_style(
|
73 |
+
'justifiedGallery',
|
74 |
+
HAPPY_ASSETS . 'vendor/justifiedGallery/css/justifiedGallery.min.css',
|
75 |
+
null,
|
76 |
+
Base::VERSION
|
77 |
+
);
|
78 |
+
|
79 |
+
wp_register_script(
|
80 |
Â
'jquery-justifiedGallery',
|
81 |
Â
HAPPY_ASSETS . 'vendor/justifiedGallery/js/jquery.justifiedGallery.min.js',
|
82 |
+
[ 'jquery' ],
|
83 |
Â
Base::VERSION,
|
84 |
Â
true
|
85 |
Â
);
|
86 |
Â
|
87 |
+
/**
|
88 |
+
* Carousel and Slider
|
89 |
+
*/
|
90 |
+
wp_register_style(
|
91 |
+
'slick',
|
92 |
+
HAPPY_ASSETS . 'vendor/slick/slick.css',
|
93 |
+
null,
|
94 |
+
Base::VERSION
|
95 |
+
);
|
96 |
+
|
97 |
+
wp_register_style(
|
98 |
+
'slick-theme',
|
99 |
+
HAPPY_ASSETS . 'vendor/slick/slick-theme.css',
|
100 |
+
null,
|
101 |
+
Base::VERSION
|
102 |
+
);
|
103 |
+
|
104 |
+
wp_register_script(
|
105 |
Â
'jquery-slick',
|
106 |
Â
HAPPY_ASSETS . 'vendor/slick/slick' . $suffix . 'js',
|
107 |
+
[ 'jquery' ],
|
108 |
Â
Base::VERSION,
|
109 |
Â
true
|
110 |
Â
);
|
111 |
Â
|
112 |
+
/**
|
113 |
+
* Floating effects
|
114 |
+
*/
|
115 |
+
wp_register_script(
|
116 |
Â
'anime',
|
117 |
Â
HAPPY_ASSETS . 'vendor/anime/lib/anime.min.js',
|
118 |
Â
null,
|
120 |
Â
true
|
121 |
Â
);
|
122 |
Â
|
123 |
+
// Load used libraries only on frontend
|
124 |
+
if ( ha_should_load_used_library_only() ) {
|
125 |
+
OnDemand_Loader::load_used_libraries();
|
126 |
+
} else {
|
127 |
+
wp_enqueue_style( 'twentytwenty' );
|
128 |
+
wp_enqueue_script( 'jquery-event-move' );
|
129 |
+
wp_enqueue_script( 'jquery-twentytwenty' );
|
130 |
+
|
131 |
+
wp_enqueue_style( 'justifiedGallery' );
|
132 |
+
wp_enqueue_script( 'jquery-justifiedGallery' );
|
133 |
+
|
134 |
+
wp_enqueue_style( 'slick' );
|
135 |
+
wp_enqueue_style( 'slick-theme' );
|
136 |
+
wp_enqueue_script( 'jquery-slick' );
|
137 |
+
|
138 |
+
wp_enqueue_script( 'elementor-waypoints' );
|
139 |
+
wp_enqueue_script( 'jquery-numerator' );
|
140 |
+
|
141 |
+
wp_enqueue_script( 'anime' );
|
142 |
+
}
|
143 |
+
}
|
144 |
+
|
145 |
+
public static function enqueue_self_dependencies() {
|
146 |
+
$suffix = ha_is_script_debug_enabled() ? '.' : '.min.';
|
147 |
+
|
148 |
+
if ( ha_should_load_complied_assets() ) {
|
149 |
+
$compiled_asset = OnDemand_Loader::get_compiled_asset();
|
150 |
+
|
151 |
+
if ( $compiled_asset && $compiled_asset['url'] ) {
|
152 |
+
wp_enqueue_style(
|
153 |
+
'happy-elementor-addons',
|
154 |
+
$compiled_asset['url'],
|
155 |
+
[ 'elementor-frontend' ],
|
156 |
+
$compiled_asset['version']
|
157 |
+
);
|
158 |
+
} else {
|
159 |
+
wp_enqueue_style(
|
160 |
+
'happy-elementor-addons',
|
161 |
+
HAPPY_ASSETS . 'css/main' . $suffix . 'css',
|
162 |
+
[ 'elementor-frontend' ],
|
163 |
+
Base::VERSION
|
164 |
+
);
|
165 |
+
}
|
166 |
+
} else {
|
167 |
+
wp_enqueue_style(
|
168 |
+
'happy-elementor-addons',
|
169 |
+
HAPPY_ASSETS . 'css/main' . $suffix . 'css',
|
170 |
+
[ 'elementor-frontend' ],
|
171 |
+
Base::VERSION
|
172 |
+
);
|
173 |
+
}
|
174 |
+
|
175 |
+
// Happy addons script
|
176 |
Â
wp_enqueue_script(
|
177 |
Â
'happy-elementor-addons',
|
178 |
Â
HAPPY_ASSETS . 'js/happy-addons' . $suffix . 'js',
|
179 |
+
[ 'elementor-frontend', 'imagesloaded', 'jquery' ],
|
180 |
Â
Base::VERSION,
|
181 |
Â
true
|
182 |
Â
);
|
200 |
Â
wp_enqueue_script(
|
201 |
Â
'happy-elementor-addons-admin',
|
202 |
Â
HAPPY_ASSETS . 'admin/js/happy-addons.min.js',
|
203 |
+
[ 'elementor-editor' ],
|
204 |
Â
Base::VERSION,
|
205 |
Â
true
|
206 |
+
);
|
207 |
+
}
|
208 |
Â
|
209 |
Â
public static function enqueue_preview_style() {
|
210 |
Â
if ( class_exists( 'WeForms' ) ) {
|
223 |
Â
null,
|
224 |
Â
Base::VERSION
|
225 |
Â
);
|
226 |
+
}
|
227 |
Â
|
228 |
Â
if ( class_exists( 'Caldera_Forms' ) ) {
|
229 |
Â
wp_enqueue_style(
|
classes/class.ondemand-loader.php
ADDED
@@ -0,0 +1,246 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Happy_Addons\Elementor\Assets;
|
4 |
+
|
5 |
+
use Happy_Addons\Elementor\Base;
|
6 |
+
use Happy_Addons\Elementor\Manager\Widgets;
|
7 |
+
|
8 |
+
defined( 'ABSPATH' ) || die();
|
9 |
+
|
10 |
+
class OnDemand_Loader {
|
11 |
+
|
12 |
+
const DB_KEY = '_elementor_elements_usage';
|
13 |
+
|
14 |
+
private static $upload_path;
|
15 |
+
|
16 |
+
private static $upload_url;
|
17 |
+
|
18 |
+
private static $cache_dir;
|
19 |
+
|
20 |
+
private static $cache_dir_name;
|
21 |
+
|
22 |
+
private static $cache_url;
|
23 |
+
|
24 |
+
public static function init() {
|
25 |
+
$upload_dir = wp_upload_dir();
|
26 |
+
self::$upload_path = trailingslashit( $upload_dir['basedir'] );
|
27 |
+
self::$upload_url = trailingslashit( $upload_dir['baseurl'] );;
|
28 |
+
|
29 |
+
self::$cache_dir_name = trailingslashit( 'happyaddons/cache' );
|
30 |
+
|
31 |
+
self::$cache_dir = self::$upload_path . self::$cache_dir_name;
|
32 |
+
self::$cache_url = self::$upload_url . self::$cache_dir_name;
|
33 |
+
|
34 |
+
add_action( 'save_post', [__CLASS__, 'save_elements_usage'] );
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Get used elements in a post
|
39 |
+
*
|
40 |
+
* @param $post_id
|
41 |
+
* @return array
|
42 |
+
*/
|
43 |
+
public static function get_elements_usage( $post_id ) {
|
44 |
+
$usage = self::get_only_elements_usage( $post_id );
|
45 |
+
if ( ! $usage ) {
|
46 |
+
self::save_elements_usage( $post_id );
|
47 |
+
$usage = self::get_only_elements_usage( $post_id );
|
48 |
+
}
|
49 |
+
return $usage;
|
50 |
+
}
|
51 |
+
|
52 |
+
public static function get_only_elements_usage( $post_id ) {
|
53 |
+
$usage = get_post_meta( $post_id, self::DB_KEY, true );
|
54 |
+
return ( is_array( $usage ) ? $usage : [] );
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Save used elements
|
59 |
+
*
|
60 |
+
* @param $post_id
|
61 |
+
* @return void
|
62 |
+
*/
|
63 |
+
public static function save_elements_usage( $post_id ) {
|
64 |
+
/**
|
65 |
+
* Before version 2.6.5 elementor didn't store elements usage data
|
66 |
+
*/
|
67 |
+
if ( version_compare( ELEMENTOR_VERSION, '2.6.5', '<=' ) || ! self::get_only_elements_usage( $post_id ) ) {
|
68 |
+
$usage = [];
|
69 |
+
//we need to populate _elementor_elements_usage;
|
70 |
+
$document = \Elementor\Plugin::$instance->documents->get( $post_id );
|
71 |
+
$data = $document ? $document->get_elements_data() : [];
|
72 |
+
|
73 |
+
\Elementor\Plugin::$instance->db->iterate_data( $data, function ( $element ) use ( & $usage ) {
|
74 |
+
if ( empty( $element['widgetType'] ) ) {
|
75 |
+
$type = $element['elType'];
|
76 |
+
} else {
|
77 |
+
$type = $element['widgetType'];
|
78 |
+
}
|
79 |
+
|
80 |
+
if ( ! isset( $usage[ $type ] ) ) {
|
81 |
+
$usage[ $type ] = 0;
|
82 |
+
}
|
83 |
+
|
84 |
+
$usage[ $type ] ++;
|
85 |
+
|
86 |
+
return $element;
|
87 |
+
} );
|
88 |
+
|
89 |
+
update_post_meta( $post_id, self::DB_KEY, $usage );
|
90 |
+
self::clean_only_cache( $post_id );
|
91 |
+
}
|
92 |
+
}
|
93 |
+
|
94 |
+
public static function get_supported_types() {
|
95 |
+
return get_option( 'elementor_cpt_support', ['post', 'page'] );
|
96 |
+
}
|
97 |
+
|
98 |
+
public static function get_compiled_asset() {
|
99 |
+
global $post;
|
100 |
+
if ( ! isset( $post ) || empty( $post ) ) {
|
101 |
+
return;
|
102 |
+
}
|
103 |
+
|
104 |
+
$filename = self::$cache_dir . "post-{$post->ID}.css";
|
105 |
+
|
106 |
+
if ( ! file_exists( $filename ) ) {
|
107 |
+
self::compile_assets( $post->ID );
|
108 |
+
}
|
109 |
+
|
110 |
+
if ( file_exists( $filename ) ) {
|
111 |
+
return [
|
112 |
+
'url' => self::$cache_url . "post-{$post->ID}.css",
|
113 |
+
'version' => Base::VERSION . '.' . get_post_modified_time( 'U', false, $post ),
|
114 |
+
];
|
115 |
+
}
|
116 |
+
|
117 |
+
return [];
|
118 |
+
}
|
119 |
+
|
120 |
+
public static function get_self_elements_usage( $post_id ) {
|
121 |
+
return array_keys( array_filter( self::get_elements_usage( $post_id ), function( $widget_name ) {
|
122 |
+
return strpos( $widget_name, 'ha-' ) !== false;
|
123 |
+
}, ARRAY_FILTER_USE_KEY ) );
|
124 |
+
}
|
125 |
+
|
126 |
+
public static function compile_assets( $post_id ) {
|
127 |
+
if ( ! apply_filters( 'happyaddons_ondemand_asset_compiling', true ) ) {
|
128 |
+
return;
|
129 |
+
}
|
130 |
+
|
131 |
+
if ( ! in_array( get_post_type( $post_id ), self::get_supported_types() ) ) {
|
132 |
+
return;
|
133 |
+
}
|
134 |
+
|
135 |
+
$filename = self::$cache_dir . "post-{$post_id}.css";
|
136 |
+
$widgets = self::get_self_elements_usage( $post_id );
|
137 |
+
|
138 |
+
if ( $widgets && is_array( $widgets ) ) {
|
139 |
+
$widgets_map = Widgets::get_widgets_map();
|
140 |
+
$base_widget = isset( $widgets_map[ Widgets::get_base_widget_key() ] ) ? $widgets_map[ Widgets::get_base_widget_key() ] : [];
|
141 |
+
$data = '';
|
142 |
+
|
143 |
+
if ( isset( $base_widget['css'] ) && is_array( $base_widget['css'] ) ) {
|
144 |
+
foreach ( $base_widget['css'] as $_file_name_prefix ) {
|
145 |
+
if ( file_exists( HAPPY_DIR_PATH . "assets/css/widgets/{$_file_name_prefix}.min.css" ) ) {
|
146 |
+
$data .= file_get_contents( HAPPY_DIR_PATH . "assets/css/widgets/{$_file_name_prefix}.min.css" );
|
147 |
+
};
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
foreach ( $widgets as $_widget ) {
|
152 |
+
$map_key = substr( $_widget, 3 );
|
153 |
+
|
154 |
+
if ( ! isset( $widgets_map[ $map_key ] ) ) {
|
155 |
+
continue;
|
156 |
+
}
|
157 |
+
|
158 |
+
if ( ! isset( $widgets_map[ $map_key ]['css'] ) ) {
|
159 |
+
continue;
|
160 |
+
}
|
161 |
+
|
162 |
+
foreach ( $widgets_map[ $map_key ]['css'] as $_file_name_prefix ) {
|
163 |
+
if ( file_exists( HAPPY_DIR_PATH . "assets/css/widgets/{$_file_name_prefix}.min.css" ) ) {
|
164 |
+
$data .= file_get_contents( HAPPY_DIR_PATH . "assets/css/widgets/{$_file_name_prefix}.min.css" );
|
165 |
+
};
|
166 |
+
}
|
167 |
+
}
|
168 |
+
|
169 |
+
if ( ! is_dir( self::$cache_dir ) ) {
|
170 |
+
@mkdir( self::$cache_dir, 0777, true );
|
171 |
+
}
|
172 |
+
|
173 |
+
file_put_contents( $filename, $data );
|
174 |
+
}
|
175 |
+
}
|
176 |
+
|
177 |
+
public static function load_used_libraries() {
|
178 |
+
global $post;
|
179 |
+
if ( ! isset( $post ) || empty( $post ) ) {
|
180 |
+
return;
|
181 |
+
}
|
182 |
+
|
183 |
+
$widgets_used = self::get_elements_usage( $post->ID );
|
184 |
+
|
185 |
+
if ( is_array( $widgets_used ) ) {
|
186 |
+
$widgets = Widgets::get_widgets_map();
|
187 |
+
|
188 |
+
foreach( $widgets as $widget => $data ) {
|
189 |
+
if ( ! isset( $data['vendor'] ) || ! is_array( $data['vendor'] ) ) {
|
190 |
+
continue;
|
191 |
+
}
|
192 |
+
|
193 |
+
// Handle common assets only
|
194 |
+
if ( Widgets::get_base_widget_key() === $widget ) {
|
195 |
+
if ( isset( $data['vendor']['css'] ) && is_array( $data['vendor']['css'] ) ) {
|
196 |
+
foreach ( $data['vendor']['css'] as $vendor_css_handle ) {
|
197 |
+
wp_enqueue_style( $vendor_css_handle );
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
if ( isset( $data['vendor']['js'] ) && is_array( $data['vendor']['js'] ) ) {
|
202 |
+
foreach ( $data['vendor']['js'] as $vendor_css_handle ) {
|
203 |
+
wp_enqueue_script( $vendor_css_handle );
|
204 |
+
}
|
205 |
+
}
|
206 |
+
continue;
|
207 |
+
}
|
208 |
+
|
209 |
+
// Handle widgets assets only
|
210 |
+
$widget_id = 'ha-' . $widget;
|
211 |
+
|
212 |
+
if ( ! array_key_exists( $widget_id, $widgets_used ) ) {
|
213 |
+
continue;
|
214 |
+
}
|
215 |
+
|
216 |
+
if ( is_array( $data['vendor']['css'] ) ) {
|
217 |
+
foreach ( $data['vendor']['css'] as $vendor_css_handle ) {
|
218 |
+
wp_enqueue_style( $vendor_css_handle );
|
219 |
+
}
|
220 |
+
}
|
221 |
+
|
222 |
+
if ( is_array( $data['vendor']['js'] ) ) {
|
223 |
+
foreach ( $data['vendor']['js'] as $vendor_css_handle ) {
|
224 |
+
wp_enqueue_script( $vendor_css_handle );
|
225 |
+
}
|
226 |
+
}
|
227 |
+
}
|
228 |
+
}
|
229 |
+
}
|
230 |
+
|
231 |
+
public static function clean_all_cache() {
|
232 |
+
$files = glob( self::$cache_dir . '/*' );
|
233 |
+
foreach( $files as $file ) {
|
234 |
+
if ( is_file( $file ) ) {
|
235 |
+
unlink( $file );
|
236 |
+
}
|
237 |
+
}
|
238 |
+
}
|
239 |
+
|
240 |
+
public static function clean_only_cache( $post_id ) {
|
241 |
+
$filename = self::$cache_dir . "post-{$post_id}.css";
|
242 |
+
if ( file_exists( $filename ) ) {
|
243 |
+
unlink( $filename );
|
244 |
+
}
|
245 |
+
}
|
246 |
+
}
|
classes/widget-manager.php
CHANGED
@@ -2,6 +2,35 @@
|
|
2 |
Â
namespace Happy_Addons\Elementor\Manager;
|
3 |
Â
|
4 |
Â
use Elementor\Plugin as Elementor;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
5 |
Â
|
6 |
Â
defined( 'ABSPATH' ) || die();
|
7 |
Â
|
@@ -13,6 +42,258 @@ class Widgets {
|
|
13 |
Â
add_action( 'elementor/widgets/widgets_registered', [__CLASS__, 'register'] );
|
14 |
Â
}
|
15 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
16 |
Â
/**
|
17 |
Â
* Init Widgets
|
18 |
Â
*
|
@@ -25,41 +306,10 @@ class Widgets {
|
|
25 |
Â
public static function register() {
|
26 |
Â
require( HAPPY_DIR_PATH . 'base/widget-base.php' );
|
27 |
Â
|
28 |
-
$
|
29 |
-
'
|
30 |
-
|
31 |
-
'cf7',
|
32 |
-
'icon-box',
|
33 |
-
'member',
|
34 |
-
'review',
|
35 |
-
'image-compare',
|
36 |
-
'justified-gallery',
|
37 |
-
'slider',
|
38 |
-
'carousel',
|
39 |
-
'skills',
|
40 |
-
'gradient-heading',
|
41 |
-
'wpform',
|
42 |
-
'ninjaform',
|
43 |
-
'calderaform',
|
44 |
-
'weform',
|
45 |
-
'logo-grid',
|
46 |
-
'dual-button',
|
47 |
-
'testimonial',
|
48 |
-
'number',
|
49 |
-
];
|
50 |
-
|
51 |
-
foreach ( $widgets as $widget ) {
|
52 |
-
$widget_file = HAPPY_DIR_PATH . 'widgets/' . $widget . '/widget.php';
|
53 |
-
|
54 |
-
if ( ! is_readable( $widget_file ) ) {
|
55 |
-
continue;
|
56 |
Â
}
|
57 |
-
|
58 |
-
include( $widget_file );
|
59 |
-
|
60 |
-
$class_name = str_replace( '-', '_', $widget );
|
61 |
-
$class_name = 'Happy_Addons\Elementor\Widget\\' . $class_name;
|
62 |
-
Elementor::instance()->widgets_manager->register_widget_type( new $class_name() );
|
63 |
Â
}
|
64 |
Â
}
|
65 |
Â
}
|
2 |
Â
namespace Happy_Addons\Elementor\Manager;
|
3 |
Â
|
4 |
Â
use Elementor\Plugin as Elementor;
|
5 |
+
use Happy_Addons\Elementor\Widget\Card;
|
6 |
+
use Happy_Addons\Elementor\Widget\AdCard;
|
7 |
+
use Happy_Addons\Elementor\Widget\CalderaForm;
|
8 |
+
use Happy_Addons\Elementor\Widget\Calendly;
|
9 |
+
use Happy_Addons\Elementor\Widget\Carousel;
|
10 |
+
use Happy_Addons\Elementor\Widget\CF7;
|
11 |
+
use Happy_Addons\Elementor\Widget\Dual_Button;
|
12 |
+
use Happy_Addons\Elementor\Widget\Feature_List;
|
13 |
+
use Happy_Addons\Elementor\Widget\Flip_Box;
|
14 |
+
use Happy_Addons\Elementor\Widget\Google_Map;
|
15 |
+
use Happy_Addons\Elementor\Widget\Gradient_Heading;
|
16 |
+
use Happy_Addons\Elementor\Widget\Hover_Box;
|
17 |
+
use Happy_Addons\Elementor\Widget\Icon_Box;
|
18 |
+
use Happy_Addons\Elementor\Widget\Image_Compare;
|
19 |
+
use Happy_Addons\Elementor\Widget\Image_Grid;
|
20 |
+
use Happy_Addons\Elementor\Widget\InfoBox;
|
21 |
+
use Happy_Addons\Elementor\Widget\Justified_Gallery;
|
22 |
+
use Happy_Addons\Elementor\Widget\Logo_Grid;
|
23 |
+
use Happy_Addons\Elementor\Widget\Member;
|
24 |
+
use Happy_Addons\Elementor\Widget\NinjaForm;
|
25 |
+
use Happy_Addons\Elementor\Widget\Number;
|
26 |
+
use Happy_Addons\Elementor\Widget\Pricing_Table;
|
27 |
+
use Happy_Addons\Elementor\Widget\Review;
|
28 |
+
use Happy_Addons\Elementor\Widget\Skills;
|
29 |
+
use Happy_Addons\Elementor\Widget\Slider;
|
30 |
+
use Happy_Addons\Elementor\Widget\Step_Flow;
|
31 |
+
use Happy_Addons\Elementor\Widget\Testimonial;
|
32 |
+
use Happy_Addons\Elementor\Widget\WeForm;
|
33 |
+
use Happy_Addons\Elementor\Widget\WPForm;
|
34 |
Â
|
35 |
Â
defined( 'ABSPATH' ) || die();
|
36 |
Â
|
42 |
Â
add_action( 'elementor/widgets/widgets_registered', [__CLASS__, 'register'] );
|
43 |
Â
}
|
44 |
Â
|
45 |
+
public static function get_widgets_map() {
|
46 |
+
$widgets_map = [
|
47 |
+
// This is base for happy addons
|
48 |
+
self::get_base_widget_key() => [
|
49 |
+
'css' => ['common', 'btn'],
|
50 |
+
'js' => [],
|
51 |
+
'vendor' => [
|
52 |
+
'js' => ['anime']
|
53 |
+
]
|
54 |
+
],
|
55 |
+
|
56 |
+
// All the widgets are listed below with respective map
|
57 |
+
'infobox' => [
|
58 |
+
'class' => InfoBox::class,
|
59 |
+
'css' => ['infobox'],
|
60 |
+
'js' => [],
|
61 |
+
'vendor' => [
|
62 |
+
'css' => [],
|
63 |
+
'js' => [],
|
64 |
+
],
|
65 |
+
],
|
66 |
+
'card' => [
|
67 |
+
'class' => Card::class,
|
68 |
+
'css' => ['card'],
|
69 |
+
'js' => [],
|
70 |
+
'vendor' => [
|
71 |
+
'css' => [],
|
72 |
+
'js' => [],
|
73 |
+
],
|
74 |
+
],
|
75 |
+
'cf7' => [
|
76 |
+
'class' => CF7::class,
|
77 |
+
'css' => [],
|
78 |
+
'js' => [],
|
79 |
+
'vendor' => [
|
80 |
+
'css' => [],
|
81 |
+
'js' => [],
|
82 |
+
],
|
83 |
+
],
|
84 |
+
'icon-box' => [
|
85 |
+
'class' => Icon_Box::class,
|
86 |
+
'css' => ['icon-box'],
|
87 |
+
'js' => [],
|
88 |
+
'vendor' => [
|
89 |
+
'css' => [],
|
90 |
+
'js' => [],
|
91 |
+
],
|
92 |
+
],
|
93 |
+
'member' => [
|
94 |
+
'class' => Member::class,
|
95 |
+
'css' => ['member'],
|
96 |
+
'js' => [],
|
97 |
+
'vendor' => [
|
98 |
+
'css' => [],
|
99 |
+
'js' => [],
|
100 |
+
],
|
101 |
+
],
|
102 |
+
'review' => [
|
103 |
+
'class' => Review::class,
|
104 |
+
'css' => ['review'],
|
105 |
+
'js' => [],
|
106 |
+
'vendor' => [
|
107 |
+
'css' => [],
|
108 |
+
'js' => [],
|
109 |
+
],
|
110 |
+
],
|
111 |
+
'image-compare' => [
|
112 |
+
'class' => Image_Compare::class,
|
113 |
+
'css' => ['image-comparison'],
|
114 |
+
'js' => [],
|
115 |
+
'vendor' => [
|
116 |
+
'css' => ['twentytwenty'],
|
117 |
+
'js' => ['jquery-event-move','jquery-twentytwenty'],
|
118 |
+
],
|
119 |
+
],
|
120 |
+
'justified-gallery' => [
|
121 |
+
'class' => Justified_Gallery::class,
|
122 |
+
'css' => ['justified-gallery'],
|
123 |
+
'js' => [],
|
124 |
+
'vendor' => [
|
125 |
+
'css' => ['justifiedGallery'],
|
126 |
+
'js' => ['jquery-justifiedGallery'],
|
127 |
+
],
|
128 |
+
],
|
129 |
+
'slider' => [
|
130 |
+
'class' => Slider::class,
|
131 |
+
'css' => ['slider-carousel'],
|
132 |
+
'js' => [],
|
133 |
+
'vendor' => [
|
134 |
+
'css' => ['slick', 'slick-theme'],
|
135 |
+
'js' => ['jquery-slick'],
|
136 |
+
],
|
137 |
+
],
|
138 |
+
'carousel' => [
|
139 |
+
'class' => Carousel::class,
|
140 |
+
'css' => ['slider-carousel'],
|
141 |
+
'js' => [],
|
142 |
+
'vendor' => [
|
143 |
+
'css' => ['slick', 'slick-theme'],
|
144 |
+
'js' => ['jquery-slick'],
|
145 |
+
],
|
146 |
+
],
|
147 |
+
'skills' => [
|
148 |
+
'class' => Skills::class,
|
149 |
+
'css' => ['skills'],
|
150 |
+
'js' => [],
|
151 |
+
'vendor' => [
|
152 |
+
'css' => [],
|
153 |
+
'js' => ['elementor-waypoints', 'jquery-numerator'],
|
154 |
+
],
|
155 |
+
],
|
156 |
+
'gradient-heading' => [
|
157 |
+
'class' => Gradient_Heading::class,
|
158 |
+
'css' => ['gradient-heading'],
|
159 |
+
'js' => [],
|
160 |
+
'vendor' => [
|
161 |
+
'css' => [],
|
162 |
+
'js' => [],
|
163 |
+
],
|
164 |
+
],
|
165 |
+
'wpform' => [
|
166 |
+
'class' => WPForm::class,
|
167 |
+
'css' => [],
|
168 |
+
'js' => [],
|
169 |
+
'vendor' => [
|
170 |
+
'css' => [],
|
171 |
+
'js' => [],
|
172 |
+
],
|
173 |
+
],
|
174 |
+
'ninjaform' => [
|
175 |
+
'class' => NinjaForm::class,
|
176 |
+
'css' => [],
|
177 |
+
'js' => [],
|
178 |
+
'vendor' => [
|
179 |
+
'css' => [],
|
180 |
+
'js' => [],
|
181 |
+
],
|
182 |
+
],
|
183 |
+
'calderaform' => [
|
184 |
+
'class' => CalderaForm::class,
|
185 |
+
'css' => [],
|
186 |
+
'js' => [],
|
187 |
+
'vendor' => [
|
188 |
+
'css' => [],
|
189 |
+
'js' => [],
|
190 |
+
],
|
191 |
+
],
|
192 |
+
'weform' => [
|
193 |
+
'class' => WeForm::class,
|
194 |
+
'css' => [],
|
195 |
+
'js' => [],
|
196 |
+
'vendor' => [
|
197 |
+
'css' => [],
|
198 |
+
'js' => [],
|
199 |
+
],
|
200 |
+
],
|
201 |
+
'logo-grid' => [
|
202 |
+
'class' => Logo_Grid::class,
|
203 |
+
'css' => ['logo-grid'],
|
204 |
+
'js' => [],
|
205 |
+
'vendor' => [
|
206 |
+
'css' => [],
|
207 |
+
'js' => [],
|
208 |
+
],
|
209 |
+
],
|
210 |
+
'dual-button' => [
|
211 |
+
'class' => Dual_Button::class,
|
212 |
+
'css' => ['dual-btn'],
|
213 |
+
'js' => [],
|
214 |
+
'vendor' => [
|
215 |
+
'css' => [],
|
216 |
+
'js' => [],
|
217 |
+
],
|
218 |
+
],
|
219 |
+
'testimonial' => [
|
220 |
+
'class' => Testimonial::class,
|
221 |
+
'css' => ['testimonial'],
|
222 |
+
'js' => [],
|
223 |
+
'vendor' => [
|
224 |
+
'css' => [],
|
225 |
+
'js' => [],
|
226 |
+
],
|
227 |
+
],
|
228 |
+
'number' => [
|
229 |
+
'class' => Number::class,
|
230 |
+
'css' => ['number'],
|
231 |
+
'js' => [],
|
232 |
+
'vendor' => [
|
233 |
+
'css' => [],
|
234 |
+
'js' => ['elementor-waypoints', 'jquery-numerator'],
|
235 |
+
],
|
236 |
+
],
|
237 |
+
'flip-box' => [
|
238 |
+
'class' => Flip_Box::class,
|
239 |
+
'css' => ['flip-box'],
|
240 |
+
'js' => [],
|
241 |
+
'vendor' => [
|
242 |
+
'css' => [],
|
243 |
+
'js' => [],
|
244 |
+
],
|
245 |
+
],
|
246 |
+
'calendly' => [
|
247 |
+
'class' => Calendly::class,
|
248 |
+
'css' => [],
|
249 |
+
'js' => [],
|
250 |
+
'vendor' => [
|
251 |
+
'css' => [],
|
252 |
+
'js' => [],
|
253 |
+
],
|
254 |
+
],
|
255 |
+
'pricing-table' => [
|
256 |
+
'class' => Pricing_Table::class,
|
257 |
+
'css' => ['pricing-table'],
|
258 |
+
'js' => [],
|
259 |
+
'vendor' => [
|
260 |
+
'css' => [],
|
261 |
+
'js' => [],
|
262 |
+
],
|
263 |
+
],
|
264 |
+
'step-flow' => [
|
265 |
+
'class' => Step_Flow::class,
|
266 |
+
'css' => ['steps-flow'],
|
267 |
+
'js' => [],
|
268 |
+
'vendor' => [
|
269 |
+
'css' => [],
|
270 |
+
'js' => [],
|
271 |
+
],
|
272 |
+
],
|
273 |
+
];
|
274 |
+
|
275 |
+
return apply_filters( 'happyaddons_widgets_map', $widgets_map );
|
276 |
+
}
|
277 |
+
|
278 |
+
/**
|
279 |
+
* Check widget file and include
|
280 |
+
*
|
281 |
+
* @param $widget
|
282 |
+
* @return bool
|
283 |
+
*/
|
284 |
+
private static function is_registrable( $widget ) {
|
285 |
+
$widget_file = HAPPY_DIR_PATH . 'widgets/' . $widget . '/widget.php';
|
286 |
+
if ( $widget !== self::get_base_widget_key() && is_readable( $widget_file ) ) {
|
287 |
+
include( $widget_file );
|
288 |
+
return true;
|
289 |
+
}
|
290 |
+
return false;
|
291 |
+
}
|
292 |
+
|
293 |
+
public static function get_base_widget_key() {
|
294 |
+
return apply_filters( 'happyaddons_get_base_widget_key', '_happyaddons_base' );
|
295 |
+
}
|
296 |
+
|
297 |
Â
/**
|
298 |
Â
* Init Widgets
|
299 |
Â
*
|
306 |
Â
public static function register() {
|
307 |
Â
require( HAPPY_DIR_PATH . 'base/widget-base.php' );
|
308 |
Â
|
309 |
+
foreach ( self::get_widgets_map() as $widget => $data ) {
|
310 |
+
if ( self::is_registrable( $widget ) && class_exists( $data['class'] ) ) {
|
311 |
+
Elementor::instance()->widgets_manager->register_widget_type( new $data['class'] );
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
312 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
313 |
Â
}
|
314 |
Â
}
|
315 |
Â
}
|
inc/functions.php
CHANGED
@@ -322,3 +322,39 @@ function ha_get_css_cursors() {
|
|
322 |
Â
'none' => __( 'None', 'happy-elementor-addons' ),
|
323 |
Â
];
|
324 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
322 |
Â
'none' => __( 'None', 'happy-elementor-addons' ),
|
323 |
Â
];
|
324 |
Â
}
|
325 |
+
|
326 |
+
function ha_get_css_blend_modes() {
|
327 |
+
return [
|
328 |
+
'normal' => __( 'Normal', 'happy-elementor-addons' ),
|
329 |
+
'multiply' => __( 'Multiply', 'happy-elementor-addons' ),
|
330 |
+
'screen' => __( 'Screen', 'happy-elementor-addons' ),
|
331 |
+
'overlay' => __( 'Overlay', 'happy-elementor-addons' ),
|
332 |
+
'darken' => __( 'Darken', 'happy-elementor-addons' ),
|
333 |
+
'lighten' => __( 'Lighten', 'happy-elementor-addons' ),
|
334 |
+
'color-dodge' => __( 'Color Dodge', 'happy-elementor-addons' ),
|
335 |
+
'color-burn' => __( 'Color Burn', 'happy-elementor-addons' ),
|
336 |
+
'saturation' => __( 'Saturation', 'happy-elementor-addons' ),
|
337 |
+
'difference' => __( 'Difference', 'happy-elementor-addons' ),
|
338 |
+
'exclusion' => __( 'Exclusion', 'happy-elementor-addons' ),
|
339 |
+
'hue' => __( 'Hue', 'happy-elementor-addons' ),
|
340 |
+
'color' => __( 'Color', 'happy-elementor-addons' ),
|
341 |
+
'luminosity' => __( 'Luminosity', 'happy-elementor-addons' ),
|
342 |
+
];
|
343 |
+
}
|
344 |
+
|
345 |
+
function ha_should_load_complied_assets() {
|
346 |
+
return (
|
347 |
+
apply_filters( 'happyaddons_ondemand_asset_compiling', true ) &&
|
348 |
+
! \Elementor\Plugin::$instance->editor->is_edit_mode() &&
|
349 |
+
! \Elementor\Plugin::$instance->preview->is_preview_mode() &&
|
350 |
+
! is_preview()
|
351 |
+
);
|
352 |
+
}
|
353 |
+
|
354 |
+
function ha_should_load_used_library_only() {
|
355 |
+
return (
|
356 |
+
! \Elementor\Plugin::$instance->editor->is_edit_mode() &&
|
357 |
+
! \Elementor\Plugin::$instance->preview->is_preview_mode() &&
|
358 |
+
! is_preview()
|
359 |
+
);
|
360 |
+
}
|
plugin.php
CHANGED
@@ -3,7 +3,7 @@
|
|
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.
|
7 |
Â
* Author: HappyMonster
|
8 |
Â
* Author URI: https://happyaddons.com/
|
9 |
Â
* License: GPLv2
|
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.4.0
|
7 |
Â
* Author: HappyMonster
|
8 |
Â
* Author URI: https://happyaddons.com/
|
9 |
Â
* License: GPLv2
|
readme.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
Â
=== Happy Elementor Addons ===
|
2 |
Â
Plugin Name: Happy Elementor Addons
|
3 |
-
Version: 1.
|
4 |
Â
Author: HappyMonster
|
5 |
Â
Author URI: https://happyaddons.com/
|
6 |
Â
Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, obiplabon, sourav926, wedevs
|
@@ -19,7 +19,7 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
|
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 |
Â
|
22 |
-
### Included
|
23 |
Â
|
24 |
Â
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/)
|
25 |
Â
2. **[Gradient Heading](https://happyaddons.com/elementor-gradient-heading-widget-demo/)** - Another gem to create eye candy headings for your websites. You can apply different gradient styles, angles, opacity, and positions to make them look even better across different device screens. [Check demo](https://happyaddons.com/elementor-gradient-heading-widget-demo/)
|
@@ -41,6 +41,10 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
|
41 |
Â
18. **[Logo Grid](https://happyaddons.com/elementor-logo-grid-widget-demo)** - Showcase your clients or products using our logo grid widget, and display these items with styles. [Check demo](https://happyaddons.com/elementor-logo-grid-widget-demo)
|
42 |
Â
19. **[Carousel](https://happyaddons.com/elementor-carousel-widget-demo/)** - Create interesting image and text carousels using our carousel widget which comes with lot of options. [Check demo](https://happyaddons.com/elementor-carousel-widget-demo/)
|
43 |
Â
20. **[Slider](https://happyaddons.com/elementor-slider-widget-demo/)** - Now you can create sliders with beautiful animations and effects using our Slider widget. And just like our other widgets, there are lots of customization options for you. [Check demo](https://happyaddons.com/elementor-slider-widget-demo/)
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
44 |
Â
|
45 |
Â
### INCLUDED FREE EXTENSIONS FOR EVERY ELEMENTOR WIDGET
|
46 |
Â
**Happy Effects**
|
@@ -130,6 +134,19 @@ It's really easy and super simple to install **Happy Elementor Addons** plugin b
|
|
130 |
Â
|
131 |
Â
== Changelog ==
|
132 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
133 |
Â
= 1.3.1 - 24 July 2019 =
|
134 |
Â
|
135 |
Â
* Fix: Elementor 2.6.* version compatibility issue
|
1 |
Â
=== Happy Elementor Addons ===
|
2 |
Â
Plugin Name: Happy Elementor Addons
|
3 |
+
Version: 1.4.0
|
4 |
Â
Author: HappyMonster
|
5 |
Â
Author URI: https://happyaddons.com/
|
6 |
Â
Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, obiplabon, sourav926, wedevs
|
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 |
Â
|
22 |
+
### Included 24 Free Widgets
|
23 |
Â
|
24 |
Â
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/)
|
25 |
Â
2. **[Gradient Heading](https://happyaddons.com/elementor-gradient-heading-widget-demo/)** - Another gem to create eye candy headings for your websites. You can apply different gradient styles, angles, opacity, and positions to make them look even better across different device screens. [Check demo](https://happyaddons.com/elementor-gradient-heading-widget-demo/)
|
41 |
Â
18. **[Logo Grid](https://happyaddons.com/elementor-logo-grid-widget-demo)** - Showcase your clients or products using our logo grid widget, and display these items with styles. [Check demo](https://happyaddons.com/elementor-logo-grid-widget-demo)
|
42 |
Â
19. **[Carousel](https://happyaddons.com/elementor-carousel-widget-demo/)** - Create interesting image and text carousels using our carousel widget which comes with lot of options. [Check demo](https://happyaddons.com/elementor-carousel-widget-demo/)
|
43 |
Â
20. **[Slider](https://happyaddons.com/elementor-slider-widget-demo/)** - Now you can create sliders with beautiful animations and effects using our Slider widget. And just like our other widgets, there are lots of customization options for you. [Check demo](https://happyaddons.com/elementor-slider-widget-demo/)
|
44 |
+
21. **[Step Flow](https://happyaddons.com/elementor-step-flow-widget-demo)**
|
45 |
+
22. **[Calendly](https://happyaddons.com/elementor-calendly-widget-demo/)**
|
46 |
+
23. **[Flip Box](https://happyaddons.com/elementor-flip-box-widget-demo/)**
|
47 |
+
24. **Pricing Table**
|
48 |
Â
|
49 |
Â
### INCLUDED FREE EXTENSIONS FOR EVERY ELEMENTOR WIDGET
|
50 |
Â
**Happy Effects**
|
134 |
Â
|
135 |
Â
== Changelog ==
|
136 |
Â
|
137 |
+
= 1.4.0 - 1 August 2019 =
|
138 |
+
|
139 |
+
* New: On demand asset loading
|
140 |
+
* New: On demand cached asset cleaning
|
141 |
+
* New: Step Flow Widget
|
142 |
+
* New: Calendly Widget
|
143 |
+
* New: Flip Box Widget
|
144 |
+
* New: Pricing Table Widget
|
145 |
+
* Update: Added animated number support to Number Widget
|
146 |
+
* Update: Added progress animation to Skill Bars Widget
|
147 |
+
* Update: Various widgets default styles
|
148 |
+
* Fix: Various responsive issue
|
149 |
+
|
150 |
Â
= 1.3.1 - 24 July 2019 =
|
151 |
Â
|
152 |
Â
* Fix: Elementor 2.6.* version compatibility issue
|
widgets/calendly/widget.php
ADDED
@@ -0,0 +1,180 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Calendly widget class
|
4 |
+
*
|
5 |
+
* @package Happy_Addons
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace Happy_Addons\Elementor\Widget;
|
9 |
+
|
10 |
+
use Elementor\Controls_Manager;
|
11 |
+
|
12 |
+
|
13 |
+
defined( 'ABSPATH' ) || die();
|
14 |
+
|
15 |
+
class Calendly extends Base {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Get widget title.
|
19 |
+
*
|
20 |
+
* @return string Widget title.
|
21 |
+
* @since 1.0.0
|
22 |
+
* @access public
|
23 |
+
*
|
24 |
+
*/
|
25 |
+
public function get_title() {
|
26 |
+
return __( 'Calendly', 'happy-elementor-addons' );
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Get widget icon.
|
31 |
+
*
|
32 |
+
* @return string Widget icon.
|
33 |
+
* @since 1.0.0
|
34 |
+
* @access public
|
35 |
+
*
|
36 |
+
*/
|
37 |
+
public function get_icon() {
|
38 |
+
return 'hm hm-calendar';
|
39 |
+
}
|
40 |
+
|
41 |
+
public function get_keywords() {
|
42 |
+
return [ 'info', 'blurb', 'box', 'text', 'content' ];
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Register content related controls
|
47 |
+
*/
|
48 |
+
protected function register_content_controls() {
|
49 |
+
$this->start_controls_section(
|
50 |
+
'_section_calendly',
|
51 |
+
[
|
52 |
+
'label' => __( 'Calendly', 'happy-elementor-addons' ),
|
53 |
+
'tab' => Controls_Manager::TAB_CONTENT,
|
54 |
+
]
|
55 |
+
);
|
56 |
+
|
57 |
+
$this->add_control(
|
58 |
+
'calendly_username',
|
59 |
+
[
|
60 |
+
'label' => __( 'Username', 'happy-elementor-addons' ),
|
61 |
+
'type' => Controls_Manager::TEXT,
|
62 |
+
'default' => __( '', 'happy-elementor-addons' ),
|
63 |
+
'placeholder' => __( 'Type calendly username here', 'happy-elementor-addons' ),
|
64 |
+
]
|
65 |
+
);
|
66 |
+
|
67 |
+
$this->add_control(
|
68 |
+
'calendly_time',
|
69 |
+
[
|
70 |
+
'label' => __( 'Time Slot', 'happy-elementor-addons' ),
|
71 |
+
'type' => Controls_Manager::SELECT,
|
72 |
+
'options' => [
|
73 |
+
'15min' => __( '15 Minutes', 'happy-elementor-addons' ),
|
74 |
+
'30min' => __( '30 Minutes', 'happy-elementor-addons' ),
|
75 |
+
'60min' => __( '60 Minutes', 'happy-elementor-addons' ),
|
76 |
+
'' => __( 'All', 'happy-elementor-addons' ),
|
77 |
+
],
|
78 |
+
'default' => '15min'
|
79 |
+
]
|
80 |
+
);
|
81 |
+
|
82 |
+
$this->add_control(
|
83 |
+
'event_type_details',
|
84 |
+
[
|
85 |
+
'label' => __( 'Hide Event Type Details', 'happy-elementor-addons' ),
|
86 |
+
'type' => Controls_Manager::SWITCHER,
|
87 |
+
'label_on' => __( 'yes', 'your-plugin' ),
|
88 |
+
'label_off' => __( 'no', 'your-plugin' ),
|
89 |
+
'return_value' => 'yes',
|
90 |
+
'default' => '',
|
91 |
+
]
|
92 |
+
);
|
93 |
+
|
94 |
+
$this->add_responsive_control(
|
95 |
+
'height',
|
96 |
+
[
|
97 |
+
'label' => __( 'Height', 'happy-elementor-addons' ),
|
98 |
+
'type' => Controls_Manager::SLIDER,
|
99 |
+
'size_units' => [ 'px', '%' ],
|
100 |
+
'range' => [
|
101 |
+
'px' => [
|
102 |
+
'min' => 10,
|
103 |
+
'max' => 1000,
|
104 |
+
'step' => 5,
|
105 |
+
],
|
106 |
+
'%' => [
|
107 |
+
'min' => 5,
|
108 |
+
'max' => 100,
|
109 |
+
],
|
110 |
+
],
|
111 |
+
'default' => [
|
112 |
+
'unit' => 'px',
|
113 |
+
'size' => '630',
|
114 |
+
],
|
115 |
+
'selectors' => [
|
116 |
+
'{{WRAPPER}} .calendly-inline-widget' => 'height: {{SIZE}}{{UNIT}};',
|
117 |
+
'{{WRAPPER}} .calendly-wrapper' => 'height: {{SIZE}}{{UNIT}};',
|
118 |
+
],
|
119 |
+
]
|
120 |
+
);
|
121 |
+
|
122 |
+
$this->end_controls_section();
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Register styles related controls
|
127 |
+
*/
|
128 |
+
protected function register_style_controls() {
|
129 |
+
$this->start_controls_section(
|
130 |
+
'_section_style_calendly',
|
131 |
+
[
|
132 |
+
'label' => __( 'Calendly', 'happy-elementor-addons' ),
|
133 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
134 |
+
]
|
135 |
+
);
|
136 |
+
|
137 |
+
$this->add_control(
|
138 |
+
'text_color',
|
139 |
+
[
|
140 |
+
'label' => __( 'Text Color', 'happy-elementor-addons' ),
|
141 |
+
'type' => Controls_Manager::COLOR,
|
142 |
+
'alpha' => false,
|
143 |
+
]
|
144 |
+
);
|
145 |
+
|
146 |
+
$this->add_control(
|
147 |
+
'button_link_color',
|
148 |
+
[
|
149 |
+
'label' => __( 'Button & Link Color', 'happy-elementor-addons' ),
|
150 |
+
'type' => Controls_Manager::COLOR,
|
151 |
+
]
|
152 |
+
);
|
153 |
+
|
154 |
+
$this->add_control(
|
155 |
+
'background_color',
|
156 |
+
[
|
157 |
+
'label' => __( 'Background Color', 'happy-elementor-addons' ),
|
158 |
+
'type' => Controls_Manager::COLOR,
|
159 |
+
]
|
160 |
+
);
|
161 |
+
|
162 |
+
$this->end_controls_section();
|
163 |
+
}
|
164 |
+
|
165 |
+
protected function render() {
|
166 |
+
$settings = $this->get_settings_for_display();
|
167 |
+
$calendly_time = $settings['calendly_time']!=''?"/{$settings['calendly_time']}":'';
|
168 |
+
?>
|
169 |
+
<?php if ( $settings['calendly_username'] ): ?>
|
170 |
+
<div class="calendly-inline-widget"
|
171 |
+
data-url="https://calendly.com/<?php echo esc_attr( $settings['calendly_username'] ); ?><?php echo esc_attr( $calendly_time ); ?>/?<?php if ( 'yes' === $settings['event_type_details'] ): echo 'hide_event_type_details=1'; endif; ?><?php if ( $settings['text_color'] ): echo "&text_color=" . str_replace( '#', '', $settings['text_color'] ); endif; ?><?php if ( $settings['button_link_color'] ): echo "&primary_color=" . str_replace( '#', '', $settings['button_link_color'] ); endif; ?><?php if ( $settings['background_color'] ): echo "&background_color=" . str_replace( '#', '', $settings['background_color'] ); endif; ?>"
|
172 |
+
style="min-width:320px;"></div>
|
173 |
+
<script type="text/javascript" src="https://assets.calendly.com/assets/external/widget.js"></script>
|
174 |
+
<?php if ( \Elementor\Plugin::$instance->editor->is_edit_mode() ) : ?>
|
175 |
+
<div class="calendly-wrapper" style="width:100%; position:absolute; top:0; left:0; z-index:100;"></div>
|
176 |
+
<?php endif; ?>
|
177 |
+
<?php endif; ?>
|
178 |
+
<?php
|
179 |
+
}
|
180 |
+
}
|
widgets/flip-box/widget.php
ADDED
@@ -0,0 +1,1181 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Flip Box widget class
|
4 |
+
*
|
5 |
+
* @package Happy_Addons
|
6 |
+
*/
|
7 |
+
namespace Happy_Addons\Elementor\Widget;
|
8 |
+
|
9 |
+
use Elementor\Control_Media;
|
10 |
+
use Elementor\Controls_Manager;
|
11 |
+
use Elementor\Group_Control_Background;
|
12 |
+
use Elementor\Group_Control_Border;
|
13 |
+
use Elementor\Group_Control_Box_Shadow;
|
14 |
+
use Elementor\Group_Control_Text_Shadow;
|
15 |
+
use Elementor\Group_Control_Image_Size;
|
16 |
+
use Elementor\Group_Control_Typography;
|
17 |
+
use Elementor\Scheme_Typography;
|
18 |
+
use Elementor\Utils;
|
19 |
+
|
20 |
+
defined( 'ABSPATH' ) || die();
|
21 |
+
|
22 |
+
class Flip_Box extends Base {
|
23 |
+
/**
|
24 |
+
* Get widget title.
|
25 |
+
*
|
26 |
+
* @since 1.0.0
|
27 |
+
* @access public
|
28 |
+
*
|
29 |
+
* @return string Widget title.
|
30 |
+
*/
|
31 |
+
public function get_title() {
|
32 |
+
return __( 'Flip Box', 'happy-elementor-addons' );
|
33 |
+
}
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Get widget icon.
|
37 |
+
*
|
38 |
+
* @since 1.0.0
|
39 |
+
* @access public
|
40 |
+
*
|
41 |
+
* @return string Widget icon.
|
42 |
+
*/
|
43 |
+
public function get_icon() {
|
44 |
+
return 'hm hm-flip-card1';
|
45 |
+
}
|
46 |
+
|
47 |
+
public function get_keywords() {
|
48 |
+
return [ 'flip', 'box', 'flip', 'info', 'content', 'animation' ];
|
49 |
+
}
|
50 |
+
|
51 |
+
protected function register_content_controls() {
|
52 |
+
$this->start_controls_section(
|
53 |
+
'_section_front',
|
54 |
+
[
|
55 |
+
'label' => __( 'Front Side', 'happy-elementor-addons' ),
|
56 |
+
'tab' => Controls_Manager::TAB_CONTENT,
|
57 |
+
]
|
58 |
+
);
|
59 |
+
|
60 |
+
$this->add_control(
|
61 |
+
'front_icon_type',
|
62 |
+
[
|
63 |
+
'label' => __( 'Media Type', 'happy-elementor-addons' ),
|
64 |
+
'type' => Controls_Manager::CHOOSE,
|
65 |
+
'label_block' => false,
|
66 |
+
'default' => 'icon',
|
67 |
+
'options' => [
|
68 |
+
'none' => [
|
69 |
+
'title' => __( 'None', 'happy-elementor-addons' ),
|
70 |
+
'icon' => 'eicon-close',
|
71 |
+
],
|
72 |
+
'icon' => [
|
73 |
+
'title' => __( 'Icon', 'happy-elementor-addons' ),
|
74 |
+
'icon' => 'eicon-star',
|
75 |
+
],
|
76 |
+
'image' => [
|
77 |
+
'title' => __( 'Image', 'happy-elementor-addons' ),
|
78 |
+
'icon' => 'eicon-image',
|
79 |
+
],
|
80 |
+
],
|
81 |
+
'toggle' => false,
|
82 |
+
]
|
83 |
+
);
|
84 |
+
|
85 |
+
$this->add_control(
|
86 |
+
'front_icon',
|
87 |
+
[
|
88 |
+
'label' => __( 'Icon', 'happy-elementor-addons' ),
|
89 |
+
'type' => Controls_Manager::ICON,
|
90 |
+
'default' => 'fa fa-home',
|
91 |
+
'condition' => [
|
92 |
+
'front_icon_type' => 'icon'
|
93 |
+
],
|
94 |
+
'options' => ha_get_happy_icons(),
|
95 |
+
]
|
96 |
+
);
|
97 |
+
|
98 |
+
$this->add_control(
|
99 |
+
'front_icon_image',
|
100 |
+
[
|
101 |
+
'label' => __( 'Image', 'happy-elementor-addons' ),
|
102 |
+
'type' => Controls_Manager::MEDIA,
|
103 |
+
'default' => [
|
104 |
+
'url' => Utils::get_placeholder_image_src(),
|
105 |
+
],
|
106 |
+
'condition' => [
|
107 |
+
'front_icon_type' => 'image'
|
108 |
+
]
|
109 |
+
]
|
110 |
+
);
|
111 |
+
|
112 |
+
$this->add_group_control(
|
113 |
+
Group_Control_Image_Size::get_type(),
|
114 |
+
[
|
115 |
+
'name' => 'front_icon_thumbnail',
|
116 |
+
'default' => 'thumbnail',
|
117 |
+
'exclude' => [
|
118 |
+
'full',
|
119 |
+
'shop_catalog',
|
120 |
+
'shop_single',
|
121 |
+
],
|
122 |
+
'condition' => [
|
123 |
+
'front_icon_type' => 'image'
|
124 |
+
]
|
125 |
+
]
|
126 |
+
);
|
127 |
+
|
128 |
+
$this->add_control(
|
129 |
+
'front_title',
|
130 |
+
[
|
131 |
+
'label' => __( 'Title', 'happy-elementor-addons' ),
|
132 |
+
'label_block' => true,
|
133 |
+
'separator' => 'before',
|
134 |
+
'type' => Controls_Manager::TEXT,
|
135 |
+
'default' => __( 'Start Marketing', 'happy-elementor-addons' ),
|
136 |
+
'placeholder' => __( 'Type Flip Box Title', 'happy-elementor-addons' ),
|
137 |
+
]
|
138 |
+
);
|
139 |
+
|
140 |
+
$this->add_control(
|
141 |
+
'front_description',
|
142 |
+
[
|
143 |
+
'label' => __( 'Description', 'happy-elementor-addons' ),
|
144 |
+
'label_block' => true,
|
145 |
+
'type' => Controls_Manager::TEXTAREA,
|
146 |
+
'default' => __( 'consectetur adipiscing elit, sed do<br>eiusmod Lorem ipsum dolor sit amet,<br> consectetur.', 'happy-elementor-addons' ),
|
147 |
+
'placeholder' => __( 'Description', 'happy-elementor-addons' ),
|
148 |
+
]
|
149 |
+
);
|
150 |
+
|
151 |
+
$this->add_control(
|
152 |
+
'front_text_align',
|
153 |
+
[
|
154 |
+
'label' => __( 'Alignment', 'happy-elementor-addons' ),
|
155 |
+
'type' => Controls_Manager::CHOOSE,
|
156 |
+
'options' => [
|
157 |
+
'left' => [
|
158 |
+
'title' => __( 'Left', 'happy-elementor-addons' ),
|
159 |
+
'icon' => 'fa fa-align-left',
|
160 |
+
],
|
161 |
+
'center' => [
|
162 |
+
'title' => __( 'Center', 'happy-elementor-addons' ),
|
163 |
+
'icon' => 'fa fa-align-center',
|
164 |
+
],
|
165 |
+
'right' => [
|
166 |
+
'title' => __( 'Right', 'happy-elementor-addons' ),
|
167 |
+
'icon' => 'fa fa-align-right',
|
168 |
+
],
|
169 |
+
],
|
170 |
+
'selectors' => [
|
171 |
+
'{{WRAPPER}} .ha-flip-box-front-inner .icon-wrap' => 'text-align: {{VALUE}};',
|
172 |
+
'{{WRAPPER}} .ha-flip-box-front-inner .ha-text' => 'text-align: {{VALUE}};'
|
173 |
+
]
|
174 |
+
]
|
175 |
+
);
|
176 |
+
|
177 |
+
$this->end_controls_section();
|
178 |
+
|
179 |
+
$this->start_controls_section(
|
180 |
+
'_section_back',
|
181 |
+
[
|
182 |
+
'label' => __( 'Back Side', 'happy-elementor-addons' ),
|
183 |
+
'tab' => Controls_Manager::TAB_CONTENT,
|
184 |
+
]
|
185 |
+
);
|
186 |
+
|
187 |
+
$this->add_control(
|
188 |
+
'back_icon_type',
|
189 |
+
[
|
190 |
+
'label' => __( 'Media Type', 'happy-elementor-addons' ),
|
191 |
+
'type' => Controls_Manager::CHOOSE,
|
192 |
+
'label_block' => false,
|
193 |
+
'default' => 'none',
|
194 |
+
'options' => [
|
195 |
+
'none' => [
|
196 |
+
'title' => __( 'None', 'happy-elementor-addons' ),
|
197 |
+
'icon' => 'eicon-close',
|
198 |
+
],
|
199 |
+
'icon' => [
|
200 |
+
'title' => __( 'Icon', 'happy-elementor-addons' ),
|
201 |
+
'icon' => 'eicon-star',
|
202 |
+
],
|
203 |
+
'image' => [
|
204 |
+
'title' => __( 'Image', 'happy-elementor-addons' ),
|
205 |
+
'icon' => 'eicon-image',
|
206 |
+
],
|
207 |
+
],
|
208 |
+
'toggle' => false,
|
209 |
+
]
|
210 |
+
);
|
211 |
+
|
212 |
+
$this->add_control(
|
213 |
+
'back_icon_image',
|
214 |
+
[
|
215 |
+
'label' => __( 'Image', 'happy-elementor-addons' ),
|
216 |
+
'type' => Controls_Manager::MEDIA,
|
217 |
+
'default' => [
|
218 |
+
'url' => Utils::get_placeholder_image_src(),
|
219 |
+
],
|
220 |
+
'condition' => [
|
221 |
+
'back_icon_type' => 'image'
|
222 |
+
]
|
223 |
+
]
|
224 |
+
);
|
225 |
+
|
226 |
+
$this->add_group_control(
|
227 |
+
Group_Control_Image_Size::get_type(),
|
228 |
+
[
|
229 |
+
'name' => 'back_icon_thumbnail',
|
230 |
+
'default' => 'thumbnail',
|
231 |
+
'exclude' => [
|
232 |
+
'full',
|
233 |
+
'shop_catalog',
|
234 |
+
'shop_single',
|
235 |
+
],
|
236 |
+
'condition' => [
|
237 |
+
'back_icon_type' => 'image'
|
238 |
+
]
|
239 |
+
]
|
240 |
+
);
|
241 |
+
|
242 |
+
$this->add_control(
|
243 |
+
'back_icon',
|
244 |
+
[
|
245 |
+
'label' => __( 'Icon', 'happy-elementor-addons' ),
|
246 |
+
'type' => Controls_Manager::ICON,
|
247 |
+
'return_value' => 'yes',
|
248 |
+
'condition' => [
|
249 |
+
'back_icon_type' => 'icon',
|
250 |
+
],
|
251 |
+
'options' => ha_get_happy_icons(),
|
252 |
+
]
|
253 |
+
);
|
254 |
+
|
255 |
+
$this->add_control(
|
256 |
+
'back_title',
|
257 |
+
[
|
258 |
+
'label' => __( 'Title', 'happy-elementor-addons' ),
|
259 |
+
'label_block' => true,
|
260 |
+
'separator' => 'before',
|
261 |
+
'type' => Controls_Manager::TEXT,
|
262 |
+
'default' => __( 'Start Marketing', 'happy-elementor-addons' ),
|
263 |
+
'placeholder' => __( 'Type Flip Box Title', 'happy-elementor-addons' ),
|
264 |
+
]
|
265 |
+
);
|
266 |
+
|
267 |
+
$this->add_control(
|
268 |
+
'back_description',
|
269 |
+
[
|
270 |
+
'label' => __( 'Description', 'happy-elementor-addons' ),
|
271 |
+
'label_block' => true,
|
272 |
+
'type' => Controls_Manager::TEXTAREA,
|
273 |
+
'default' => __( 'consectetur adipiscing elit, sed do<br>eiusmod Lorem ipsum dolor sit amet.', 'happy-elementor-addons' ),
|
274 |
+
'placeholder' => __( 'Description', 'happy-elementor-addons' ),
|
275 |
+
]
|
276 |
+
);
|
277 |
+
|
278 |
+
$this->add_control(
|
279 |
+
'back_text_align',
|
280 |
+
[
|
281 |
+
'label' => __( 'Alignment', 'happy-elementor-addons' ),
|
282 |
+
'type' => Controls_Manager::CHOOSE,
|
283 |
+
'options' => [
|
284 |
+
'left' => [
|
285 |
+
'title' => __( 'Left', 'happy-elementor-addons' ),
|
286 |
+
'icon' => 'fa fa-align-left',
|
287 |
+
],
|
288 |
+
'center' => [
|
289 |
+
'title' => __( 'Center', 'happy-elementor-addons' ),
|
290 |
+
'icon' => 'fa fa-align-center',
|
291 |
+
],
|
292 |
+
'right' => [
|
293 |
+
'title' => __( 'Right', 'happy-elementor-addons' ),
|
294 |
+
'icon' => 'fa fa-align-right',
|
295 |
+
],
|
296 |
+
],
|
297 |
+
'selectors' => [
|
298 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .icon-wrap' => 'text-align: {{VALUE}}',
|
299 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .ha-text' => 'text-align: {{VALUE}}',
|
300 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .button-wrap' => 'text-align: {{VALUE}}',
|
301 |
+
]
|
302 |
+
]
|
303 |
+
);
|
304 |
+
|
305 |
+
$this->end_controls_section();
|
306 |
+
|
307 |
+
$this->start_controls_section(
|
308 |
+
'_section_settings',
|
309 |
+
[
|
310 |
+
'label' => __( 'Settings', 'happy-elementor-addons' ),
|
311 |
+
'tab' => Controls_Manager::TAB_CONTENT,
|
312 |
+
]
|
313 |
+
);
|
314 |
+
|
315 |
+
$this->add_control(
|
316 |
+
'flip_position',
|
317 |
+
[
|
318 |
+
'label' => __( 'Flip Direction', 'happy-elementor-addons' ),
|
319 |
+
'type' => Controls_Manager::CHOOSE,
|
320 |
+
'default' => 'right',
|
321 |
+
'label_block' => false,
|
322 |
+
'options' => [
|
323 |
+
'up' => [
|
324 |
+
'title' => __( 'Bottom To Top', 'happy-elementor-addons' ),
|
325 |
+
'icon' => 'eicon-v-align-top',
|
326 |
+
],
|
327 |
+
'right' => [
|
328 |
+
'title' => __( 'Left To Right', 'happy-elementor-addons' ),
|
329 |
+
'icon' => 'eicon-h-align-right',
|
330 |
+
],
|
331 |
+
],
|
332 |
+
'toggle' => false,
|
333 |
+
]
|
334 |
+
);
|
335 |
+
|
336 |
+
$this->end_controls_section();
|
337 |
+
|
338 |
+
}
|
339 |
+
|
340 |
+
protected function register_style_controls() {
|
341 |
+
$this->start_controls_section(
|
342 |
+
'_section_common_style',
|
343 |
+
[
|
344 |
+
'label' => __( 'Common', 'happy-elementor-addons' ),
|
345 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
346 |
+
]
|
347 |
+
);
|
348 |
+
|
349 |
+
$this->add_responsive_control(
|
350 |
+
'height',
|
351 |
+
[
|
352 |
+
'label' => __( 'Height', 'happy-elementor-addons' ),
|
353 |
+
'type' => Controls_Manager::SLIDER,
|
354 |
+
'size_units' => ['px'],
|
355 |
+
'range' => [
|
356 |
+
'px' => [
|
357 |
+
'min' => 100,
|
358 |
+
'max' => 1000,
|
359 |
+
],
|
360 |
+
],
|
361 |
+
'selectors' => [
|
362 |
+
'{{WRAPPER}} .ha-flip-box-front' => 'height: {{SIZE}}{{UNIT}};',
|
363 |
+
'{{WRAPPER}} .ha-flip-box-back' => 'height: {{SIZE}}{{UNIT}};',
|
364 |
+
],
|
365 |
+
]
|
366 |
+
);
|
367 |
+
|
368 |
+
$this->add_control(
|
369 |
+
'content_area_border_radius',
|
370 |
+
[
|
371 |
+
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
372 |
+
'type' => Controls_Manager::DIMENSIONS,
|
373 |
+
'size_units' => [ 'px', '%' ],
|
374 |
+
'separator' => 'after',
|
375 |
+
'selectors' => [
|
376 |
+
'{{WRAPPER}} .ha-flip-box-front' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
377 |
+
'{{WRAPPER}} .ha-flip-box-front:before' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
378 |
+
'{{WRAPPER}} .ha-flip-box-back' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
379 |
+
'{{WRAPPER}} .ha-flip-box-back:before' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
380 |
+
],
|
381 |
+
]
|
382 |
+
);
|
383 |
+
|
384 |
+
$this->end_controls_section();
|
385 |
+
|
386 |
+
// front side
|
387 |
+
$this->start_controls_section(
|
388 |
+
'_section_front_style',
|
389 |
+
[
|
390 |
+
'label' => __( 'Front Side', 'happy-elementor-addons' ),
|
391 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
392 |
+
]
|
393 |
+
);
|
394 |
+
|
395 |
+
$this->add_responsive_control(
|
396 |
+
'front_content_padding',
|
397 |
+
[
|
398 |
+
'label' => __( 'Padding', 'happy-elementor-addons' ),
|
399 |
+
'type' => Controls_Manager::DIMENSIONS,
|
400 |
+
'size_units' => [ 'px', '%' ],
|
401 |
+
'selectors' => [
|
402 |
+
'{{WRAPPER}} .ha-flip-box-front' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
403 |
+
],
|
404 |
+
]
|
405 |
+
);
|
406 |
+
|
407 |
+
$this->add_group_control(
|
408 |
+
Group_Control_Border::get_type(),
|
409 |
+
[
|
410 |
+
'name' => 'front_border',
|
411 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-front',
|
412 |
+
]
|
413 |
+
);
|
414 |
+
|
415 |
+
$this->add_group_control(
|
416 |
+
Group_Control_Box_Shadow::get_type(),
|
417 |
+
[
|
418 |
+
'name' => 'front_box_shadow',
|
419 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-front',
|
420 |
+
]
|
421 |
+
);
|
422 |
+
|
423 |
+
$this->add_group_control(
|
424 |
+
Group_Control_Background::get_type(),
|
425 |
+
[
|
426 |
+
'name' => 'front_background_image',
|
427 |
+
'types' => [ 'classic', 'gradient' ],
|
428 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-front',
|
429 |
+
]
|
430 |
+
);
|
431 |
+
|
432 |
+
$this->add_control(
|
433 |
+
'front_background_overlay',
|
434 |
+
[
|
435 |
+
'label' => __( 'Background Overlay', 'happy-elementor-addons' ),
|
436 |
+
'type' => Controls_Manager::COLOR,
|
437 |
+
'condition' => [
|
438 |
+
'front_background_image_image[url]!' => ''
|
439 |
+
],
|
440 |
+
'selectors' => [
|
441 |
+
'{{WRAPPER}} .ha-flip-wrap .ha-flip-box .ha-flip-box-front:before' => 'background-color: {{VALUE}}',
|
442 |
+
],
|
443 |
+
]
|
444 |
+
);
|
445 |
+
|
446 |
+
$this->add_control(
|
447 |
+
'front_background_color',
|
448 |
+
[
|
449 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
450 |
+
'type' => Controls_Manager::COLOR,
|
451 |
+
'default' => '#fff',
|
452 |
+
'condition' => [
|
453 |
+
'front_background_type' => 'color',
|
454 |
+
],
|
455 |
+
'selectors' => [
|
456 |
+
'{{WRAPPER}} .ha-flip-box-front' => 'background: {{VALUE}}',
|
457 |
+
],
|
458 |
+
]
|
459 |
+
);
|
460 |
+
|
461 |
+
$this->add_control(
|
462 |
+
'front_icon_heading',
|
463 |
+
[
|
464 |
+
'label' => __( 'Media Type - Icon', 'happy-elementor-addons' ),
|
465 |
+
'type' => Controls_Manager::HEADING,
|
466 |
+
'condition' => [
|
467 |
+
'front_icon_type' => 'icon'
|
468 |
+
],
|
469 |
+
'separator' => 'before',
|
470 |
+
]
|
471 |
+
);
|
472 |
+
|
473 |
+
$this->add_control(
|
474 |
+
'front_icon_heading_image',
|
475 |
+
[
|
476 |
+
'label' => __( 'Media Type - Image', 'happy-elementor-addons' ),
|
477 |
+
'type' => Controls_Manager::HEADING,
|
478 |
+
'condition' => [
|
479 |
+
'front_icon_type' => 'image'
|
480 |
+
],
|
481 |
+
'separator' => 'before',
|
482 |
+
]
|
483 |
+
);
|
484 |
+
|
485 |
+
$this->add_responsive_control(
|
486 |
+
'front_icon_spacing',
|
487 |
+
[
|
488 |
+
'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
|
489 |
+
'type' => Controls_Manager::SLIDER,
|
490 |
+
'size_units' => ['px', '%'],
|
491 |
+
'selectors' => [
|
492 |
+
'{{WRAPPER}} .ha-flip-box-front .ha-flip-icon' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
493 |
+
],
|
494 |
+
]
|
495 |
+
);
|
496 |
+
|
497 |
+
$this->add_responsive_control(
|
498 |
+
'front_icon_image_size',
|
499 |
+
[
|
500 |
+
'label' => __( 'Resize Image', 'happy-elementor-addons' ),
|
501 |
+
'type' => Controls_Manager::SLIDER,
|
502 |
+
'size_units' => ['px'],
|
503 |
+
'condition' => [
|
504 |
+
'front_icon_type' => 'image'
|
505 |
+
],
|
506 |
+
'range' => [
|
507 |
+
'px' => [
|
508 |
+
'min' => 10,
|
509 |
+
'max' => 500,
|
510 |
+
]
|
511 |
+
],
|
512 |
+
'selectors' => [
|
513 |
+
'{{WRAPPER}} .ha-flip-box-front-inner .icon-wrap .ha-flip-icon img' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};',
|
514 |
+
],
|
515 |
+
]
|
516 |
+
);
|
517 |
+
|
518 |
+
$this->add_control(
|
519 |
+
'front_icon_image_fit',
|
520 |
+
[
|
521 |
+
'label' => __( 'Image Fit', 'happy-elementor-addons' ),
|
522 |
+
'type' => Controls_Manager::SELECT,
|
523 |
+
'options' => [
|
524 |
+
'contain' => __( 'Contain', 'happy-elementor-addons' ),
|
525 |
+
'cover' => __( 'Cover', 'happy-elementor-addons' ),
|
526 |
+
],
|
527 |
+
'condition' => [
|
528 |
+
'front_icon_type' => 'image'
|
529 |
+
],
|
530 |
+
'selectors' => [
|
531 |
+
'{{WRAPPER}} .ha-flip-box-front-inner .icon-wrap .ha-flip-icon img' => 'object-fit: {{VALUE}};',
|
532 |
+
],
|
533 |
+
]
|
534 |
+
);
|
535 |
+
|
536 |
+
$this->add_responsive_control(
|
537 |
+
'front_icon_font_size',
|
538 |
+
[
|
539 |
+
'label' => __( 'Icon Size', 'happy-elementor-addons' ),
|
540 |
+
'type' => Controls_Manager::SLIDER,
|
541 |
+
'size_units' => ['px', 'em'],
|
542 |
+
'condition' => [
|
543 |
+
'front_icon_type' => 'icon'
|
544 |
+
],
|
545 |
+
'selectors' => [
|
546 |
+
'{{WRAPPER}} .ha-flip-box-front-inner .ha-flip-icon i' => 'font-size: {{SIZE}}{{UNIT}};',
|
547 |
+
],
|
548 |
+
]
|
549 |
+
);
|
550 |
+
|
551 |
+
$this->add_responsive_control(
|
552 |
+
'front_icon_background_size',
|
553 |
+
[
|
554 |
+
'label' => __( 'Padding', 'happy-elementor-addons' ),
|
555 |
+
'type' => Controls_Manager::SLIDER,
|
556 |
+
'size_units' => ['px'],
|
557 |
+
'condition' => [
|
558 |
+
'front_icon_type' => [ 'icon', 'image' ],
|
559 |
+
],
|
560 |
+
'selectors' => [
|
561 |
+
'{{WRAPPER}} .ha-flip-box-front-inner .icon-wrap .ha-flip-icon' => 'padding: {{SIZE}}{{UNIT}};',
|
562 |
+
],
|
563 |
+
]
|
564 |
+
);
|
565 |
+
|
566 |
+
$this->add_group_control(
|
567 |
+
Group_Control_Border::get_type(),
|
568 |
+
[
|
569 |
+
'name' => 'front_icon_border',
|
570 |
+
'condition' => [
|
571 |
+
'front_icon_type' => [ 'icon', 'image' ],
|
572 |
+
],
|
573 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-front-inner .icon-wrap .ha-flip-icon',
|
574 |
+
]
|
575 |
+
);
|
576 |
+
|
577 |
+
$this->add_control(
|
578 |
+
'front_icon_border_radius',
|
579 |
+
[
|
580 |
+
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
581 |
+
'type' => Controls_Manager::DIMENSIONS,
|
582 |
+
'size_units' => [ 'px', '%' ],
|
583 |
+
'condition' => [
|
584 |
+
'front_icon_type' => [ 'icon', 'image' ],
|
585 |
+
],
|
586 |
+
'selectors' => [
|
587 |
+
'{{WRAPPER}} .ha-flip-box-front-inner .icon-wrap .ha-flip-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
588 |
+
'{{WRAPPER}} .ha-flip-box-front-inner .ha-flip-icon img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
589 |
+
],
|
590 |
+
]
|
591 |
+
);
|
592 |
+
|
593 |
+
$this->add_group_control(
|
594 |
+
Group_Control_Box_Shadow::get_type(),
|
595 |
+
[
|
596 |
+
'name' => 'front_icon_box_shadow',
|
597 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-front-inner .ha-flip-icon',
|
598 |
+
'condition' => [
|
599 |
+
'front_icon_type' => [ 'icon', 'image' ],
|
600 |
+
],
|
601 |
+
]
|
602 |
+
);
|
603 |
+
|
604 |
+
$this->add_control(
|
605 |
+
'front_icon_color',
|
606 |
+
[
|
607 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
608 |
+
'type' => Controls_Manager::COLOR,
|
609 |
+
'condition' => [
|
610 |
+
'front_icon_type' => 'icon'
|
611 |
+
],
|
612 |
+
'selectors' => [
|
613 |
+
'{{WRAPPER}} .ha-flip-box-front-inner .icon-wrap .ha-flip-icon i' => 'color: {{VALUE}}',
|
614 |
+
],
|
615 |
+
]
|
616 |
+
);
|
617 |
+
|
618 |
+
$this->add_control(
|
619 |
+
'front_icon_background_color',
|
620 |
+
[
|
621 |
+
'label' => __( 'Background Color', 'happy-elementor-addons' ),
|
622 |
+
'type' => Controls_Manager::COLOR,
|
623 |
+
'condition' => [
|
624 |
+
'front_icon_type' => [ 'icon', 'image' ],
|
625 |
+
],
|
626 |
+
'selectors' => [
|
627 |
+
'{{WRAPPER}} .ha-flip-box-front-inner .icon-wrap .ha-flip-icon' => 'background: {{VALUE}}',
|
628 |
+
],
|
629 |
+
]
|
630 |
+
);
|
631 |
+
|
632 |
+
$this->add_control(
|
633 |
+
'front_text',
|
634 |
+
[
|
635 |
+
'label' => __( 'Title & Description', 'happy-elementor-addons' ),
|
636 |
+
'type' => Controls_Manager::HEADING,
|
637 |
+
'separator' => 'before',
|
638 |
+
]
|
639 |
+
);
|
640 |
+
|
641 |
+
$this->start_controls_tabs( '_tabs_front_text' );
|
642 |
+
$this->start_controls_tab(
|
643 |
+
'_tab_front_title',
|
644 |
+
[
|
645 |
+
'label' => __( 'Title', 'happy-elementor-addons' ),
|
646 |
+
]
|
647 |
+
);
|
648 |
+
|
649 |
+
$this->add_control(
|
650 |
+
'front_title_color',
|
651 |
+
[
|
652 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
653 |
+
'type' => Controls_Manager::COLOR,
|
654 |
+
'selectors' => [
|
655 |
+
'{{WRAPPER}} .ha-flip-box-front-inner .ha-flip-box-heading' => 'color: {{VALUE}}',
|
656 |
+
],
|
657 |
+
]
|
658 |
+
);
|
659 |
+
|
660 |
+
$this->add_group_control(
|
661 |
+
Group_Control_Typography::get_type(),
|
662 |
+
[
|
663 |
+
'name' => 'front_title_typography',
|
664 |
+
'label' => __( 'Typography', 'happy-elementor-addons' ),
|
665 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-front-inner .ha-flip-box-heading',
|
666 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_2,
|
667 |
+
]
|
668 |
+
);
|
669 |
+
|
670 |
+
$this->add_group_control(
|
671 |
+
Group_Control_Text_Shadow::get_type(),
|
672 |
+
[
|
673 |
+
'name' => 'front_title_text_shadow',
|
674 |
+
'label' => __( 'Text Shadow', 'happy-elementor-addons' ),
|
675 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-front-inner .ha-flip-box-heading',
|
676 |
+
]
|
677 |
+
);
|
678 |
+
|
679 |
+
$this->end_controls_tab();
|
680 |
+
|
681 |
+
$this->start_controls_tab(
|
682 |
+
'_tab_front_description',
|
683 |
+
[
|
684 |
+
'label' => __( 'Description', 'happy-elementor-addons' ),
|
685 |
+
]
|
686 |
+
);
|
687 |
+
|
688 |
+
$this->add_responsive_control(
|
689 |
+
'front_description_space',
|
690 |
+
[
|
691 |
+
'label' => __( 'Spacing', 'happy-elementor-addons' ),
|
692 |
+
'type' => Controls_Manager::SLIDER,
|
693 |
+
'size_units' => ['px', '%'],
|
694 |
+
'selectors' => [
|
695 |
+
'{{WRAPPER}} .ha-flip-box-front-inner .ha-text p' => 'margin-top: {{SIZE}}{{UNIT}};',
|
696 |
+
],
|
697 |
+
]
|
698 |
+
);
|
699 |
+
|
700 |
+
$this->add_control(
|
701 |
+
'front_description_color',
|
702 |
+
[
|
703 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
704 |
+
'type' => Controls_Manager::COLOR,
|
705 |
+
'selectors' => [
|
706 |
+
'{{WRAPPER}} .ha-flip-box-front-inner .ha-text p' => 'color: {{VALUE}}',
|
707 |
+
],
|
708 |
+
]
|
709 |
+
);
|
710 |
+
|
711 |
+
$this->add_group_control(
|
712 |
+
Group_Control_Typography::get_type(),
|
713 |
+
[
|
714 |
+
'name' => 'front_description_typography',
|
715 |
+
'label' => __( 'Typography', 'happy-elementor-addons' ),
|
716 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-front-inner .ha-text p',
|
717 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
718 |
+
]
|
719 |
+
);
|
720 |
+
|
721 |
+
$this->add_group_control(
|
722 |
+
Group_Control_Text_Shadow::get_type(),
|
723 |
+
[
|
724 |
+
'name' => 'front_description_text_shadow',
|
725 |
+
'label' => __( 'Text Shadow', 'happy-elementor-addons' ),
|
726 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-front-inner .ha-text p',
|
727 |
+
]
|
728 |
+
);
|
729 |
+
|
730 |
+
$this->end_controls_tab();
|
731 |
+
$this->end_controls_tabs();
|
732 |
+
|
733 |
+
$this->end_controls_section();
|
734 |
+
|
735 |
+
// back side
|
736 |
+
$this->start_controls_section(
|
737 |
+
'_section_back_text_style',
|
738 |
+
[
|
739 |
+
'label' => __( 'Back Side', 'happy-elementor-addons' ),
|
740 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
741 |
+
]
|
742 |
+
);
|
743 |
+
|
744 |
+
$this->add_responsive_control(
|
745 |
+
'back_content_padding',
|
746 |
+
[
|
747 |
+
'label' => __( 'Padding', 'happy-elementor-addons' ),
|
748 |
+
'type' => Controls_Manager::DIMENSIONS,
|
749 |
+
'size_units' => [ 'px', '%' ],
|
750 |
+
'selectors' => [
|
751 |
+
'{{WRAPPER}} .ha-flip-box-back' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
752 |
+
],
|
753 |
+
]
|
754 |
+
);
|
755 |
+
|
756 |
+
$this->add_group_control(
|
757 |
+
Group_Control_Border::get_type(),
|
758 |
+
[
|
759 |
+
'name' => 'back_border',
|
760 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-back',
|
761 |
+
]
|
762 |
+
);
|
763 |
+
|
764 |
+
$this->add_group_control(
|
765 |
+
Group_Control_Box_Shadow::get_type(),
|
766 |
+
[
|
767 |
+
'name' => 'back_box_shadow',
|
768 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-back',
|
769 |
+
]
|
770 |
+
);
|
771 |
+
|
772 |
+
$this->add_group_control(
|
773 |
+
Group_Control_Background::get_type(),
|
774 |
+
[
|
775 |
+
'name' => 'back_background_image',
|
776 |
+
'types' => [ 'classic', 'gradient' ],
|
777 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-back',
|
778 |
+
]
|
779 |
+
);
|
780 |
+
|
781 |
+
$this->add_control(
|
782 |
+
'back_background_overlay',
|
783 |
+
[
|
784 |
+
'label' => __( 'Background Overlay', 'happy-elementor-addons' ),
|
785 |
+
'type' => Controls_Manager::COLOR,
|
786 |
+
'default' => 'rgba(0,0,0,0.27)',
|
787 |
+
'condition' => [
|
788 |
+
'back_background_image_background' => 'classic'
|
789 |
+
],
|
790 |
+
'selectors' => [
|
791 |
+
'{{WRAPPER}} .ha-flip-wrap .ha-flip-box .ha-flip-box-back:before' => 'background-color: {{VALUE}}',
|
792 |
+
],
|
793 |
+
]
|
794 |
+
);
|
795 |
+
|
796 |
+
$this->add_control(
|
797 |
+
'back_background_color',
|
798 |
+
[
|
799 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
800 |
+
'type' => Controls_Manager::COLOR,
|
801 |
+
'default' => '#27374c',
|
802 |
+
'condition' => [
|
803 |
+
'back_background_type' => 'color'
|
804 |
+
],
|
805 |
+
'selectors' => [
|
806 |
+
'{{WRAPPER}} .ha-flip-box-back' => 'background: {{VALUE}}',
|
807 |
+
],
|
808 |
+
]
|
809 |
+
);
|
810 |
+
|
811 |
+
$this->add_control(
|
812 |
+
'back_icon_heading',
|
813 |
+
[
|
814 |
+
'label' => __( 'Media Type - Icon', 'happy-elementor-addons' ),
|
815 |
+
'type' => Controls_Manager::HEADING,
|
816 |
+
'separator' => 'before',
|
817 |
+
'condition' => [
|
818 |
+
'back_icon_type' => 'icon'
|
819 |
+
],
|
820 |
+
]
|
821 |
+
);
|
822 |
+
|
823 |
+
$this->add_control(
|
824 |
+
'back_icon_heading_image',
|
825 |
+
[
|
826 |
+
'label' => __( 'Media Type - Image', 'happy-elementor-addons' ),
|
827 |
+
'type' => Controls_Manager::HEADING,
|
828 |
+
'separator' => 'before',
|
829 |
+
'condition' => [
|
830 |
+
'back_icon_type' => 'image'
|
831 |
+
],
|
832 |
+
]
|
833 |
+
);
|
834 |
+
|
835 |
+
$this->add_responsive_control(
|
836 |
+
'back_icon_spacing',
|
837 |
+
[
|
838 |
+
'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
|
839 |
+
'type' => Controls_Manager::SLIDER,
|
840 |
+
'size_units' => [ 'px', '%'],
|
841 |
+
'condition' => [
|
842 |
+
'back_icon_type' => [ 'icon', 'image' ],
|
843 |
+
],
|
844 |
+
'selectors' => [
|
845 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .ha-flip-icon' => 'margin-bottom: {{SIZE}}{{UNIT}};'
|
846 |
+
],
|
847 |
+
]
|
848 |
+
);
|
849 |
+
|
850 |
+
$this->add_responsive_control(
|
851 |
+
'back_icon_image_size',
|
852 |
+
[
|
853 |
+
'label' => __( 'Resize Image', 'happy-elementor-addons' ),
|
854 |
+
'type' => Controls_Manager::SLIDER,
|
855 |
+
'size_units' => ['px'],
|
856 |
+
'condition' => [
|
857 |
+
'back_icon_type' => 'image'
|
858 |
+
],
|
859 |
+
'range' => [
|
860 |
+
'px' => [
|
861 |
+
'min' => 10,
|
862 |
+
'max' => 500,
|
863 |
+
]
|
864 |
+
],
|
865 |
+
'selectors' => [
|
866 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .ha-flip-icon img' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};',
|
867 |
+
],
|
868 |
+
]
|
869 |
+
);
|
870 |
+
|
871 |
+
$this->add_control(
|
872 |
+
'back_icon_image_fit',
|
873 |
+
[
|
874 |
+
'label' => __( 'Image Fit', 'happy-elementor-addons' ),
|
875 |
+
'type' => Controls_Manager::SELECT,
|
876 |
+
'options' => [
|
877 |
+
'contain' => __( 'Contain', 'happy-elementor-addons' ),
|
878 |
+
'cover' => __( 'Cover', 'happy-elementor-addons' ),
|
879 |
+
],
|
880 |
+
'condition' => [
|
881 |
+
'back_icon_type' => 'image'
|
882 |
+
],
|
883 |
+
'selectors' => [
|
884 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .icon-wrap .ha-flip-icon img' => 'object-fit: {{VALUE}};',
|
885 |
+
],
|
886 |
+
]
|
887 |
+
);
|
888 |
+
|
889 |
+
$this->add_responsive_control(
|
890 |
+
'back_icon_font_size',
|
891 |
+
[
|
892 |
+
'label' => __( 'Icon Size', 'happy-elementor-addons' ),
|
893 |
+
'type' => Controls_Manager::SLIDER,
|
894 |
+
'size_units' => ['px', 'em'],
|
895 |
+
'condition' => [
|
896 |
+
'back_icon_type' => 'icon'
|
897 |
+
],
|
898 |
+
'selectors' => [
|
899 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .ha-flip-icon i' => 'font-size: {{SIZE}}{{UNIT}};',
|
900 |
+
],
|
901 |
+
]
|
902 |
+
);
|
903 |
+
|
904 |
+
$this->add_responsive_control(
|
905 |
+
'back_icon_padding',
|
906 |
+
[
|
907 |
+
'label' => __( 'Padding', 'happy-elementor-addons' ),
|
908 |
+
'type' => Controls_Manager::SLIDER,
|
909 |
+
'size_units' => ['px', '%'],
|
910 |
+
'condition' => [
|
911 |
+
'back_icon_type' => [ 'icon', 'image' ],
|
912 |
+
],
|
913 |
+
'selectors' => [
|
914 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .icon-wrap .ha-flip-icon' => 'padding: {{SIZE}}{{UNIT}};',
|
915 |
+
],
|
916 |
+
]
|
917 |
+
);
|
918 |
+
|
919 |
+
$this->add_group_control(
|
920 |
+
Group_Control_Border::get_type(),
|
921 |
+
[
|
922 |
+
'name' => 'back_icon_border',
|
923 |
+
'condition' => [
|
924 |
+
'back_icon_type' => [ 'icon', 'image' ],
|
925 |
+
],
|
926 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-back-inner .icon-wrap .ha-flip-icon',
|
927 |
+
]
|
928 |
+
);
|
929 |
+
|
930 |
+
$this->add_control(
|
931 |
+
'back_icon_border_radius',
|
932 |
+
[
|
933 |
+
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
934 |
+
'type' => Controls_Manager::DIMENSIONS,
|
935 |
+
'size_units' => [ 'px', '%' ],
|
936 |
+
'condition' => [
|
937 |
+
'back_icon_type' => [ 'icon', 'image']
|
938 |
+
],
|
939 |
+
'selectors' => [
|
940 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .icon-wrap .ha-flip-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
941 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .ha-flip-icon img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
942 |
+
],
|
943 |
+
]
|
944 |
+
);
|
945 |
+
|
946 |
+
$this->add_group_control(
|
947 |
+
Group_Control_Box_Shadow::get_type(),
|
948 |
+
[
|
949 |
+
'name' => 'back_icon_box_shadow',
|
950 |
+
'condition' => [
|
951 |
+
'back_icon_type' => [ 'icon', 'image']
|
952 |
+
],
|
953 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-back-inner .ha-flip-icon',
|
954 |
+
]
|
955 |
+
);
|
956 |
+
|
957 |
+
$this->add_control(
|
958 |
+
'back_icon_color',
|
959 |
+
[
|
960 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
961 |
+
'type' => Controls_Manager::COLOR,
|
962 |
+
'condition' => [
|
963 |
+
'back_icon_type' => 'icon'
|
964 |
+
],
|
965 |
+
'selectors' => [
|
966 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .ha-flip-icon i' => 'color: {{VALUE}}',
|
967 |
+
],
|
968 |
+
]
|
969 |
+
);
|
970 |
+
|
971 |
+
$this->add_control(
|
972 |
+
'back_icon_background_color',
|
973 |
+
[
|
974 |
+
'label' => __( 'Background Color', 'happy-elementor-addons' ),
|
975 |
+
'type' => Controls_Manager::COLOR,
|
976 |
+
'condition' => [
|
977 |
+
'back_icon_type' => [ 'icon', 'image' ],
|
978 |
+
],
|
979 |
+
'selectors' => [
|
980 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .icon-wrap .ha-flip-icon' => 'background: {{VALUE}}',
|
981 |
+
],
|
982 |
+
]
|
983 |
+
);
|
984 |
+
|
985 |
+
$this->add_control(
|
986 |
+
'back_text',
|
987 |
+
[
|
988 |
+
'label' => __( 'Title & Description', 'happy-elementor-addons' ),
|
989 |
+
'type' => Controls_Manager::HEADING,
|
990 |
+
'separator' => 'before',
|
991 |
+
]
|
992 |
+
);
|
993 |
+
|
994 |
+
$this->start_controls_tabs( '_tabs_back_text' );
|
995 |
+
$this->start_controls_tab(
|
996 |
+
'_tab_back_title',
|
997 |
+
[
|
998 |
+
'label' => __( 'Title', 'happy-elementor-addons' ),
|
999 |
+
]
|
1000 |
+
);
|
1001 |
+
|
1002 |
+
$this->add_control(
|
1003 |
+
'back_title_color',
|
1004 |
+
[
|
1005 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
1006 |
+
'type' => Controls_Manager::COLOR,
|
1007 |
+
'selectors' => [
|
1008 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .ha-flip-box-heading-back' => 'color: {{VALUE}}',
|
1009 |
+
],
|
1010 |
+
]
|
1011 |
+
);
|
1012 |
+
|
1013 |
+
$this->add_group_control(
|
1014 |
+
Group_Control_Typography::get_type(),
|
1015 |
+
[
|
1016 |
+
'name' => 'back_title_typography',
|
1017 |
+
'label' => __( 'Typography', 'happy-elementor-addons' ),
|
1018 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-back-inner .ha-flip-box-heading-back',
|
1019 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_2,
|
1020 |
+
]
|
1021 |
+
);
|
1022 |
+
|
1023 |
+
$this->add_group_control(
|
1024 |
+
Group_Control_Text_Shadow::get_type(),
|
1025 |
+
[
|
1026 |
+
'name' => 'back_title_shadow',
|
1027 |
+
'label' => __( 'Text Shadow', 'happy-elementor-addons' ),
|
1028 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-back-inner .ha-flip-box-heading-back',
|
1029 |
+
]
|
1030 |
+
);
|
1031 |
+
|
1032 |
+
$this->end_controls_tab();
|
1033 |
+
|
1034 |
+
$this->start_controls_tab(
|
1035 |
+
'_tab_back_description',
|
1036 |
+
[
|
1037 |
+
'label' => __( 'Description', 'happy-elementor-addons' ),
|
1038 |
+
]
|
1039 |
+
);
|
1040 |
+
|
1041 |
+
$this->add_responsive_control(
|
1042 |
+
'back_description_space',
|
1043 |
+
[
|
1044 |
+
'label' => __( 'Spacing', 'happy-elementor-addons' ),
|
1045 |
+
'type' => Controls_Manager::SLIDER,
|
1046 |
+
'size_units' => ['px', '%'],
|
1047 |
+
'selectors' => [
|
1048 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .ha-text p' => 'margin-top: {{SIZE}}{{UNIT}};',
|
1049 |
+
],
|
1050 |
+
]
|
1051 |
+
);
|
1052 |
+
|
1053 |
+
$this->add_control(
|
1054 |
+
'back_description_color',
|
1055 |
+
[
|
1056 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
1057 |
+
'type' => Controls_Manager::COLOR,
|
1058 |
+
'selectors' => [
|
1059 |
+
'{{WRAPPER}} .ha-flip-box-back-inner .ha-text p' => 'color: {{VALUE}}',
|
1060 |
+
],
|
1061 |
+
]
|
1062 |
+
);
|
1063 |
+
|
1064 |
+
$this->add_group_control(
|
1065 |
+
Group_Control_Typography::get_type(),
|
1066 |
+
[
|
1067 |
+
'name' => 'back_description_typography',
|
1068 |
+
'label' => __( 'Typography', 'happy-elementor-addons' ),
|
1069 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-back-inner .ha-text p',
|
1070 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
1071 |
+
]
|
1072 |
+
);
|
1073 |
+
|
1074 |
+
$this->add_group_control(
|
1075 |
+
Group_Control_Text_Shadow::get_type(),
|
1076 |
+
[
|
1077 |
+
'name' => 'back_description_text_shadow',
|
1078 |
+
'label' => __( 'Text Shadow', 'happy-elementor-addons' ),
|
1079 |
+
'selector' => '{{WRAPPER}} .ha-flip-box-back-inner .ha-text p',
|
1080 |
+
]
|
1081 |
+
);
|
1082 |
+
|
1083 |
+
$this->end_controls_tab();
|
1084 |
+
$this->end_controls_tabs();
|
1085 |
+
|
1086 |
+
$this->end_controls_section();
|
1087 |
+
}
|
1088 |
+
|
1089 |
+
protected function render() {
|
1090 |
+
$settings = $this->get_settings_for_display();
|
1091 |
+
|
1092 |
+
// icon/image
|
1093 |
+
if ( $settings['front_icon_image']['id'] && isset( $settings['front_icon_image']['url'] ) ) {
|
1094 |
+
$this->add_render_attribute( 'front_icon_image', 'src', $settings['front_icon_image']['url'] );
|
1095 |
+
$this->add_render_attribute( 'front_icon_image', 'alt', Control_Media::get_image_alt( $settings['front_icon_image'] ) );
|
1096 |
+
$this->add_render_attribute( 'front_icon_image', 'title', Control_Media::get_image_title( $settings['front_icon_image'] ) );
|
1097 |
+
}
|
1098 |
+
|
1099 |
+
// title & description
|
1100 |
+
$this->add_render_attribute( 'front_title', 'class', 'ha-flip-box-heading' );
|
1101 |
+
$this->add_render_attribute( 'back_title', 'class', 'ha-flip-box-heading-back' );
|
1102 |
+
$this->add_render_attribute( 'front_description', 'class', 'ha-desc' );
|
1103 |
+
$this->add_render_attribute( 'back_description', 'class', 'ha-desc' );
|
1104 |
+
$this->add_inline_editing_attributes( 'back_description', 'basic' );
|
1105 |
+
|
1106 |
+
// display type
|
1107 |
+
$this->add_render_attribute( 'display', 'class', 'ha-flip-box-container ha-flip-effect-classic' );
|
1108 |
+
|
1109 |
+
// flip position
|
1110 |
+
$this->add_render_attribute( 'flip-position', 'class', 'ha-flip-box-inner' );
|
1111 |
+
if ( $settings['flip_position'] === 'up' ) {
|
1112 |
+
$this->add_render_attribute( 'flip-position', 'class', 'ha-flip-up' );
|
1113 |
+
} elseif ( $settings['flip_position'] === 'right' ) {
|
1114 |
+
$this->add_render_attribute( 'flip-position', 'class', 'ha-flip-right' );
|
1115 |
+
}
|
1116 |
+
?>
|
1117 |
+
|
1118 |
+
<div <?php echo $this->get_render_attribute_string( 'display' ); ?>>
|
1119 |
+
|
1120 |
+
<div <?php echo $this->get_render_attribute_string( 'flip-position' ); ?>>
|
1121 |
+
<div class="ha-flip-box-inner-wrapper">
|
1122 |
+
<div class="ha-flip-box-front">
|
1123 |
+
<div class="ha-flip-box-front-inner">
|
1124 |
+
<div class="icon-wrap">
|
1125 |
+
<?php if ( $settings['front_icon'] ) : ?>
|
1126 |
+
<div class="ha-flip-icon icon">
|
1127 |
+
<i class="<?php echo esc_attr( $settings['front_icon'] ); ?>"></i>
|
1128 |
+
</div>
|
1129 |
+
<?php endif; ?>
|
1130 |
+
<?php if ( $settings['front_icon_image'] ) : ?>
|
1131 |
+
<div class="ha-flip-icon">
|
1132 |
+
<?php echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'front_icon_thumbnail', 'front_icon_image' ); ?>
|
1133 |
+
</div>
|
1134 |
+
<?php endif; ?>
|
1135 |
+
</div>
|
1136 |
+
|
1137 |
+
<div class="ha-text">
|
1138 |
+
<?php if ( $settings['front_title'] ) : ?>
|
1139 |
+
<h2 <?php echo $this->get_render_attribute_string( 'front_title' ); ?>><?php echo esc_html( $settings['front_title'] ); ?></h2>
|
1140 |
+
<?php endif; ?>
|
1141 |
+
|
1142 |
+
<?php if ( $settings['front_description'] ) : ?>
|
1143 |
+
<p <?php echo $this->get_render_attribute_string( 'front_description' ); ?>><?php echo $settings['front_description']; ?></p>
|
1144 |
+
<?php endif; ?>
|
1145 |
+
</div>
|
1146 |
+
</div>
|
1147 |
+
</div>
|
1148 |
+
|
1149 |
+
<div class="ha-flip-box-back">
|
1150 |
+
<div class="ha-flip-box-back-inner">
|
1151 |
+
<div class="icon-wrap">
|
1152 |
+
<?php if ( $settings['back_icon'] ) : ?>
|
1153 |
+
<div class="ha-flip-icon icon">
|
1154 |
+
<i class="<?php echo esc_attr( $settings['back_icon'] ); ?>"></i>
|
1155 |
+
</div>
|
1156 |
+
<?php endif; ?>
|
1157 |
+
<?php if ( $settings['back_icon_image'] ) : ?>
|
1158 |
+
<div class="ha-flip-icon">
|
1159 |
+
<?php echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'back_icon_thumbnail', 'back_icon_image' ); ?>
|
1160 |
+
</div>
|
1161 |
+
<?php endif; ?>
|
1162 |
+
</div>
|
1163 |
+
|
1164 |
+
<div class="ha-text">
|
1165 |
+
<?php if ( $settings['back_title'] ) : ?>
|
1166 |
+
<h2 <?php echo $this->get_render_attribute_string( 'back_title' ); ?>><?php echo esc_html( $settings['back_title'] ); ?></h2>
|
1167 |
+
<?php endif; ?>
|
1168 |
+
|
1169 |
+
<?php if ( $settings['back_description'] ) : ?>
|
1170 |
+
<p <?php echo $this->get_render_attribute_string( 'back_description' ) ?>><?php echo $settings['back_description'] ?></p>
|
1171 |
+
<?php endif; ?>
|
1172 |
+
</div>
|
1173 |
+
|
1174 |
+
</div>
|
1175 |
+
</div>
|
1176 |
+
</div>
|
1177 |
+
</div>
|
1178 |
+
</div>
|
1179 |
+
<?php
|
1180 |
+
}
|
1181 |
+
}
|
widgets/icon-box/widget.php
CHANGED
@@ -647,7 +647,9 @@ class Icon_Box extends Base {
|
|
647 |
Â
}
|
648 |
Â
|
649 |
Â
if ( \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
|
650 |
-
|
Â
|
|
Â
|
|
651 |
Â
}
|
652 |
Â
|
653 |
Â
$tag = 'div';
|
647 |
Â
}
|
648 |
Â
|
649 |
Â
if ( \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
|
650 |
+
if( function_exists( 'render_edit_tools' ) ) {
|
651 |
+
$this->render_edit_tools();
|
652 |
+
}
|
653 |
Â
}
|
654 |
Â
|
655 |
Â
$tag = 'div';
|
widgets/justified-gallery/widget.php
CHANGED
@@ -29,7 +29,7 @@ class Justified_Gallery extends Base {
|
|
29 |
Â
* @return string Widget title.
|
30 |
Â
*/
|
31 |
Â
public function get_title() {
|
32 |
-
return __( 'Justified
|
33 |
Â
}
|
34 |
Â
|
35 |
Â
/**
|
29 |
Â
* @return string Widget title.
|
30 |
Â
*/
|
31 |
Â
public function get_title() {
|
32 |
+
return __( 'Justified Grid', 'happy-elementor-addons' );
|
33 |
Â
}
|
34 |
Â
|
35 |
Â
/**
|
widgets/number/widget.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Happy_Addons
|
6 |
Â
*/
|
@@ -47,7 +47,7 @@ class Number extends Base {
|
|
47 |
Â
}
|
48 |
Â
|
49 |
Â
public function get_keywords() {
|
50 |
-
return [ '
|
51 |
Â
}
|
52 |
Â
|
53 |
Â
/**
|
@@ -68,81 +68,45 @@ class Number extends Base {
|
|
68 |
Â
'label' => __( 'Text', 'happy-elementor-addons' ),
|
69 |
Â
'label_block' => false,
|
70 |
Â
'type' => Controls_Manager::TEXT,
|
71 |
-
'default' =>
|
72 |
Â
]
|
73 |
Â
);
|
74 |
Â
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
]
|
88 |
-
);
|
89 |
Â
|
90 |
Â
$this->add_control(
|
91 |
-
'
|
92 |
Â
[
|
93 |
-
'label' => __( '
|
94 |
-
'type' => Controls_Manager::
|
95 |
-
'
|
96 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
97 |
Â
],
|
98 |
Â
]
|
99 |
Â
);
|
100 |
Â
|
101 |
-
|
102 |
-
|
103 |
-
[
|
104 |
-
'name' => 'number_text_typography',
|
105 |
-
'label' => __( 'Typography', 'happy-elementor-addons' ),
|
106 |
-
'selector' => '{{WRAPPER}} .ha-number-border',
|
107 |
-
'scheme' => Scheme_Typography::TYPOGRAPHY_3
|
108 |
-
]
|
109 |
-
);
|
110 |
-
|
111 |
-
$this->add_group_control(
|
112 |
-
Group_Control_Text_Shadow::get_type(),
|
113 |
-
[
|
114 |
-
'name' => 'number_text_shadow',
|
115 |
-
'label' => __( 'Text Shadow', 'happy-elementor-addons' ),
|
116 |
-
'selector' => '{{WRAPPER}} .ha-number-border span',
|
117 |
-
]
|
118 |
-
);
|
119 |
-
|
120 |
-
$this->add_control(
|
121 |
-
'number_text_rotate',
|
122 |
-
[
|
123 |
-
'label' => __( 'Text Rotate', 'happy-elementor-addons' ),
|
124 |
-
'type' => Controls_Manager::SLIDER,
|
125 |
-
'size_units' => [ 'px' ],
|
126 |
-
'range' => [
|
127 |
-
'px' => [
|
128 |
-
'min' => 0,
|
129 |
-
'max' => 360,
|
130 |
-
'step' => 5,
|
131 |
-
],
|
132 |
-
|
133 |
-
],
|
134 |
-
'default' => [
|
135 |
-
'unit' => 'px',
|
136 |
-
'size' => 0,
|
137 |
-
],
|
138 |
-
'selectors' => [
|
139 |
-
'{{WRAPPER}} .ha-number-text' => '-webkit-transform: rotate({{SIZE}}deg);-ms-transform: rotate({{SIZE}}deg);transform: rotate({{SIZE}}deg);'
|
140 |
-
],
|
141 |
-
]
|
142 |
-
);
|
143 |
-
|
144 |
-
$this->end_controls_section();
|
145 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
146 |
Â
$this->start_controls_section(
|
147 |
Â
'number_background_style',
|
148 |
Â
[
|
@@ -154,26 +118,17 @@ class Number extends Base {
|
|
154 |
Â
$this->add_responsive_control(
|
155 |
Â
'number_width_height',
|
156 |
Â
[
|
157 |
-
'label' => __( '
|
158 |
Â
'type' => Controls_Manager::SLIDER,
|
159 |
Â
'size_units' => [ 'px' ],
|
160 |
Â
'range' => [
|
161 |
Â
'px' => [
|
162 |
Â
'min' => 0,
|
163 |
-
'max' =>
|
164 |
-
'step' => 5,
|
165 |
-
],
|
166 |
-
'%' => [
|
167 |
-
'min' => 0,
|
168 |
-
'max' => 100,
|
169 |
Â
],
|
170 |
Â
],
|
171 |
-
'default' => [
|
172 |
-
'unit' => 'px',
|
173 |
-
'size' => 50,
|
174 |
-
],
|
175 |
Â
'selectors' => [
|
176 |
-
'{{WRAPPER}} .ha-number-
|
177 |
Â
],
|
178 |
Â
]
|
179 |
Â
);
|
@@ -185,48 +140,38 @@ class Number extends Base {
|
|
185 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
186 |
Â
'size_units' => [ 'px', '%', 'em' ],
|
187 |
Â
'selectors' => [
|
188 |
-
'{{WRAPPER}} .ha-number-
|
189 |
Â
],
|
190 |
Â
]
|
191 |
Â
);
|
192 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
193 |
Â
$this->add_control(
|
194 |
Â
'number_border_radius',
|
195 |
Â
[
|
196 |
Â
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
197 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
198 |
-
'size_units' => [ 'px', '%'
|
199 |
Â
'selectors' => [
|
200 |
-
'{{WRAPPER}} .ha-number-
|
201 |
Â
],
|
202 |
Â
]
|
203 |
Â
);
|
204 |
Â
|
205 |
-
$this->add_group_control(
|
206 |
-
Group_Control_Border::get_type(),
|
207 |
-
[
|
208 |
-
'name' => 'number_border',
|
209 |
-
'label' => __( 'Border', 'happy-elementor-addons' ),
|
210 |
-
'selector' => '{{WRAPPER}} .ha-number-border',
|
211 |
-
]
|
212 |
-
);
|
213 |
-
|
214 |
-
$this->add_group_control(
|
215 |
-
Group_Control_Background::get_type(),
|
216 |
-
[
|
217 |
-
'name' => 'number_background_color',
|
218 |
-
'label' => __( 'Background', 'happy-elementor-addons' ),
|
219 |
-
'types' => [ 'classic', 'gradient' ],
|
220 |
-
'selector' => '{{WRAPPER}} .ha-number-border',
|
221 |
-
]
|
222 |
-
);
|
223 |
-
|
224 |
Â
$this->add_group_control(
|
225 |
Â
Group_Control_Box_Shadow::get_type(),
|
226 |
Â
[
|
227 |
Â
'name' => 'number_box_shadow',
|
228 |
Â
'label' => __( 'Box Shadow', 'happy-elementor-addons' ),
|
229 |
-
'selector' => '{{WRAPPER}} .ha-number-
|
230 |
Â
]
|
231 |
Â
);
|
232 |
Â
|
@@ -251,7 +196,7 @@ class Number extends Base {
|
|
251 |
Â
],
|
252 |
Â
'toggle' => true,
|
253 |
Â
'selectors' => [
|
254 |
-
'{{WRAPPER}} .ha-number-
|
255 |
Â
],
|
256 |
Â
'selectors_dictionary' => [
|
257 |
Â
'left' => 'float: left',
|
@@ -261,91 +206,155 @@ class Number extends Base {
|
|
261 |
Â
]
|
262 |
Â
);
|
263 |
Â
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
Â
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
);
|
282 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
283 |
Â
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
'screen' => 'Screen',
|
294 |
-
'overlay' => 'Overlay',
|
295 |
-
'darken' => 'Darken',
|
296 |
-
'lighten' => 'Lighten',
|
297 |
-
'color-dodge' => 'Color Dodge',
|
298 |
-
'color-burn' => 'Color Burn',
|
299 |
-
'saturation' => 'Saturation',
|
300 |
-
'difference' => 'Difference',
|
301 |
-
'exclusion' => 'Exclusion',
|
302 |
-
'hue' => 'Hue',
|
303 |
-
'saturation' => 'Saturation',
|
304 |
-
'color' => 'Color',
|
305 |
-
'luminosity' => 'Luminosity',
|
306 |
-
],
|
307 |
-
'selectors' => [
|
308 |
-
'{{WRAPPER}} .ha-number-border-overlay' => 'mix-blend-mode: {{VALUE}}',
|
309 |
-
],
|
310 |
-
]
|
311 |
-
);
|
312 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
313 |
Â
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
'{{WRAPPER}} .ha-number-border-overlay' => 'opacity: {{SIZE}};',
|
333 |
-
],
|
334 |
-
]
|
335 |
-
);
|
336 |
Â
|
337 |
Â
$this->end_controls_section();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
338 |
Â
}
|
339 |
Â
|
340 |
Â
protected function render() {
|
341 |
Â
$settings = $this->get_settings_for_display();
|
342 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
343 |
Â
|
344 |
Â
<div class="ha-number-body">
|
345 |
-
<div class="ha-number-
|
346 |
-
<
|
347 |
-
<span class="ha-number-text"><?php echo esc_html( $settings['number_text'] ); ?></span>
|
348 |
-
</div>
|
349 |
Â
</div>
|
350 |
Â
|
351 |
Â
<?php
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Number widget class
|
4 |
Â
*
|
5 |
Â
* @package Happy_Addons
|
6 |
Â
*/
|
47 |
Â
}
|
48 |
Â
|
49 |
Â
public function get_keywords() {
|
50 |
+
return [ 'number', 'animate', 'text' ];
|
51 |
Â
}
|
52 |
Â
|
53 |
Â
/**
|
68 |
Â
'label' => __( 'Text', 'happy-elementor-addons' ),
|
69 |
Â
'label_block' => false,
|
70 |
Â
'type' => Controls_Manager::TEXT,
|
71 |
+
'default' => 7
|
72 |
Â
]
|
73 |
Â
);
|
74 |
Â
|
75 |
+
$this->add_control(
|
76 |
+
'animate_number',
|
77 |
+
[
|
78 |
+
'label' => __( 'Animate', 'happy-elementor-addons' ),
|
79 |
+
'description' => __( 'Only number is animatable' ),
|
80 |
+
'type' => Controls_Manager::SWITCHER,
|
81 |
+
'label_on' => __( 'Yes', 'happy-elementor-addons' ),
|
82 |
+
'label_off' => __( 'No', 'happy-elementor-addons' ),
|
83 |
+
'return_value' => 'yes',
|
84 |
+
'separator' => 'before',
|
85 |
+
]
|
86 |
+
);
|
Â
|
|
Â
|
|
87 |
Â
|
88 |
Â
$this->add_control(
|
89 |
+
'animate_duration',
|
90 |
Â
[
|
91 |
+
'label' => __( 'Duration', 'happy-elementor-addons' ),
|
92 |
+
'type' => Controls_Manager::NUMBER,
|
93 |
+
'min' => 100,
|
94 |
+
'max' => 10000,
|
95 |
+
'step' => 10,
|
96 |
+
'default' => 500,
|
97 |
+
'condition' => [
|
98 |
+
'animate_number!' => ''
|
99 |
Â
],
|
100 |
Â
]
|
101 |
Â
);
|
102 |
Â
|
103 |
+
$this->end_controls_section();
|
104 |
+
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
105 |
Â
|
106 |
+
/**
|
107 |
+
* Register styles related controls
|
108 |
+
*/
|
109 |
+
protected function register_style_controls() {
|
110 |
Â
$this->start_controls_section(
|
111 |
Â
'number_background_style',
|
112 |
Â
[
|
118 |
Â
$this->add_responsive_control(
|
119 |
Â
'number_width_height',
|
120 |
Â
[
|
121 |
+
'label' => __( 'Size', 'happy-elementor-addons' ),
|
122 |
Â
'type' => Controls_Manager::SLIDER,
|
123 |
Â
'size_units' => [ 'px' ],
|
124 |
Â
'range' => [
|
125 |
Â
'px' => [
|
126 |
Â
'min' => 0,
|
127 |
+
'max' => 500,
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
128 |
Â
],
|
129 |
Â
],
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
130 |
Â
'selectors' => [
|
131 |
+
'{{WRAPPER}} .ha-number-body' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};',
|
132 |
Â
],
|
133 |
Â
]
|
134 |
Â
);
|
140 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
141 |
Â
'size_units' => [ 'px', '%', 'em' ],
|
142 |
Â
'selectors' => [
|
143 |
+
'{{WRAPPER}} .ha-number-body ' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
144 |
Â
],
|
145 |
Â
]
|
146 |
Â
);
|
147 |
Â
|
148 |
+
$this->add_group_control(
|
149 |
+
Group_Control_Border::get_type(),
|
150 |
+
[
|
151 |
+
'name' => 'number_border',
|
152 |
+
'label' => __( 'Border', 'happy-elementor-addons' ),
|
153 |
+
'selector' => '{{WRAPPER}} .ha-number-body',
|
154 |
+
]
|
155 |
+
);
|
156 |
+
|
157 |
Â
$this->add_control(
|
158 |
Â
'number_border_radius',
|
159 |
Â
[
|
160 |
Â
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
161 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
162 |
+
'size_units' => [ 'px', '%' ],
|
163 |
Â
'selectors' => [
|
164 |
+
'{{WRAPPER}} .ha-number-body' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
165 |
Â
],
|
166 |
Â
]
|
167 |
Â
);
|
168 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
169 |
Â
$this->add_group_control(
|
170 |
Â
Group_Control_Box_Shadow::get_type(),
|
171 |
Â
[
|
172 |
Â
'name' => 'number_box_shadow',
|
173 |
Â
'label' => __( 'Box Shadow', 'happy-elementor-addons' ),
|
174 |
+
'selector' => '{{WRAPPER}} .ha-number-body',
|
175 |
Â
]
|
176 |
Â
);
|
177 |
Â
|
196 |
Â
],
|
197 |
Â
'toggle' => true,
|
198 |
Â
'selectors' => [
|
199 |
+
'{{WRAPPER}} .ha-number-body' => '{{VALUE}};'
|
200 |
Â
],
|
201 |
Â
'selectors_dictionary' => [
|
202 |
Â
'left' => 'float: left',
|
206 |
Â
]
|
207 |
Â
);
|
208 |
Â
|
209 |
+
$this->add_control(
|
210 |
+
'_heading_bg',
|
211 |
+
[
|
212 |
+
'label' => __( 'Background', 'happy-elementor-addons' ),
|
213 |
+
'type' => Controls_Manager::HEADING,
|
214 |
+
'separator' => 'before',
|
215 |
+
]
|
216 |
+
);
|
217 |
Â
|
218 |
+
$this->add_group_control(
|
219 |
+
Group_Control_Background::get_type(),
|
220 |
+
[
|
221 |
+
'name' => 'number_background_color',
|
222 |
+
'types' => [ 'classic', 'gradient' ],
|
223 |
+
'selector' => '{{WRAPPER}} .ha-number-body',
|
224 |
+
]
|
225 |
+
);
|
Â
|
|
226 |
Â
|
227 |
+
$this->add_control(
|
228 |
+
'_heading_bg_overlay',
|
229 |
+
[
|
230 |
+
'label' => __( 'Background Overaly', 'happy-elementor-addons' ),
|
231 |
+
'type' => Controls_Manager::HEADING,
|
232 |
+
'separator' => 'before',
|
233 |
+
]
|
234 |
+
);
|
235 |
Â
|
236 |
+
$this->add_group_control(
|
237 |
+
Group_Control_Background::get_type(),
|
238 |
+
[
|
239 |
+
'name' => 'number_background_overlay_color',
|
240 |
+
'label' => __( 'Background', 'happy-elementor-addons' ),
|
241 |
+
'types' => [ 'classic', 'gradient' ],
|
242 |
+
'selector' => '{{WRAPPER}} .ha-number-overlay',
|
243 |
+
]
|
244 |
+
);
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
245 |
Â
|
246 |
+
$this->add_control(
|
247 |
+
'number_background_overlay_blend_mode',
|
248 |
+
[
|
249 |
+
'label' => __( 'Blend Mood', 'happy-elementor-addons' ),
|
250 |
+
'type' => Controls_Manager::SELECT,
|
251 |
+
'default' => 'normal',
|
252 |
+
'options' => ha_get_css_blend_modes(),
|
253 |
+
'selectors' => [
|
254 |
+
'{{WRAPPER}} .ha-number-overlay' => 'mix-blend-mode: {{VALUE}}',
|
255 |
+
],
|
256 |
+
]
|
257 |
+
);
|
258 |
Â
|
259 |
+
$this->add_responsive_control(
|
260 |
+
'number_background_overlay_blend_mode_opacity',
|
261 |
+
[
|
262 |
+
'label' => __( 'Opacity', 'happy-elementor-addons' ),
|
263 |
+
'type' => Controls_Manager::SLIDER,
|
264 |
+
'size_units' => [ 'px' ],
|
265 |
+
'range' => [
|
266 |
+
'px' => [
|
267 |
+
'min' => 0,
|
268 |
+
'max' => 1,
|
269 |
+
'step' => .1,
|
270 |
+
],
|
271 |
+
],
|
272 |
+
'selectors' => [
|
273 |
+
'{{WRAPPER}} .ha-number-overlay' => 'opacity: {{SIZE}};',
|
274 |
+
],
|
275 |
+
]
|
276 |
+
);
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
277 |
Â
|
278 |
Â
$this->end_controls_section();
|
279 |
+
|
280 |
+
$this->start_controls_section(
|
281 |
+
'_section_style_text',
|
282 |
+
[
|
283 |
+
'label' => __( 'Text', 'happy-elementor-addons' ),
|
284 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
285 |
+
]
|
286 |
+
);
|
287 |
+
|
288 |
+
$this->add_control(
|
289 |
+
'number_text_color',
|
290 |
+
[
|
291 |
+
'label' => __( 'Text Color', 'happy-elementor-addons' ),
|
292 |
+
'type' => Controls_Manager::COLOR,
|
293 |
+
'selectors' => [
|
294 |
+
'{{WRAPPER}} .ha-number-body' => 'color: {{VALUE}};',
|
295 |
+
],
|
296 |
+
]
|
297 |
+
);
|
298 |
+
|
299 |
+
$this->add_group_control(
|
300 |
+
Group_Control_Typography::get_type(),
|
301 |
+
[
|
302 |
+
'name' => 'number_text_typography',
|
303 |
+
'label' => __( 'Typography', 'happy-elementor-addons' ),
|
304 |
+
'selector' => '{{WRAPPER}} .ha-number-text',
|
305 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
306 |
+
]
|
307 |
+
);
|
308 |
+
|
309 |
+
$this->add_group_control(
|
310 |
+
Group_Control_Text_Shadow::get_type(),
|
311 |
+
[
|
312 |
+
'name' => 'number_text_shadow',
|
313 |
+
'label' => __( 'Text Shadow', 'happy-elementor-addons' ),
|
314 |
+
'selector' => '{{WRAPPER}} .ha-number-text',
|
315 |
+
]
|
316 |
+
);
|
317 |
+
|
318 |
+
$this->add_control(
|
319 |
+
'number_text_rotate',
|
320 |
+
[
|
321 |
+
'label' => __( 'Text Rotate', 'happy-elementor-addons' ),
|
322 |
+
'type' => Controls_Manager::SLIDER,
|
323 |
+
'size_units' => [ 'px' ],
|
324 |
+
'range' => [
|
325 |
+
'px' => [
|
326 |
+
'min' => 0,
|
327 |
+
'max' => 360,
|
328 |
+
],
|
329 |
+
],
|
330 |
+
'selectors' => [
|
331 |
+
'{{WRAPPER}} .ha-number-text' => '-webkit-transform: rotate({{SIZE}}deg);-ms-transform: rotate({{SIZE}}deg);transform: rotate({{SIZE}}deg);'
|
332 |
+
],
|
333 |
+
]
|
334 |
+
);
|
335 |
+
|
336 |
+
$this->end_controls_section();
|
337 |
Â
}
|
338 |
Â
|
339 |
Â
protected function render() {
|
340 |
Â
$settings = $this->get_settings_for_display();
|
341 |
+
|
342 |
+
$this->add_render_attribute( 'number_text', 'class', 'ha-number-text' );
|
343 |
+
$number = $settings['number_text'];
|
344 |
+
|
345 |
+
if ( $settings['animate_number'] ) {
|
346 |
+
$data = [
|
347 |
+
'toValue' => intval( $settings['number_text'] ),
|
348 |
+
'duration' => intval( $settings['animate_duration'] ),
|
349 |
+
];
|
350 |
+
$this->add_render_attribute( 'number_text', 'data-animation', wp_json_encode( $data ) );
|
351 |
+
$number = 0;
|
352 |
+
}
|
353 |
+
?>
|
354 |
Â
|
355 |
Â
<div class="ha-number-body">
|
356 |
+
<div class="ha-number-overlay"></div>
|
357 |
+
<span <?php $this->print_render_attribute_string( 'number_text' ); ?>><?php echo esc_html( $number ); ?></span>
|
Â
|
|
Â
|
|
358 |
Â
</div>
|
359 |
Â
|
360 |
Â
<?php
|
widgets/pricing-table/widget.php
ADDED
@@ -0,0 +1,967 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Pricing table widget class
|
4 |
+
*
|
5 |
+
* @package Happy_Addons
|
6 |
+
*/
|
7 |
+
namespace Happy_Addons\Elementor\Widget;
|
8 |
+
|
9 |
+
use Elementor\Group_Control_Css_Filter;
|
10 |
+
use Elementor\Group_Control_Text_Shadow;
|
11 |
+
use Elementor\Repeater;
|
12 |
+
use Elementor\Scheme_Typography;
|
13 |
+
use Elementor\Utils;
|
14 |
+
use Elementor\Control_Media;
|
15 |
+
use Elementor\Controls_Manager;
|
16 |
+
use Elementor\Group_Control_Border;
|
17 |
+
use Elementor\Group_Control_Box_Shadow;
|
18 |
+
use Elementor\Group_Control_Image_Size;
|
19 |
+
use Elementor\Group_Control_Typography;
|
20 |
+
|
21 |
+
defined( 'ABSPATH' ) || die();
|
22 |
+
|
23 |
+
class Pricing_Table extends Base {
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Get widget title.
|
27 |
+
*
|
28 |
+
* @since 1.0.0
|
29 |
+
* @access public
|
30 |
+
*
|
31 |
+
* @return string Widget title.
|
32 |
+
*/
|
33 |
+
public function get_title() {
|
34 |
+
return __( 'Pricing Table', 'happy-elementor-addons' );
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Get widget icon.
|
39 |
+
*
|
40 |
+
* @since 1.0.0
|
41 |
+
* @access public
|
42 |
+
*
|
43 |
+
* @return string Widget icon.
|
44 |
+
*/
|
45 |
+
public function get_icon() {
|
46 |
+
return 'hm hm-file-cabinet';
|
47 |
+
}
|
48 |
+
|
49 |
+
public function get_keywords() {
|
50 |
+
return [ 'pricing', 'table', 'package', 'product', 'plan' ];
|
51 |
+
}
|
52 |
+
|
53 |
+
protected function register_content_controls() {
|
54 |
+
$this->start_controls_section(
|
55 |
+
'_section_header',
|
56 |
+
[
|
57 |
+
'label' => __( 'Header', 'happy-elementor-addons' ),
|
58 |
+
'tab' => Controls_Manager::TAB_CONTENT,
|
59 |
+
]
|
60 |
+
);
|
61 |
+
|
62 |
+
$this->add_control(
|
63 |
+
'title',
|
64 |
+
[
|
65 |
+
'label' => __( 'Title', 'happy-elementor-addons' ),
|
66 |
+
'type' => Controls_Manager::TEXT,
|
67 |
+
'label_block' => false,
|
68 |
+
'default' => __( 'Basic', 'happy-elementor-addons' ),
|
69 |
+
]
|
70 |
+
);
|
71 |
+
|
72 |
+
$this->end_controls_section();
|
73 |
+
|
74 |
+
$this->start_controls_section(
|
75 |
+
'_section_pricing',
|
76 |
+
[
|
77 |
+
'label' => __( 'Pricing', 'happy-elementor-addons' ),
|
78 |
+
'tab' => Controls_Manager::TAB_CONTENT,
|
79 |
+
]
|
80 |
+
);
|
81 |
+
|
82 |
+
$this->add_control(
|
83 |
+
'currency',
|
84 |
+
[
|
85 |
+
'label' => __( 'Currency', 'happy-elementor-addons' ),
|
86 |
+
'type' => Controls_Manager::SELECT,
|
87 |
+
'label_block' => false,
|
88 |
+
'options' => [
|
89 |
+
'' => __( 'None', 'happy-elementor-addons' ),
|
90 |
+
'baht' => '฿ ' . _x( 'Baht', 'Currency Symbol', 'happy-elementor-addons' ),
|
91 |
+
'bdt' => '৳ ' . _x( 'BD Taka', 'Currency Symbol', 'happy-elementor-addons' ),
|
92 |
+
'dollar' => '$ ' . _x( 'Dollar', 'Currency Symbol', 'happy-elementor-addons' ),
|
93 |
+
'euro' => '€ ' . _x( 'Euro', 'Currency Symbol', 'happy-elementor-addons' ),
|
94 |
+
'franc' => '₣ ' . _x( 'Franc', 'Currency Symbol', 'happy-elementor-addons' ),
|
95 |
+
'guilder' => 'ƒ ' . _x( 'Guilder', 'Currency Symbol', 'happy-elementor-addons' ),
|
96 |
+
'krona' => 'kr ' . _x( 'Krona', 'Currency Symbol', 'happy-elementor-addons' ),
|
97 |
+
'lira' => '₤ ' . _x( 'Lira', 'Currency Symbol', 'happy-elementor-addons' ),
|
98 |
+
'peseta' => '₧ ' . _x( 'Peseta', 'Currency Symbol', 'happy-elementor-addons' ),
|
99 |
+
'peso' => '₱ ' . _x( 'Peso', 'Currency Symbol', 'happy-elementor-addons' ),
|
100 |
+
'pound' => '£ ' . _x( 'Pound Sterling', 'Currency Symbol', 'happy-elementor-addons' ),
|
101 |
+
'real' => 'R$ ' . _x( 'Real', 'Currency Symbol', 'happy-elementor-addons' ),
|
102 |
+
'ruble' => '₽ ' . _x( 'Ruble', 'Currency Symbol', 'happy-elementor-addons' ),
|
103 |
+
'rupee' => '₨ ' . _x( 'Rupee', 'Currency Symbol', 'happy-elementor-addons' ),
|
104 |
+
'indian_rupee' => '₹ ' . _x( 'Rupee (Indian)', 'Currency Symbol', 'happy-elementor-addons' ),
|
105 |
+
'shekel' => '₪ ' . _x( 'Shekel', 'Currency Symbol', 'happy-elementor-addons' ),
|
106 |
+
'won' => '₩ ' . _x( 'Won', 'Currency Symbol', 'happy-elementor-addons' ),
|
107 |
+
'yen' => '¥ ' . _x( 'Yen/Yuan', 'Currency Symbol', 'happy-elementor-addons' ),
|
108 |
+
'custom' => __( 'Custom', 'happy-elementor-addons' ),
|
109 |
+
],
|
110 |
+
'default' => 'dollar',
|
111 |
+
]
|
112 |
+
);
|
113 |
+
|
114 |
+
$this->add_control(
|
115 |
+
'currency_custom',
|
116 |
+
[
|
117 |
+
'label' => __( 'Custom Symbol', 'happy-elementor-addons' ),
|
118 |
+
'type' => Controls_Manager::TEXT,
|
119 |
+
'condition' => [
|
120 |
+
'currency' => 'custom',
|
121 |
+
],
|
122 |
+
]
|
123 |
+
);
|
124 |
+
|
125 |
+
$this->add_control(
|
126 |
+
'price',
|
127 |
+
[
|
128 |
+
'label' => __( 'Price', 'happy-elementor-addons' ),
|
129 |
+
'type' => Controls_Manager::TEXT,
|
130 |
+
'default' => '9.99',
|
131 |
+
]
|
132 |
+
);
|
133 |
+
|
134 |
+
$this->add_control(
|
135 |
+
'period',
|
136 |
+
[
|
137 |
+
'label' => __( 'Period', 'happy-elementor-addons' ),
|
138 |
+
'type' => Controls_Manager::TEXT,
|
139 |
+
'default' => __( 'Per Month', 'happy-elementor-addons' ),
|
140 |
+
]
|
141 |
+
);
|
142 |
+
|
143 |
+
$this->end_controls_section();
|
144 |
+
|
145 |
+
$this->start_controls_section(
|
146 |
+
'_section_features',
|
147 |
+
[
|
148 |
+
'label' => __( 'Features', 'happy-elementor-addons' ),
|
149 |
+
]
|
150 |
+
);
|
151 |
+
|
152 |
+
$this->add_control(
|
153 |
+
'features_title',
|
154 |
+
[
|
155 |
+
'label' => __( 'Title', 'happy-elementor-addons' ),
|
156 |
+
'type' => Controls_Manager::TEXT,
|
157 |
+
'default' => __( 'Features', 'happy-elementor-addons' ),
|
158 |
+
'separator' => 'after',
|
159 |
+
]
|
160 |
+
);
|
161 |
+
|
162 |
+
$repeater = new Repeater();
|
163 |
+
|
164 |
+
$repeater->add_control(
|
165 |
+
'text',
|
166 |
+
[
|
167 |
+
'label' => __( 'Text', 'elementor-pro' ),
|
168 |
+
'type' => Controls_Manager::TEXT,
|
169 |
+
'default' => __( 'Exciting Feature', 'elementor-pro' ),
|
170 |
+
]
|
171 |
+
);
|
172 |
+
|
173 |
+
$repeater->add_control(
|
174 |
+
'icon',
|
175 |
+
[
|
176 |
+
'label' => __( 'Icon', 'elementor-pro' ),
|
177 |
+
'type' => Controls_Manager::ICON,
|
178 |
+
'default' => 'fa fa-check',
|
179 |
+
'include' => [
|
180 |
+
'fa fa-check',
|
181 |
+
'fa fa-close',
|
182 |
+
]
|
183 |
+
]
|
184 |
+
);
|
185 |
+
|
186 |
+
$this->add_control(
|
187 |
+
'features_list',
|
188 |
+
[
|
189 |
+
'type' => Controls_Manager::REPEATER,
|
190 |
+
'fields' => $repeater->get_controls(),
|
191 |
+
'show_label' => false,
|
192 |
+
'default' => [
|
193 |
+
[
|
194 |
+
'text' => __( 'Standard Feature', 'elementor-pro' ),
|
195 |
+
'icon' => 'fa fa-check',
|
196 |
+
],
|
197 |
+
[
|
198 |
+
'text' => __( 'Another Great Feature', 'elementor-pro' ),
|
199 |
+
'icon' => 'fa fa-check',
|
200 |
+
],
|
201 |
+
[
|
202 |
+
'text' => __( 'Obsolete Feature', 'elementor-pro' ),
|
203 |
+
'icon' => 'fa fa-close',
|
204 |
+
],
|
205 |
+
[
|
206 |
+
'text' => __( 'Exciting Feature', 'elementor-pro' ),
|
207 |
+
'icon' => 'fa fa-check',
|
208 |
+
],
|
209 |
+
],
|
210 |
+
'title_field' => '{{{ text }}}',
|
211 |
+
]
|
212 |
+
);
|
213 |
+
|
214 |
+
$this->end_controls_section();
|
215 |
+
|
216 |
+
$this->start_controls_section(
|
217 |
+
'_section_footer',
|
218 |
+
[
|
219 |
+
'label' => __( 'Footer', 'happy-elementor-addons' ),
|
220 |
+
'tab' => Controls_Manager::TAB_CONTENT,
|
221 |
+
]
|
222 |
+
);
|
223 |
+
|
224 |
+
$this->add_control(
|
225 |
+
'button_text',
|
226 |
+
[
|
227 |
+
'label' => __( 'Button Text', 'happy-elementor-addons' ),
|
228 |
+
'type' => Controls_Manager::TEXT,
|
229 |
+
'default' => __( 'Subscribe', 'happy-elementor-addons' ),
|
230 |
+
'placeholder' => __( 'Type button text here', 'happy-elementor-addons' ),
|
231 |
+
'label_block' => false,
|
232 |
+
]
|
233 |
+
);
|
234 |
+
|
235 |
+
$this->add_control(
|
236 |
+
'button_link',
|
237 |
+
[
|
238 |
+
'label' => __( 'Link', 'happy-elementor-addons' ),
|
239 |
+
'type' => Controls_Manager::URL,
|
240 |
+
'label_block' => true,
|
241 |
+
'placeholder' => __( 'https://example.com/', 'happy-elementor-addons' ),
|
242 |
+
'dynamic' => [
|
243 |
+
'active' => true,
|
244 |
+
],
|
245 |
+
]
|
246 |
+
);
|
247 |
+
|
248 |
+
$this->end_controls_section();
|
249 |
+
|
250 |
+
$this->start_controls_section(
|
251 |
+
'_section_badge',
|
252 |
+
[
|
253 |
+
'label' => __( 'Badge', 'happy-elementor-addons' ),
|
254 |
+
]
|
255 |
+
);
|
256 |
+
|
257 |
+
$this->add_control(
|
258 |
+
'show_badge',
|
259 |
+
[
|
260 |
+
'label' => __( 'Show', 'happy-elementor-addons' ),
|
261 |
+
'type' => Controls_Manager::SWITCHER,
|
262 |
+
'label_on' => __( 'Show', 'happy-elementor-addons' ),
|
263 |
+
'label_off' => __( 'Hide', 'happy-elementor-addons' ),
|
264 |
+
'return_value' => 'yes',
|
265 |
+
'default' => 'yes',
|
266 |
+
]
|
267 |
+
);
|
268 |
+
|
269 |
+
$this->add_control(
|
270 |
+
'badge_position',
|
271 |
+
[
|
272 |
+
'label' => __( 'Position', 'happy-elementor-addons' ),
|
273 |
+
'type' => Controls_Manager::CHOOSE,
|
274 |
+
'label_block' => false,
|
275 |
+
'options' => [
|
276 |
+
'left' => [
|
277 |
+
'title' => __( 'Left', 'happy-elementor-addons' ),
|
278 |
+
'icon' => 'eicon-h-align-left',
|
279 |
+
],
|
280 |
+
'right' => [
|
281 |
+
'title' => __( 'Right', 'happy-elementor-addons' ),
|
282 |
+
'icon' => 'eicon-h-align-right',
|
283 |
+
],
|
284 |
+
],
|
285 |
+
'toggle' => false,
|
286 |
+
'default' => 'left',
|
287 |
+
'condition' => [
|
288 |
+
'show_badge' => 'yes'
|
289 |
+
]
|
290 |
+
]
|
291 |
+
);
|
292 |
+
|
293 |
+
$this->add_control(
|
294 |
+
'badge_text',
|
295 |
+
[
|
296 |
+
'label' => __( 'Badge Text', 'happy-elementor-addons' ),
|
297 |
+
'type' => Controls_Manager::TEXT,
|
298 |
+
'default' => __( 'Recommended', 'happy-elementor-addons' ),
|
299 |
+
'placeholder' => __( 'Type badge text', 'happy-elementor-addons' ),
|
300 |
+
'condition' => [
|
301 |
+
'show_badge' => 'yes'
|
302 |
+
]
|
303 |
+
]
|
304 |
+
);
|
305 |
+
|
306 |
+
$this->end_controls_section();
|
307 |
+
}
|
308 |
+
|
309 |
+
protected function register_style_controls() {
|
310 |
+
$this->start_controls_section(
|
311 |
+
'_section_style_general',
|
312 |
+
[
|
313 |
+
'label' => __( 'General', 'happy-elementor-addons' ),
|
314 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
315 |
+
]
|
316 |
+
);
|
317 |
+
|
318 |
+
$this->add_control(
|
319 |
+
'text_color',
|
320 |
+
[
|
321 |
+
'label' => __( 'Text Color', 'happy-elementor-addons' ),
|
322 |
+
'type' => Controls_Manager::COLOR,
|
323 |
+
'selectors' => [
|
324 |
+
'{{WRAPPER}} .ha-pricing-table-title,'
|
325 |
+
. '{{WRAPPER}} .ha-pricing-table-currency,'
|
326 |
+
. '{{WRAPPER}} .ha-pricing-table-period,'
|
327 |
+
. '{{WRAPPER}} .ha-pricing-table-features-title,'
|
328 |
+
. '{{WRAPPER}} .ha-pricing-table-features-list li,'
|
329 |
+
. '{{WRAPPER}} .ha-pricing-table-price-text' => 'color: {{VALUE}};',
|
330 |
+
],
|
331 |
+
]
|
332 |
+
);
|
333 |
+
|
334 |
+
$this->end_controls_section();
|
335 |
+
|
336 |
+
$this->start_controls_section(
|
337 |
+
'_section_style_header',
|
338 |
+
[
|
339 |
+
'label' => __( 'Header', 'happy-elementor-addons' ),
|
340 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
341 |
+
]
|
342 |
+
);
|
343 |
+
|
344 |
+
$this->add_responsive_control(
|
345 |
+
'title_spacing',
|
346 |
+
[
|
347 |
+
'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
|
348 |
+
'type' => Controls_Manager::SLIDER,
|
349 |
+
'size_units' => ['px'],
|
350 |
+
'selectors' => [
|
351 |
+
'{{WRAPPER}} .ha-pricing-table-title' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
352 |
+
],
|
353 |
+
]
|
354 |
+
);
|
355 |
+
|
356 |
+
$this->add_control(
|
357 |
+
'title_color',
|
358 |
+
[
|
359 |
+
'label' => __( 'Title Color', 'happy-elementor-addons' ),
|
360 |
+
'type' => Controls_Manager::COLOR,
|
361 |
+
'selectors' => [
|
362 |
+
'{{WRAPPER}} .ha-pricing-table-title' => 'color: {{VALUE}};',
|
363 |
+
],
|
364 |
+
]
|
365 |
+
);
|
366 |
+
|
367 |
+
$this->add_group_control(
|
368 |
+
Group_Control_Typography::get_type(),
|
369 |
+
[
|
370 |
+
'name' => 'title_typography',
|
371 |
+
'selector' => '{{WRAPPER}} .ha-pricing-table-title',
|
372 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_2,
|
373 |
+
]
|
374 |
+
);
|
375 |
+
|
376 |
+
$this->add_group_control(
|
377 |
+
Group_Control_Text_Shadow::get_type(),
|
378 |
+
[
|
379 |
+
'name' => 'title_text_shadow',
|
380 |
+
'selector' => '{{WRAPPER}} .ha-pricing-table-title',
|
381 |
+
]
|
382 |
+
);
|
383 |
+
|
384 |
+
$this->end_controls_section();
|
385 |
+
|
386 |
+
$this->start_controls_section(
|
387 |
+
'_section_style_pricing',
|
388 |
+
[
|
389 |
+
'label' => __( 'Pricing', 'happy-elementor-addons' ),
|
390 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
391 |
+
]
|
392 |
+
);
|
393 |
+
|
394 |
+
$this->add_control(
|
395 |
+
'_heading_price',
|
396 |
+
[
|
397 |
+
'type' => Controls_Manager::HEADING,
|
398 |
+
'label' => __( 'Price', 'happy-elementor-addons' ),
|
399 |
+
]
|
400 |
+
);
|
401 |
+
|
402 |
+
$this->add_responsive_control(
|
403 |
+
'price_spacing',
|
404 |
+
[
|
405 |
+
'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
|
406 |
+
'type' => Controls_Manager::SLIDER,
|
407 |
+
'size_units' => ['px'],
|
408 |
+
'selectors' => [
|
409 |
+
'{{WRAPPER}} .ha-pricing-table-price-tag' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
410 |
+
],
|
411 |
+
]
|
412 |
+
);
|
413 |
+
|
414 |
+
$this->add_control(
|
415 |
+
'price_color',
|
416 |
+
[
|
417 |
+
'label' => __( 'Text Color', 'happy-elementor-addons' ),
|
418 |
+
'type' => Controls_Manager::COLOR,
|
419 |
+
'selectors' => [
|
420 |
+
'{{WRAPPER}} .ha-pricing-table-price-text' => 'color: {{VALUE}};',
|
421 |
+
],
|
422 |
+
]
|
423 |
+
);
|
424 |
+
|
425 |
+
$this->add_group_control(
|
426 |
+
Group_Control_Typography::get_type(),
|
427 |
+
[
|
428 |
+
'name' => 'price_typography',
|
429 |
+
'selector' => '{{WRAPPER}} .ha-pricing-table-price-text',
|
430 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
431 |
+
]
|
432 |
+
);
|
433 |
+
|
434 |
+
$this->add_control(
|
435 |
+
'_heading_currency',
|
436 |
+
[
|
437 |
+
'type' => Controls_Manager::HEADING,
|
438 |
+
'label' => __( 'Currency', 'happy-elementor-addons' ),
|
439 |
+
'separator' => 'before',
|
440 |
+
]
|
441 |
+
);
|
442 |
+
|
443 |
+
$this->add_responsive_control(
|
444 |
+
'currency_spacing',
|
445 |
+
[
|
446 |
+
'label' => __( 'Side Spacing', 'happy-elementor-addons' ),
|
447 |
+
'type' => Controls_Manager::SLIDER,
|
448 |
+
'size_units' => ['px'],
|
449 |
+
'selectors' => [
|
450 |
+
'{{WRAPPER}} .ha-pricing-table-currency' => 'margin-right: {{SIZE}}{{UNIT}};',
|
451 |
+
],
|
452 |
+
]
|
453 |
+
);
|
454 |
+
|
455 |
+
$this->add_control(
|
456 |
+
'currency_color',
|
457 |
+
[
|
458 |
+
'label' => __( 'Text Color', 'happy-elementor-addons' ),
|
459 |
+
'type' => Controls_Manager::COLOR,
|
460 |
+
'selectors' => [
|
461 |
+
'{{WRAPPER}} .ha-pricing-table-currency' => 'color: {{VALUE}};',
|
462 |
+
],
|
463 |
+
]
|
464 |
+
);
|
465 |
+
|
466 |
+
$this->add_group_control(
|
467 |
+
Group_Control_Typography::get_type(),
|
468 |
+
[
|
469 |
+
'name' => 'currency_typography',
|
470 |
+
'selector' => '{{WRAPPER}} .ha-pricing-table-currency',
|
471 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
472 |
+
]
|
473 |
+
);
|
474 |
+
|
475 |
+
$this->add_control(
|
476 |
+
'_heading_period',
|
477 |
+
[
|
478 |
+
'type' => Controls_Manager::HEADING,
|
479 |
+
'label' => __( 'Period', 'happy-elementor-addons' ),
|
480 |
+
'separator' => 'before',
|
481 |
+
]
|
482 |
+
);
|
483 |
+
|
484 |
+
$this->add_responsive_control(
|
485 |
+
'period_spacing',
|
486 |
+
[
|
487 |
+
'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
|
488 |
+
'type' => Controls_Manager::SLIDER,
|
489 |
+
'size_units' => ['px'],
|
490 |
+
'selectors' => [
|
491 |
+
'{{WRAPPER}} .ha-pricing-table-price' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
492 |
+
],
|
493 |
+
]
|
494 |
+
);
|
495 |
+
|
496 |
+
$this->add_control(
|
497 |
+
'period_color',
|
498 |
+
[
|
499 |
+
'label' => __( 'Text Color', 'happy-elementor-addons' ),
|
500 |
+
'type' => Controls_Manager::COLOR,
|
501 |
+
'selectors' => [
|
502 |
+
'{{WRAPPER}} .ha-pricing-table-period' => 'color: {{VALUE}};',
|
503 |
+
],
|
504 |
+
]
|
505 |
+
);
|
506 |
+
|
507 |
+
$this->add_group_control(
|
508 |
+
Group_Control_Typography::get_type(),
|
509 |
+
[
|
510 |
+
'name' => 'period_typography',
|
511 |
+
'selector' => '{{WRAPPER}} .ha-pricing-table-period',
|
512 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
513 |
+
]
|
514 |
+
);
|
515 |
+
|
516 |
+
$this->end_controls_section();
|
517 |
+
|
518 |
+
$this->start_controls_section(
|
519 |
+
'_section_style_features',
|
520 |
+
[
|
521 |
+
'label' => __( 'Features', 'happy-elementor-addons' ),
|
522 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
523 |
+
]
|
524 |
+
);
|
525 |
+
|
526 |
+
$this->add_responsive_control(
|
527 |
+
'features_container_spacing',
|
528 |
+
[
|
529 |
+
'label' => __( 'Container Bottom Spacing', 'happy-elementor-addons' ),
|
530 |
+
'type' => Controls_Manager::SLIDER,
|
531 |
+
'size_units' => ['px'],
|
532 |
+
'selectors' => [
|
533 |
+
'{{WRAPPER}} .ha-pricing-table-body' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
534 |
+
],
|
535 |
+
]
|
536 |
+
);
|
537 |
+
|
538 |
+
$this->add_control(
|
539 |
+
'_heading_features_title',
|
540 |
+
[
|
541 |
+
'type' => Controls_Manager::HEADING,
|
542 |
+
'label' => __( 'Title', 'happy-elementor-addons' ),
|
543 |
+
'separator' => 'before',
|
544 |
+
]
|
545 |
+
);
|
546 |
+
|
547 |
+
$this->add_responsive_control(
|
548 |
+
'features_title_spacing',
|
549 |
+
[
|
550 |
+
'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
|
551 |
+
'type' => Controls_Manager::SLIDER,
|
552 |
+
'size_units' => ['px'],
|
553 |
+
'selectors' => [
|
554 |
+
'{{WRAPPER}} .ha-pricing-table-features-title' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
555 |
+
],
|
556 |
+
]
|
557 |
+
);
|
558 |
+
|
559 |
+
$this->add_control(
|
560 |
+
'features_title_color',
|
561 |
+
[
|
562 |
+
'label' => __( 'Text Color', 'happy-elementor-addons' ),
|
563 |
+
'type' => Controls_Manager::COLOR,
|
564 |
+
'selectors' => [
|
565 |
+
'{{WRAPPER}} .ha-pricing-table-features-title' => 'color: {{VALUE}};',
|
566 |
+
],
|
567 |
+
]
|
568 |
+
);
|
569 |
+
|
570 |
+
$this->add_group_control(
|
571 |
+
Group_Control_Typography::get_type(),
|
572 |
+
[
|
573 |
+
'name' => 'features_title_typography',
|
574 |
+
'selector' => '{{WRAPPER}} .ha-pricing-table-features-title',
|
575 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_2,
|
576 |
+
]
|
577 |
+
);
|
578 |
+
|
579 |
+
$this->add_control(
|
580 |
+
'_heading_features_list',
|
581 |
+
[
|
582 |
+
'type' => Controls_Manager::HEADING,
|
583 |
+
'label' => __( 'List', 'happy-elementor-addons' ),
|
584 |
+
'separator' => 'before',
|
585 |
+
]
|
586 |
+
);
|
587 |
+
|
588 |
+
$this->add_responsive_control(
|
589 |
+
'features_list_spacing',
|
590 |
+
[
|
591 |
+
'label' => __( 'Spacing Between', 'happy-elementor-addons' ),
|
592 |
+
'type' => Controls_Manager::SLIDER,
|
593 |
+
'size_units' => ['px'],
|
594 |
+
'selectors' => [
|
595 |
+
'{{WRAPPER}} .ha-pricing-table-features-list > li' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
596 |
+
],
|
597 |
+
]
|
598 |
+
);
|
599 |
+
|
600 |
+
$this->add_control(
|
601 |
+
'features_list_color',
|
602 |
+
[
|
603 |
+
'label' => __( 'Text Color', 'happy-elementor-addons' ),
|
604 |
+
'type' => Controls_Manager::COLOR,
|
605 |
+
'selectors' => [
|
606 |
+
'{{WRAPPER}} .ha-pricing-table-features-list > li' => 'color: {{VALUE}};',
|
607 |
+
],
|
608 |
+
]
|
609 |
+
);
|
610 |
+
|
611 |
+
$this->add_group_control(
|
612 |
+
Group_Control_Typography::get_type(),
|
613 |
+
[
|
614 |
+
'name' => 'features_list_typography',
|
615 |
+
'selector' => '{{WRAPPER}} .ha-pricing-table-features-list > li',
|
616 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
617 |
+
]
|
618 |
+
);
|
619 |
+
|
620 |
+
$this->end_controls_section();
|
621 |
+
|
622 |
+
$this->start_controls_section(
|
623 |
+
'_section_style_footer',
|
624 |
+
[
|
625 |
+
'label' => __( 'Footer', 'happy-elementor-addons' ),
|
626 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
627 |
+
]
|
628 |
+
);
|
629 |
+
|
630 |
+
$this->add_control(
|
631 |
+
'_heading_button',
|
632 |
+
[
|
633 |
+
'type' => Controls_Manager::HEADING,
|
634 |
+
'label' => __( 'Button', 'happy-elementor-addons' ),
|
635 |
+
]
|
636 |
+
);
|
637 |
+
|
638 |
+
$this->add_responsive_control(
|
639 |
+
'button_padding',
|
640 |
+
[
|
641 |
+
'label' => __( 'Padding', 'happy-elementor-addons' ),
|
642 |
+
'type' => Controls_Manager::DIMENSIONS,
|
643 |
+
'size_units' => [ 'px', 'em', '%' ],
|
644 |
+
'selectors' => [
|
645 |
+
'{{WRAPPER}} .ha-pricing-table-btn' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
646 |
+
],
|
647 |
+
]
|
648 |
+
);
|
649 |
+
|
650 |
+
$this->add_group_control(
|
651 |
+
Group_Control_Border::get_type(),
|
652 |
+
[
|
653 |
+
'name' => 'button_border',
|
654 |
+
'selector' => '{{WRAPPER}} .ha-pricing-table-btn',
|
655 |
+
]
|
656 |
+
);
|
657 |
+
|
658 |
+
$this->add_control(
|
659 |
+
'button_border_radius',
|
660 |
+
[
|
661 |
+
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
662 |
+
'type' => Controls_Manager::DIMENSIONS,
|
663 |
+
'size_units' => [ 'px', '%' ],
|
664 |
+
'selectors' => [
|
665 |
+
'{{WRAPPER}} .ha-pricing-table-btn' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
666 |
+
],
|
667 |
+
]
|
668 |
+
);
|
669 |
+
|
670 |
+
$this->add_group_control(
|
671 |
+
Group_Control_Box_Shadow::get_type(),
|
672 |
+
[
|
673 |
+
'name' => 'button_box_shadow',
|
674 |
+
'selector' => '{{WRAPPER}} .ha-pricing-table-btn',
|
675 |
+
]
|
676 |
+
);
|
677 |
+
|
678 |
+
$this->add_group_control(
|
679 |
+
Group_Control_Typography::get_type(),
|
680 |
+
[
|
681 |
+
'name' => 'button_typography',
|
682 |
+
'selector' => '{{WRAPPER}} .ha-pricing-table-btn',
|
683 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_4,
|
684 |
+
]
|
685 |
+
);
|
686 |
+
|
687 |
+
$this->add_control(
|
688 |
+
'hr',
|
689 |
+
[
|
690 |
+
'type' => Controls_Manager::DIVIDER,
|
691 |
+
'style' => 'thick',
|
692 |
+
]
|
693 |
+
);
|
694 |
+
|
695 |
+
$this->start_controls_tabs( '_tabs_button' );
|
696 |
+
|
697 |
+
$this->start_controls_tab(
|
698 |
+
'_tab_button_normal',
|
699 |
+
[
|
700 |
+
'label' => __( 'Normal', 'happy-elementor-addons' ),
|
701 |
+
]
|
702 |
+
);
|
703 |
+
|
704 |
+
$this->add_control(
|
705 |
+
'button_color',
|
706 |
+
[
|
707 |
+
'label' => __( 'Text Color', 'happy-elementor-addons' ),
|
708 |
+
'type' => Controls_Manager::COLOR,
|
709 |
+
'selectors' => [
|
710 |
+
'{{WRAPPER}} .ha-pricing-table-btn' => 'color: {{VALUE}};',
|
711 |
+
],
|
712 |
+
]
|
713 |
+
);
|
714 |
+
|
715 |
+
$this->add_control(
|
716 |
+
'button_bg_color',
|
717 |
+
[
|
718 |
+
'label' => __( 'Background Color', 'happy-elementor-addons' ),
|
719 |
+
'type' => Controls_Manager::COLOR,
|
720 |
+
'selectors' => [
|
721 |
+
'{{WRAPPER}} .ha-pricing-table-btn' => 'background-color: {{VALUE}};',
|
722 |
+
],
|
723 |
+
]
|
724 |
+
);
|
725 |
+
|
726 |
+
$this->end_controls_tab();
|
727 |
+
|
728 |
+
$this->start_controls_tab(
|
729 |
+
'_tab_button_hover',
|
730 |
+
[
|
731 |
+
'label' => __( 'Hover', 'happy-elementor-addons' ),
|
732 |
+
]
|
733 |
+
);
|
734 |
+
|
735 |
+
$this->add_control(
|
736 |
+
'button_hover_color',
|
737 |
+
[
|
738 |
+
'label' => __( 'Text Color', 'happy-elementor-addons' ),
|
739 |
+
'type' => Controls_Manager::COLOR,
|
740 |
+
'selectors' => [
|
741 |
+
'{{WRAPPER}} .ha-pricing-table-btn:hover, {{WRAPPER}} .ha-pricing-table-btn:focus' => 'color: {{VALUE}};',
|
742 |
+
],
|
743 |
+
]
|
744 |
+
);
|
745 |
+
|
746 |
+
$this->add_control(
|
747 |
+
'button_hover_bg_color',
|
748 |
+
[
|
749 |
+
'label' => __( 'Background Color', 'happy-elementor-addons' ),
|
750 |
+
'type' => Controls_Manager::COLOR,
|
751 |
+
'selectors' => [
|
752 |
+
'{{WRAPPER}} .ha-pricing-table-btn:hover, {{WRAPPER}} .ha-pricing-table-btn:focus' => 'background-color: {{VALUE}};',
|
753 |
+
],
|
754 |
+
]
|
755 |
+
);
|
756 |
+
|
757 |
+
$this->add_control(
|
758 |
+
'button_hover_border_color',
|
759 |
+
[
|
760 |
+
'label' => __( 'Border Color', 'happy-elementor-addons' ),
|
761 |
+
'type' => Controls_Manager::COLOR,
|
762 |
+
'condition' => [
|
763 |
+
'button_border_border!' => '',
|
764 |
+
],
|
765 |
+
'selectors' => [
|
766 |
+
'{{WRAPPER}} .ha-pricing-table-btn:hover, {{WRAPPER}} .ha-pricing-table-btn:focus' => 'border-color: {{VALUE}};',
|
767 |
+
],
|
768 |
+
]
|
769 |
+
);
|
770 |
+
|
771 |
+
$this->end_controls_tab();
|
772 |
+
$this->end_controls_tabs();
|
773 |
+
$this->end_controls_section();
|
774 |
+
|
775 |
+
$this->start_controls_section(
|
776 |
+
'_section_style_badge',
|
777 |
+
[
|
778 |
+
'label' => __( 'Badge', 'happy-elementor-addons' ),
|
779 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
780 |
+
]
|
781 |
+
);
|
782 |
+
|
783 |
+
$this->add_responsive_control(
|
784 |
+
'badge_padding',
|
785 |
+
[
|
786 |
+
'label' => __( 'Padding', 'happy-elementor-addons' ),
|
787 |
+
'type' => Controls_Manager::DIMENSIONS,
|
788 |
+
'size_units' => [ 'px', 'em', '%' ],
|
789 |
+
'selectors' => [
|
790 |
+
'{{WRAPPER}} .ha-pricing-table-badge' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
791 |
+
],
|
792 |
+
]
|
793 |
+
);
|
794 |
+
|
795 |
+
$this->add_control(
|
796 |
+
'badge_color',
|
797 |
+
[
|
798 |
+
'label' => __( 'Text Color', 'happy-elementor-addons' ),
|
799 |
+
'type' => Controls_Manager::COLOR,
|
800 |
+
'selectors' => [
|
801 |
+
'{{WRAPPER}} .ha-pricing-table-badge' => 'color: {{VALUE}};',
|
802 |
+
],
|
803 |
+
]
|
804 |
+
);
|
805 |
+
|
806 |
+
$this->add_control(
|
807 |
+
'badge_bg_color',
|
808 |
+
[
|
809 |
+
'label' => __( 'Background Color', 'happy-elementor-addons' ),
|
810 |
+
'type' => Controls_Manager::COLOR,
|
811 |
+
'selectors' => [
|
812 |
+
'{{WRAPPER}} .ha-pricing-table-badge' => 'background-color: {{VALUE}};',
|
813 |
+
],
|
814 |
+
]
|
815 |
+
);
|
816 |
+
|
817 |
+
$this->add_group_control(
|
818 |
+
Group_Control_Border::get_type(),
|
819 |
+
[
|
820 |
+
'name' => 'badge_border',
|
821 |
+
'selector' => '{{WRAPPER}} .ha-pricing-table-badge',
|
822 |
+
]
|
823 |
+
);
|
824 |
+
|
825 |
+
$this->add_responsive_control(
|
826 |
+
'badge_border_radius',
|
827 |
+
[
|
828 |
+
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
829 |
+
'type' => Controls_Manager::DIMENSIONS,
|
830 |
+
'size_units' => [ 'px', '%' ],
|
831 |
+
'selectors' => [
|
832 |
+
'{{WRAPPER}} .ha-pricing-table-badge' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
833 |
+
],
|
834 |
+
]
|
835 |
+
);
|
836 |
+
|
837 |
+
$this->add_group_control(
|
838 |
+
Group_Control_Box_Shadow::get_type(),
|
839 |
+
[
|
840 |
+
'name' => 'badge_box_shadow',
|
841 |
+
'selector' => '{{WRAPPER}} .ha-pricing-table-badge',
|
842 |
+
]
|
843 |
+
);
|
844 |
+
|
845 |
+
$this->add_group_control(
|
846 |
+
Group_Control_Typography::get_type(),
|
847 |
+
[
|
848 |
+
'name' => 'badge_typography',
|
849 |
+
'label' => __( 'Typography', 'happy-elementor-addons' ),
|
850 |
+
'selector' => '{{WRAPPER}} .ha-pricing-table-badge',
|
851 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
852 |
+
]
|
853 |
+
);
|
854 |
+
|
855 |
+
$this->end_controls_section();
|
856 |
+
}
|
857 |
+
|
858 |
+
private static function get_currency_symbol( $symbol_name ) {
|
859 |
+
$symbols = [
|
860 |
+
'baht' => '฿',
|
861 |
+
'bdt' => '৳',
|
862 |
+
'dollar' => '$',
|
863 |
+
'euro' => '€',
|
864 |
+
'franc' => '₣',
|
865 |
+
'guilder' => 'ƒ',
|
866 |
+
'indian_rupee' => '₹',
|
867 |
+
'pound' => '£',
|
868 |
+
'peso' => '₱',
|
869 |
+
'peseta' => '₧',
|
870 |
+
'lira' => '₤',
|
871 |
+
'ruble' => '₽',
|
872 |
+
'shekel' => '₪',
|
873 |
+
'rupee' => '₨',
|
874 |
+
'real' => 'R$',
|
875 |
+
'krona' => 'kr',
|
876 |
+
'won' => '₩',
|
877 |
+
'yen' => '¥',
|
878 |
+
];
|
879 |
+
|
880 |
+
return isset( $symbols[ $symbol_name ] ) ? $symbols[ $symbol_name ] : '';
|
881 |
+
}
|
882 |
+
|
883 |
+
protected function render() {
|
884 |
+
$settings = $this->get_settings_for_display();
|
885 |
+
|
886 |
+
$this->add_render_attribute( 'badge_text', 'class',
|
887 |
+
[
|
888 |
+
'ha-pricing-table-badge',
|
889 |
+
'ha-pricing-table-badge--' . $settings['badge_position']
|
890 |
+
]
|
891 |
+
);
|
892 |
+
|
893 |
+
$this->add_inline_editing_attributes( 'title', 'basic' );
|
894 |
+
$this->add_render_attribute( 'title', 'class', 'ha-pricing-table-title' );
|
895 |
+
|
896 |
+
$this->add_inline_editing_attributes( 'price', 'none' );
|
897 |
+
$this->add_render_attribute( 'price', 'class', 'ha-pricing-table-price-text' );
|
898 |
+
|
899 |
+
$this->add_inline_editing_attributes( 'period', 'none' );
|
900 |
+
$this->add_render_attribute( 'period', 'class', 'ha-pricing-table-period' );
|
901 |
+
|
902 |
+
$this->add_inline_editing_attributes( 'features_title', 'basic' );
|
903 |
+
$this->add_render_attribute( 'features_title', 'class', 'ha-pricing-table-features-title' );
|
904 |
+
|
905 |
+
$this->add_inline_editing_attributes( 'button_text', 'none' );
|
906 |
+
$this->add_render_attribute( 'button_text', 'class', 'ha-pricing-table-btn' );
|
907 |
+
|
908 |
+
$this->add_render_attribute( 'button_text', 'href', esc_url( $settings['button_link']['url'] ) );
|
909 |
+
if ( ! empty( $settings['button_link']['is_external'] ) ) {
|
910 |
+
$this->add_render_attribute( 'button_text', 'target', '_blank' );
|
911 |
+
}
|
912 |
+
if ( ! empty( $settings['button_link']['nofollow'] ) ) {
|
913 |
+
$this->add_render_attribute( 'button_text', 'rel', 'nofollow' );
|
914 |
+
}
|
915 |
+
|
916 |
+
if ( $settings['currency'] === 'custom' ) {
|
917 |
+
$currency = $settings['currency_custom'];
|
918 |
+
} else {
|
919 |
+
$currency = self::get_currency_symbol( $settings['currency'] );
|
920 |
+
}
|
921 |
+
?>
|
922 |
+
|
923 |
+
<?php if ( $settings['show_badge'] ) : ?>
|
924 |
+
<span <?php $this->print_render_attribute_string( 'badge_text' ); ?>><?php echo $settings['badge_text']; ?></span>
|
925 |
+
<?php endif; ?>
|
926 |
+
|
927 |
+
<div class="ha-pricing-table-header">
|
928 |
+
<?php if ( $settings['title'] ) : ?>
|
929 |
+
<h2 <?php $this->print_render_attribute_string( 'title' ); ?>><?php echo $settings['title']; ?></h2>
|
930 |
+
<?php endif; ?>
|
931 |
+
</div>
|
932 |
+
<div class="ha-pricing-table-price">
|
933 |
+
<div class="ha-pricing-table-price-tag"><span class="ha-pricing-table-currency"><?php echo $currency; ?></span><span <?php $this->print_render_attribute_string( 'price' ); ?>><?php echo $settings['price']; ?></span></div>
|
934 |
+
<?php if ( $settings['period'] ) : ?>
|
935 |
+
<div <?php $this->print_render_attribute_string( 'period' ); ?>><?php echo $settings['period']; ?></div>
|
936 |
+
<?php endif; ?>
|
937 |
+
</div>
|
938 |
+
<div class="ha-pricing-table-body">
|
939 |
+
<?php if ( $settings['features_title'] ) : ?>
|
940 |
+
<h3 <?php $this->print_render_attribute_string( 'features_title' ); ?>><?php echo $settings['features_title']; ?></h3>
|
941 |
+
<?php endif; ?>
|
942 |
+
|
943 |
+
<?php if ( is_array( $settings['features_list'] ) ) : ?>
|
944 |
+
<ul class="ha-pricing-table-features-list">
|
945 |
+
<?php foreach ( $settings['features_list'] as $index => $feature ) :
|
946 |
+
$name_key = $this->get_repeater_setting_key( 'text', 'features_list', $index );
|
947 |
+
$this->add_inline_editing_attributes( $name_key, 'basic' );
|
948 |
+
$this->add_render_attribute( $name_key, 'class', 'ha-pricing-table-feature-text' );
|
949 |
+
?>
|
950 |
+
<li class="<?php echo esc_attr( 'elementor-repeater-item-' . $feature['_id'] ); ?>">
|
951 |
+
<?php if ( $feature['icon'] ) : ?>
|
952 |
+
<i class="<?php echo esc_attr( $feature['icon'] ); ?>"></i>
|
953 |
+
<?php endif; ?>
|
954 |
+
<span <?php $this->print_render_attribute_string( $name_key ); ?>><?php echo $feature['text']; ?></span>
|
955 |
+
</li>
|
956 |
+
<?php endforeach; ?>
|
957 |
+
</ul>
|
958 |
+
<?php endif; ?>
|
959 |
+
</div>
|
960 |
+
|
961 |
+
<?php if ( $settings['button_text'] ) : ?>
|
962 |
+
<a <?php $this->print_render_attribute_string( 'button_text' ); ?>><?php echo $settings['button_text']; ?></a>
|
963 |
+
<?php endif; ?>
|
964 |
+
|
965 |
+
<?php
|
966 |
+
}
|
967 |
+
}
|
widgets/skills/widget.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
-
*
|
4 |
Â
*
|
5 |
Â
* @package Happy_Addons
|
6 |
Â
*/
|
@@ -42,7 +42,7 @@ class Skills extends Base {
|
|
42 |
Â
}
|
43 |
Â
|
44 |
Â
public function get_keywords() {
|
45 |
-
return [ 'progress', 'skill', 'bar' ];
|
46 |
Â
}
|
47 |
Â
|
48 |
Â
protected function register_content_controls() {
|
@@ -139,7 +139,28 @@ class Skills extends Base {
|
|
139 |
Â
'show_label' => false,
|
140 |
Â
'type' => Controls_Manager::REPEATER,
|
141 |
Â
'fields' => $repeater->get_controls(),
|
142 |
-
'title_field' => '<# print((name || level.size) ? (name || "Skill") + " - " + level.size + level.unit : "Skill - 0%") #>'
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
143 |
Â
]
|
144 |
Â
);
|
145 |
Â
|
@@ -191,7 +212,7 @@ class Skills extends Base {
|
|
191 |
Â
$this->add_control(
|
192 |
Â
'spacing',
|
193 |
Â
[
|
194 |
-
'label' => __( '
|
195 |
Â
'type' => Controls_Manager::SLIDER,
|
196 |
Â
'size_units' => [ 'px' ],
|
197 |
Â
'range' => [
|
@@ -303,8 +324,8 @@ class Skills extends Base {
|
|
303 |
Â
$this->add_inline_editing_attributes( $name_key, 'none' );
|
304 |
Â
?>
|
305 |
Â
<div class="ha-skill ha-skill--<?php echo esc_attr( $settings['view'] ); ?> elementor-repeater-item-<?php echo $skill['_id']; ?>">
|
306 |
-
<div class="ha-skill-level"
|
307 |
-
<div class="ha-skill-info"><span <?php echo $this->get_render_attribute_string( $name_key ); ?>><?php echo esc_html( $skill['name'] ); ?></span><span class="ha-skill-level-text"
|
308 |
Â
</div>
|
309 |
Â
</div>
|
310 |
Â
<?php
|
@@ -320,8 +341,8 @@ class Skills extends Base {
|
|
320 |
Â
view.addInlineEditingAttributes( nameKey, 'none' );
|
321 |
Â
#>
|
322 |
Â
<div class="ha-skill ha-skill--{{settings.view}} elementor-repeater-item-{{skill._id}}">
|
323 |
-
<div class="ha-skill-level"
|
324 |
-
<div class="ha-skill-info"><span {{{view.getRenderAttributeString( nameKey )}}}>{{skill.name}}</span><span class="ha-skill-level-text"
|
325 |
Â
</div>
|
326 |
Â
</div>
|
327 |
Â
<# });
|
1 |
Â
<?php
|
2 |
Â
/**
|
3 |
+
* Skills widget class
|
4 |
Â
*
|
5 |
Â
* @package Happy_Addons
|
6 |
Â
*/
|
42 |
Â
}
|
43 |
Â
|
44 |
Â
public function get_keywords() {
|
45 |
+
return [ 'progress', 'skill', 'bar', 'chart' ];
|
46 |
Â
}
|
47 |
Â
|
48 |
Â
protected function register_content_controls() {
|
139 |
Â
'show_label' => false,
|
140 |
Â
'type' => Controls_Manager::REPEATER,
|
141 |
Â
'fields' => $repeater->get_controls(),
|
142 |
+
'title_field' => '<# print((name || level.size) ? (name || "Skill") + " - " + level.size + level.unit : "Skill - 0%") #>',
|
143 |
+
'default' => [
|
144 |
+
[
|
145 |
+
'name' => 'Design',
|
146 |
+
'level' => ['size' => 97, 'unit' => 'px']
|
147 |
+
],
|
148 |
+
[
|
149 |
+
'name' => 'UX',
|
150 |
+
'level' => ['size' => 88, 'unit' => 'px']
|
151 |
+
],
|
152 |
+
[
|
153 |
+
'name' => 'Coding',
|
154 |
+
'level' => ['size' => 92, 'unit' => 'px']
|
155 |
+
],
|
156 |
+
[
|
157 |
+
'name' => 'Speed',
|
158 |
+
],
|
159 |
+
[
|
160 |
+
'name' => 'Passion',
|
161 |
+
'level' => ['size' => 100, 'unit' => 'px']
|
162 |
+
]
|
163 |
+
]
|
164 |
Â
]
|
165 |
Â
);
|
166 |
Â
|
212 |
Â
$this->add_control(
|
213 |
Â
'spacing',
|
214 |
Â
[
|
215 |
+
'label' => __( 'Spacing Between', 'happy-elementor-addons' ),
|
216 |
Â
'type' => Controls_Manager::SLIDER,
|
217 |
Â
'size_units' => [ 'px' ],
|
218 |
Â
'range' => [
|
324 |
Â
$this->add_inline_editing_attributes( $name_key, 'none' );
|
325 |
Â
?>
|
326 |
Â
<div class="ha-skill ha-skill--<?php echo esc_attr( $settings['view'] ); ?> elementor-repeater-item-<?php echo $skill['_id']; ?>">
|
327 |
+
<div class="ha-skill-level" data-level="<?php echo esc_attr( $skill['level']['size'] ); ?>">
|
328 |
+
<div class="ha-skill-info"><span <?php echo $this->get_render_attribute_string( $name_key ); ?>><?php echo esc_html( $skill['name'] ); ?></span><span class="ha-skill-level-text"></span></div>
|
329 |
Â
</div>
|
330 |
Â
</div>
|
331 |
Â
<?php
|
341 |
Â
view.addInlineEditingAttributes( nameKey, 'none' );
|
342 |
Â
#>
|
343 |
Â
<div class="ha-skill ha-skill--{{settings.view}} elementor-repeater-item-{{skill._id}}">
|
344 |
+
<div class="ha-skill-level" data-level="{{skill.level.size}}">
|
345 |
+
<div class="ha-skill-info"><span {{{view.getRenderAttributeString( nameKey )}}}>{{skill.name}}</span><span class="ha-skill-level-text"></span></div>
|
346 |
Â
</div>
|
347 |
Â
</div>
|
348 |
Â
<# });
|
widgets/step-flow/widget.php
ADDED
@@ -0,0 +1,598 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Step Flow 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\Group_Control_Text_Shadow;
|
14 |
+
use Elementor\Scheme_Typography;
|
15 |
+
|
16 |
+
defined( 'ABSPATH' ) || die();
|
17 |
+
|
18 |
+
class Step_Flow extends Base {
|
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 __( 'Step Flow', '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-step-flow';
|
41 |
+
}
|
42 |
+
|
43 |
+
public function get_keywords() {
|
44 |
+
return [ 'step', 'flow' ];
|
45 |
+
}
|
46 |
+
|
47 |
+
protected function register_content_controls() {
|
48 |
+
$this->start_controls_section(
|
49 |
+
'_section_step',
|
50 |
+
[
|
51 |
+
'label' => __( 'Step Flow', 'happy-elementor-addons' ),
|
52 |
+
'tab' => Controls_Manager::TAB_CONTENT,
|
53 |
+
]
|
54 |
+
);
|
55 |
+
|
56 |
+
$this->add_control(
|
57 |
+
'icon',
|
58 |
+
[
|
59 |
+
'label' => __( 'Icon', 'happy-elementor-addons' ),
|
60 |
+
'type' => Controls_Manager::ICON,
|
61 |
+
'default' => 'fa fa-home',
|
62 |
+
'options' => ha_get_happy_icons(),
|
63 |
+
]
|
64 |
+
);
|
65 |
+
|
66 |
+
$this->add_control(
|
67 |
+
'badge',
|
68 |
+
[
|
69 |
+
'label' => __( 'Badge', 'happy-elementor-addons' ),
|
70 |
+
'type' => Controls_Manager::TEXT,
|
71 |
+
'placeholder' => __( 'Badge', 'happy-elementor-addons' ),
|
72 |
+
'description' => __( 'Keep it blank, if you want to remove the Badge', 'happy-elementor-addons' ),
|
73 |
+
'default' => __( '01', 'happy-elementor-addons' ),
|
74 |
+
]
|
75 |
+
);
|
76 |
+
|
77 |
+
$this->add_control(
|
78 |
+
'title',
|
79 |
+
[
|
80 |
+
'label' => __( 'Title', 'happy-elementor-addons' ),
|
81 |
+
'type' => Controls_Manager::TEXT,
|
82 |
+
'label_block' => true,
|
83 |
+
'placeholder' => __( 'Title', 'happy-elementor-addons' ),
|
84 |
+
'default' => __( 'Start Marketing', 'happy-elementor-addons' ),
|
85 |
+
'separator' => 'before',
|
86 |
+
]
|
87 |
+
);
|
88 |
+
|
89 |
+
$this->add_control(
|
90 |
+
'description',
|
91 |
+
[
|
92 |
+
'label' => __( 'Description', 'happy-elementor-addons' ),
|
93 |
+
'type' => Controls_Manager::TEXTAREA,
|
94 |
+
'placeholder' => __( 'Description', 'happy-elementor-addons' ),
|
95 |
+
'default' => __( 'consectetur adipiscing elit, sed do<br>eiusmod Lorem ipsum dolor sit amet,<br> consectetur.', 'happy-elementor-addons' ),
|
96 |
+
]
|
97 |
+
);
|
98 |
+
|
99 |
+
$this->add_control(
|
100 |
+
'link',
|
101 |
+
[
|
102 |
+
'label' => __( 'Link', 'happy-elementor-addons' ),
|
103 |
+
'type' => Controls_Manager::URL,
|
104 |
+
'placeholder' => __( 'https://example.com', 'happy-elementor-addons' ),
|
105 |
+
]
|
106 |
+
);
|
107 |
+
|
108 |
+
$this->add_control(
|
109 |
+
'content_alignment',
|
110 |
+
[
|
111 |
+
'label' => __( 'Alignment', 'happy-elementor-addons' ),
|
112 |
+
'type' => Controls_Manager::CHOOSE,
|
113 |
+
'separator' => 'before',
|
114 |
+
'options' => [
|
115 |
+
'left' => [
|
116 |
+
'title' => __( 'Left', 'happy-elementor-addons' ),
|
117 |
+
'icon' => 'fa fa-align-left',
|
118 |
+
],
|
119 |
+
'center' => [
|
120 |
+
'title' => __( 'Center', 'happy-elementor-addons' ),
|
121 |
+
'icon' => 'fa fa-align-center',
|
122 |
+
],
|
123 |
+
'right' => [
|
124 |
+
'title' => __( 'Right', 'happy-elementor-addons' ),
|
125 |
+
'icon' => 'fa fa-align-right',
|
126 |
+
],
|
127 |
+
'justify' => [
|
128 |
+
'title' => __( 'Justify', 'happy-elementor-addons' ),
|
129 |
+
'icon' => 'fa fa-align-justify',
|
130 |
+
],
|
131 |
+
],
|
132 |
+
'toggle' => true,
|
133 |
+
'selectors' => [
|
134 |
+
'{{WRAPPER}} .elementor-widget-container' => 'text-align: {{VALUE}}'
|
135 |
+
]
|
136 |
+
]
|
137 |
+
);
|
138 |
+
|
139 |
+
$this->add_control(
|
140 |
+
'show_indicator',
|
141 |
+
[
|
142 |
+
'label' => __( 'Show Direction', 'happy-elementor-addons' ),
|
143 |
+
'type' => Controls_Manager::SWITCHER,
|
144 |
+
'label_on' => __( 'Yes', 'happy-elementor-addons' ),
|
145 |
+
'label_off' => __( 'No', 'happy-elementor-addons' ),
|
146 |
+
'return_value' => 'yes',
|
147 |
+
'default' => 'yes',
|
148 |
+
]
|
149 |
+
);
|
150 |
+
|
151 |
+
$this->end_controls_section();
|
152 |
+
}
|
153 |
+
|
154 |
+
protected function register_style_controls() {
|
155 |
+
$this->start_controls_section(
|
156 |
+
'_section_icon_style',
|
157 |
+
[
|
158 |
+
'label' => __( 'Icon', 'happy-elementor-addons' ),
|
159 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
160 |
+
]
|
161 |
+
);
|
162 |
+
|
163 |
+
$this->add_responsive_control(
|
164 |
+
'icon_size',
|
165 |
+
[
|
166 |
+
'label' => __( 'Size', 'happy-elementor-addons' ),
|
167 |
+
'type' => Controls_Manager::SLIDER,
|
168 |
+
'size_units' => [ 'px', 'em' ],
|
169 |
+
'range' => [
|
170 |
+
'px' => [
|
171 |
+
'min' => 0,
|
172 |
+
'max' => 100,
|
173 |
+
]
|
174 |
+
],
|
175 |
+
'selectors' => [
|
176 |
+
'{{WRAPPER}} .ha-steps-icon' => 'font-size: {{SIZE}}{{UNIT}};',
|
177 |
+
],
|
178 |
+
]
|
179 |
+
);
|
180 |
+
|
181 |
+
$this->add_responsive_control(
|
182 |
+
'icon_padding',
|
183 |
+
[
|
184 |
+
'label' => __( 'Padding', 'happy-elementor-addons' ),
|
185 |
+
'type' => Controls_Manager::SLIDER,
|
186 |
+
'size_units' => [ 'px', '%' ],
|
187 |
+
'range' => [
|
188 |
+
'px' => [
|
189 |
+
'min' => 0,
|
190 |
+
'max' => 200,
|
191 |
+
]
|
192 |
+
],
|
193 |
+
'selectors' => [
|
194 |
+
'{{WRAPPER}} .ha-steps-icon' => 'padding: {{SIZE}}{{UNIT}};',
|
195 |
+
],
|
196 |
+
]
|
197 |
+
);
|
198 |
+
|
199 |
+
$this->add_responsive_control(
|
200 |
+
'icon_spacing',
|
201 |
+
[
|
202 |
+
'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
|
203 |
+
'type' => Controls_Manager::SLIDER,
|
204 |
+
'size_units' => [ 'px', '%' ],
|
205 |
+
'range' => [
|
206 |
+
'px' => [
|
207 |
+
'min' => 0,
|
208 |
+
'max' => 100,
|
209 |
+
]
|
210 |
+
],
|
211 |
+
'selectors' => [
|
212 |
+
'{{WRAPPER}} .ha-steps-icon' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
213 |
+
],
|
214 |
+
]
|
215 |
+
);
|
216 |
+
|
217 |
+
$this->add_group_control(
|
218 |
+
Group_Control_Border::get_type(),
|
219 |
+
[
|
220 |
+
'name' => 'icon_border',
|
221 |
+
'label' => __( 'Border', 'happy-elementor-addons' ),
|
222 |
+
'selector' => '{{WRAPPER}} .ha-steps-icon',
|
223 |
+
]
|
224 |
+
);
|
225 |
+
|
226 |
+
$this->add_responsive_control(
|
227 |
+
'icon_border_radius',
|
228 |
+
[
|
229 |
+
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
230 |
+
'type' => Controls_Manager::DIMENSIONS,
|
231 |
+
'size_units' => [ 'px', '%' ],
|
232 |
+
'selectors' => [
|
233 |
+
'{{WRAPPER}} .ha-steps-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
234 |
+
],
|
235 |
+
]
|
236 |
+
);
|
237 |
+
|
238 |
+
$this->add_group_control(
|
239 |
+
Group_Control_Box_Shadow::get_type(),
|
240 |
+
[
|
241 |
+
'name' => 'icon_box_shadow',
|
242 |
+
'selector' => '{{WRAPPER}} .ha-steps-icon',
|
243 |
+
]
|
244 |
+
);
|
245 |
+
|
246 |
+
$this->add_control(
|
247 |
+
'icon_color',
|
248 |
+
[
|
249 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
250 |
+
'type' => Controls_Manager::COLOR,
|
251 |
+
'selectors' => [
|
252 |
+
'{{WRAPPER}} .ha-steps-icon i' => 'color: {{VALUE}}',
|
253 |
+
],
|
254 |
+
]
|
255 |
+
);
|
256 |
+
|
257 |
+
$this->add_control(
|
258 |
+
'icon_background_color',
|
259 |
+
[
|
260 |
+
'label' => __( 'Background Color', 'happy-elementor-addons' ),
|
261 |
+
'type' => Controls_Manager::COLOR,
|
262 |
+
'selectors' => [
|
263 |
+
'{{WRAPPER}} .ha-steps-icon' => 'background: {{VALUE}}',
|
264 |
+
],
|
265 |
+
]
|
266 |
+
);
|
267 |
+
|
268 |
+
$this->end_controls_section();
|
269 |
+
|
270 |
+
$this->start_controls_section(
|
271 |
+
'_section_badge_style',
|
272 |
+
[
|
273 |
+
'label' => __('Badge', 'happy-elementor-addons'),
|
274 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
275 |
+
'condition' => [
|
276 |
+
'badge!' => '',
|
277 |
+
],
|
278 |
+
]
|
279 |
+
);
|
280 |
+
|
281 |
+
$this->add_responsive_control(
|
282 |
+
'badge_padding',
|
283 |
+
[
|
284 |
+
'label' => __( 'Padding', 'happy-elementor-addons' ),
|
285 |
+
'type' => Controls_Manager::DIMENSIONS,
|
286 |
+
'size_units' => [ 'px', '%' ],
|
287 |
+
'condition' => [
|
288 |
+
'badge!' => '',
|
289 |
+
],
|
290 |
+
'selectors' => [
|
291 |
+
'{{WRAPPER}} .ha-steps-label' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
292 |
+
],
|
293 |
+
]
|
294 |
+
);
|
295 |
+
|
296 |
+
$this->add_group_control(
|
297 |
+
Group_Control_Border::get_type(),
|
298 |
+
[
|
299 |
+
'name' => 'badge_border',
|
300 |
+
'label' => __( 'Border', 'happy-elementor-addons' ),
|
301 |
+
'selector' => '{{WRAPPER}} .ha-steps-label',
|
302 |
+
'condition' => [
|
303 |
+
'badge!' => '',
|
304 |
+
],
|
305 |
+
]
|
306 |
+
);
|
307 |
+
|
308 |
+
$this->add_responsive_control(
|
309 |
+
'badge_border_radius',
|
310 |
+
[
|
311 |
+
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
312 |
+
'type' => Controls_Manager::DIMENSIONS,
|
313 |
+
'size_units' => [ 'px', '%' ],
|
314 |
+
'condition' => [
|
315 |
+
'badge!' => '',
|
316 |
+
],
|
317 |
+
'selectors' => [
|
318 |
+
'{{WRAPPER}} .ha-steps-label' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
319 |
+
],
|
320 |
+
]
|
321 |
+
);
|
322 |
+
|
323 |
+
$this->add_control(
|
324 |
+
'badge_color',
|
325 |
+
[
|
326 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
327 |
+
'type' => Controls_Manager::COLOR,
|
328 |
+
'condition' => [
|
329 |
+
'badge!' => '',
|
330 |
+
],
|
331 |
+
'selectors' => [
|
332 |
+
'{{WRAPPER}} .ha-steps-label' => 'color: {{VALUE}}',
|
333 |
+
],
|
334 |
+
]
|
335 |
+
);
|
336 |
+
|
337 |
+
$this->add_control(
|
338 |
+
'badge_background_color',
|
339 |
+
[
|
340 |
+
'label' => __( 'Background Color', 'happy-elementor-addons' ),
|
341 |
+
'type' => Controls_Manager::COLOR,
|
342 |
+
'condition' => [
|
343 |
+
'badge!' => '',
|
344 |
+
],
|
345 |
+
'selectors' => [
|
346 |
+
'{{WRAPPER}} .ha-steps-label' => 'background: {{VALUE}}',
|
347 |
+
],
|
348 |
+
]
|
349 |
+
);
|
350 |
+
|
351 |
+
$this->add_group_control(
|
352 |
+
Group_Control_Typography::get_type(),
|
353 |
+
[
|
354 |
+
'name' => 'badge_typography',
|
355 |
+
'selector' => '{{WRAPPER}} .ha-steps-label',
|
356 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_4,
|
357 |
+
'condition' => [
|
358 |
+
'badge!' => '',
|
359 |
+
],
|
360 |
+
]
|
361 |
+
);
|
362 |
+
|
363 |
+
$this->end_controls_section();
|
364 |
+
|
365 |
+
$this->start_controls_section(
|
366 |
+
'_section_title_style',
|
367 |
+
[
|
368 |
+
'label' => __( 'Title & Description', 'happy-elementor-addons' ),
|
369 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
370 |
+
]
|
371 |
+
);
|
372 |
+
|
373 |
+
$this->add_control(
|
374 |
+
'_heading_title',
|
375 |
+
[
|
376 |
+
'type' => Controls_Manager::HEADING,
|
377 |
+
'label' => __( 'Title', 'happy-elementor-addons' ),
|
378 |
+
]
|
379 |
+
);
|
380 |
+
|
381 |
+
$this->add_responsive_control(
|
382 |
+
'title_spacing',
|
383 |
+
[
|
384 |
+
'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
|
385 |
+
'type' => Controls_Manager::SLIDER,
|
386 |
+
'size_units' => [ 'px' ],
|
387 |
+
'selectors' => [
|
388 |
+
'{{WRAPPER}} .ha-steps-title' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
389 |
+
],
|
390 |
+
]
|
391 |
+
);
|
392 |
+
|
393 |
+
$this->add_control(
|
394 |
+
'title_color',
|
395 |
+
[
|
396 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
397 |
+
'type' => Controls_Manager::COLOR,
|
398 |
+
'selectors' => [
|
399 |
+
'{{WRAPPER}} .ha-steps-title' => 'color: {{VALUE}};',
|
400 |
+
],
|
401 |
+
]
|
402 |
+
);
|
403 |
+
|
404 |
+
$this->add_control(
|
405 |
+
'title_link_color',
|
406 |
+
[
|
407 |
+
'label' => __( 'Link Color', 'happy-elementor-addons' ),
|
408 |
+
'type' => Controls_Manager::COLOR,
|
409 |
+
'condition' => [
|
410 |
+
'link[url]!' => ''
|
411 |
+
],
|
412 |
+
'selectors' => [
|
413 |
+
'{{WRAPPER}} .ha-steps-title a' => 'color: {{VALUE}};',
|
414 |
+
],
|
415 |
+
]
|
416 |
+
);
|
417 |
+
|
418 |
+
$this->add_control(
|
419 |
+
'title_hover_color',
|
420 |
+
[
|
421 |
+
'label' => __( 'Hover Color', 'happy-elementor-addons' ),
|
422 |
+
'type' => Controls_Manager::COLOR,
|
423 |
+
'condition' => [
|
424 |
+
'link[url]!' => ''
|
425 |
+
],
|
426 |
+
'selectors' => [
|
427 |
+
'{{WRAPPER}} .ha-steps-title a:hover' => 'color: {{VALUE}};',
|
428 |
+
],
|
429 |
+
]
|
430 |
+
);
|
431 |
+
|
432 |
+
$this->add_group_control(
|
433 |
+
Group_Control_Text_Shadow::get_type(),
|
434 |
+
[
|
435 |
+
'name' => 'title_shadow',
|
436 |
+
'selector' => '{{WRAPPER}} .ha-steps-title',
|
437 |
+
]
|
438 |
+
);
|
439 |
+
|
440 |
+
$this->add_group_control(
|
441 |
+
Group_Control_Typography::get_type(),
|
442 |
+
[
|
443 |
+
'name' => 'title_typography',
|
444 |
+
'selector' => '{{WRAPPER}} .ha-steps-title',
|
445 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_2,
|
446 |
+
]
|
447 |
+
);
|
448 |
+
|
449 |
+
$this->add_control(
|
450 |
+
'_heading_description',
|
451 |
+
[
|
452 |
+
'type' => Controls_Manager::HEADING,
|
453 |
+
'label' => __( 'Description', 'happy-elementor-addons' ),
|
454 |
+
'separator' => 'before',
|
455 |
+
]
|
456 |
+
);
|
457 |
+
|
458 |
+
$this->add_control(
|
459 |
+
'description_color',
|
460 |
+
[
|
461 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
462 |
+
'type' => Controls_Manager::COLOR,
|
463 |
+
'selectors' => [
|
464 |
+
'{{WRAPPER}} .ha-step-description' => 'color: {{VALUE}};',
|
465 |
+
],
|
466 |
+
]
|
467 |
+
);
|
468 |
+
|
469 |
+
$this->add_group_control(
|
470 |
+
Group_Control_Text_Shadow::get_type(),
|
471 |
+
[
|
472 |
+
'name' => 'description_shadow',
|
473 |
+
'selector' => '{{WRAPPER}} .ha-step-description',
|
474 |
+
]
|
475 |
+
);
|
476 |
+
|
477 |
+
$this->add_group_control(
|
478 |
+
Group_Control_Typography::get_type(),
|
479 |
+
[
|
480 |
+
'name' => 'description_typography',
|
481 |
+
'selector' => '{{WRAPPER}} .ha-step-description',
|
482 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
483 |
+
]
|
484 |
+
);
|
485 |
+
|
486 |
+
$this->end_controls_section();
|
487 |
+
|
488 |
+
$this->start_controls_section(
|
489 |
+
'_section_direction_style',
|
490 |
+
[
|
491 |
+
'label' => __( 'Direction', 'happy-elementor-addons' ),
|
492 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
493 |
+
]
|
494 |
+
);
|
495 |
+
|
496 |
+
$this->add_control(
|
497 |
+
'direction_style',
|
498 |
+
[
|
499 |
+
'label' => __( 'Style', 'elementor' ),
|
500 |
+
'type' => Controls_Manager::SELECT,
|
501 |
+
'options' => [
|
502 |
+
'solid' => __( 'Solid', 'happy-elementor-addons' ),
|
503 |
+
'dotted' => __( 'Dotted', 'happy-elementor-addons' ),
|
504 |
+
'dashed' => __( 'Dashed', 'happy-elementor-addons' ),
|
505 |
+
],
|
506 |
+
'default' => 'dashed',
|
507 |
+
'selectors' => [
|
508 |
+
'{{WRAPPER}} .ha-step-arrow' => 'border-top-style: {{VALUE}}',
|
509 |
+
],
|
510 |
+
]
|
511 |
+
);
|
512 |
+
|
513 |
+
$this->add_control(
|
514 |
+
'direction_width',
|
515 |
+
[
|
516 |
+
'label' => __( 'Width', 'happy-elementor-addons' ),
|
517 |
+
'type' => Controls_Manager::SLIDER,
|
518 |
+
'size_units' => ['px', '%'],
|
519 |
+
'range' => [
|
520 |
+
'px' => [
|
521 |
+
'min' => 1,
|
522 |
+
'max' => 150,
|
523 |
+
],
|
524 |
+
],
|
525 |
+
'selectors' => [
|
526 |
+
'{{WRAPPER}} .ha-step-arrow' => 'width: {{SIZE}}{{UNIT}};',
|
527 |
+
],
|
528 |
+
]
|
529 |
+
);
|
530 |
+
|
531 |
+
$this->add_control(
|
532 |
+
'direction_color',
|
533 |
+
[
|
534 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
535 |
+
'type' => Controls_Manager::COLOR,
|
536 |
+
'selectors' => [
|
537 |
+
'{{WRAPPER}} .ha-step-arrow' => 'border-color: {{VALUE}};',
|
538 |
+
'{{WRAPPER}} .ha-step-arrow:after' => 'color: {{VALUE}};',
|
539 |
+
],
|
540 |
+
]
|
541 |
+
);
|
542 |
+
|
543 |
+
$this->end_controls_section();
|
544 |
+
}
|
545 |
+
|
546 |
+
protected function render() {
|
547 |
+
$settings = $this->get_settings_for_display();
|
548 |
+
|
549 |
+
$this->add_render_attribute( 'title', 'class', 'ha-steps-title' );
|
550 |
+
|
551 |
+
$this->add_render_attribute( 'description', 'class', 'ha-step-description' );
|
552 |
+
$this->add_inline_editing_attributes( 'description', 'basic' );
|
553 |
+
|
554 |
+
$this->add_render_attribute( 'badge', 'class', 'ha-steps-label' );
|
555 |
+
$this->add_inline_editing_attributes( 'badge', 'none' );
|
556 |
+
|
557 |
+
if ( $settings['link']['url'] ) {
|
558 |
+
$this->add_inline_editing_attributes( 'link', 'basic', 'title' );
|
559 |
+
$this->add_render_attribute( 'link', 'href', esc_url( $settings['link']['url'] ) );
|
560 |
+
if ( ! empty( $settings['link']['is_external'] ) ) {
|
561 |
+
$this->add_render_attribute( 'link', 'target', '_blank' );
|
562 |
+
}
|
563 |
+
if ( ! empty( $settings['link']['nofollow'] ) ) {
|
564 |
+
$this->set_render_attribute( 'link', 'rel', 'nofollow' );
|
565 |
+
}
|
566 |
+
} else {
|
567 |
+
$this->add_inline_editing_attributes( 'title', 'basic' );
|
568 |
+
}
|
569 |
+
?>
|
570 |
+
|
571 |
+
<div class="ha-steps-icon">
|
572 |
+
<?php if ( $settings['show_indicator'] === 'yes' ) : ?>
|
573 |
+
<div class="ha-step-arrow"></div>
|
574 |
+
<?php endif; ?>
|
575 |
+
|
576 |
+
<i class="<?php echo esc_attr( $settings['icon'] ); ?>"></i>
|
577 |
+
|
578 |
+
<?php if ( $settings['badge'] ) : ?>
|
579 |
+
<span <?php $this->print_render_attribute_string( 'badge' ); ?>><?php echo esc_html( $settings['badge'] ); ?></span>
|
580 |
+
<?php endif; ?>
|
581 |
+
</div>
|
582 |
+
|
583 |
+
<h2 <?php $this->print_render_attribute_string( 'title' ); ?>>
|
584 |
+
<?php if ( ! empty( $settings['link']['url'] ) ) : ?>
|
585 |
+
<a <?php $this->print_render_attribute_string( 'link' ); ?>><?php echo $settings['title']; ?></a>
|
586 |
+
<?php else : ?>
|
587 |
+
<?php echo $settings['title']; ?>
|
588 |
+
<?php endif; ?>
|
589 |
+
</h2>
|
590 |
+
|
591 |
+
<?php if ( $settings['description'] ) : ?>
|
592 |
+
<p <?php $this->print_render_attribute_string( 'description' ); ?>><?php echo $settings['description']; ?></p>
|
593 |
+
<?php endif; ?>
|
594 |
+
|
595 |
+
<?php
|
596 |
+
}
|
597 |
+
|
598 |
+
}
|