Version Description
1 April 2020 =
New: Post Tab widget
New: Post List widget
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 | 2.8.0 |
Comparing to | |
See all releases |
Code changes from version 2.7.3 to 2.8.0
- assets/admin/js/select2.js +104 -0
- assets/admin/js/select2.min.js +1 -0
- assets/css/main.css +338 -0
- assets/css/main.min.css +1 -1
- assets/css/widgets/post-list.min.css +1 -0
- assets/css/widgets/post-tab.min.css +1 -0
- assets/js/happy-addons.js +68 -0
- assets/js/happy-addons.min.js +1 -1
- base.php +5 -0
- classes/assets-manager.php +2 -1
- classes/select2-handler.php +103 -0
- classes/widgets-manager.php +20 -0
- controls/select2.php +95 -0
- inc/functions.php +121 -0
- plugin.php +2 -2
- readme.txt +9 -2
- widgets/post-list/widget.php +1033 -0
- widgets/post-tab/widget.php +935 -0
assets/admin/js/select2.js
ADDED
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function ($) {
|
2 |
+
"use strict";
|
3 |
+
jQuery(window).on('elementor:init', function () {
|
4 |
+
var ControlQueryPostSearch = elementor.modules.controls.BaseData.extend({
|
5 |
+
|
6 |
+
isPostSearchReady: false,
|
7 |
+
dataQueryOption: function(){
|
8 |
+
var self = this;
|
9 |
+
var data_options = self.model.get('data_options');
|
10 |
+
if( !data_options && typeof data_options !== "object"){
|
11 |
+
return false;
|
12 |
+
}else{
|
13 |
+
return data_options;
|
14 |
+
}
|
15 |
+
},
|
16 |
+
getPostTitlesbyID: function () {
|
17 |
+
var self = this,
|
18 |
+
dataQueryOption = this.dataQueryOption(),
|
19 |
+
ids = this.getControlValue();
|
20 |
+
|
21 |
+
if (!ids || 0 === ids.length) {
|
22 |
+
return;
|
23 |
+
}
|
24 |
+
|
25 |
+
if (!_.isArray(ids)) {
|
26 |
+
ids = [ids];
|
27 |
+
}
|
28 |
+
var default_value = {
|
29 |
+
security: HappyAddonsEditor.select2Secret,
|
30 |
+
select_type: 'selected',
|
31 |
+
id: ids
|
32 |
+
};
|
33 |
+
$.ajax({
|
34 |
+
url: ajaxurl,
|
35 |
+
type: 'POST',
|
36 |
+
data: $.extend( {}, default_value, dataQueryOption ),
|
37 |
+
before: self.addControlSpinner(),
|
38 |
+
success: function (results) {
|
39 |
+
|
40 |
+
self.isPostSearchReady = true;
|
41 |
+
self.model.set('options', results);
|
42 |
+
self.render();
|
43 |
+
}
|
44 |
+
});
|
45 |
+
},
|
46 |
+
addControlSpinner: function () {
|
47 |
+
this.ui.select.prop('disabled', true);
|
48 |
+
this.$el.find('.elementor-control-title').after('<span class="elementor-control-spinner"> <i class="eicon-spinner eicon-animation-spin"></i> </span>');
|
49 |
+
},
|
50 |
+
onReady: function () {
|
51 |
+
var self = this,
|
52 |
+
dataQueryOption = this.dataQueryOption();
|
53 |
+
|
54 |
+
if( !dataQueryOption ){
|
55 |
+
return;
|
56 |
+
}
|
57 |
+
this.ui.select.select2({
|
58 |
+
placeholder: self.model.get('placeholder') ? self.model.get('placeholder') : 'Search',
|
59 |
+
minimumInputLength: self.model.get('mininput') ? self.model.get('mininput') : 0,
|
60 |
+
allowClear: true,
|
61 |
+
ajax: {
|
62 |
+
url: ajaxurl,
|
63 |
+
dataType: 'json',
|
64 |
+
method: 'post',
|
65 |
+
delay: 250,
|
66 |
+
data: function (params) {
|
67 |
+
var default_value = {
|
68 |
+
security: HappyAddonsEditor.select2Secret,
|
69 |
+
select_type: 'choose',
|
70 |
+
q: params.term,
|
71 |
+
};
|
72 |
+
var data_options = self.model.get('data_options');
|
73 |
+
return $.extend( {}, default_value, data_options );
|
74 |
+
},
|
75 |
+
processResults: function (data) {
|
76 |
+
// parse the results into the format expected by Select2.
|
77 |
+
// since we are using custom formatting functions we do not need to
|
78 |
+
// alter the remote JSON data
|
79 |
+
var notFound = [{
|
80 |
+
"id": -1,
|
81 |
+
"text": "No results found",
|
82 |
+
"disabled": true
|
83 |
+
}];
|
84 |
+
return {
|
85 |
+
results: data !== null ? data : notFound
|
86 |
+
}
|
87 |
+
},
|
88 |
+
cache: true
|
89 |
+
}
|
90 |
+
});
|
91 |
+
if (!this.isPostSearchReady) {
|
92 |
+
this.getPostTitlesbyID();
|
93 |
+
}
|
94 |
+
},
|
95 |
+
onBeforeDestroy: function () {
|
96 |
+
if (this.ui.select.data('select2')) {
|
97 |
+
this.ui.select.select2('destroy');
|
98 |
+
}
|
99 |
+
this.$el.remove();
|
100 |
+
}
|
101 |
+
});
|
102 |
+
elementor.addControlView('ha-select2', ControlQueryPostSearch);
|
103 |
+
});
|
104 |
+
})(jQuery);
|
assets/admin/js/select2.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(e){"use strict";jQuery(window).on("elementor:init",function(){var t=elementor.modules.controls.BaseData.extend({isPostSearchReady:!1,dataQueryOption:function(){var e=this,t=e.model.get("data_options");return!(!t&&"object"!=typeof t)&&t},getPostTitlesbyID:function(){var t=this,o=this.dataQueryOption(),n=this.getControlValue();if(n&&0!==n.length){_.isArray(n)||(n=[n]);var s={security:HappyAddonsEditor.select2Secret,select_type:"selected",id:n};e.ajax({url:ajaxurl,type:"POST",data:e.extend({},s,o),before:t.addControlSpinner(),success:function(e){t.isPostSearchReady=!0,t.model.set("options",e),t.render()}})}},addControlSpinner:function(){this.ui.select.prop("disabled",!0),this.$el.find(".elementor-control-title").after('<span class="elementor-control-spinner"> <i class="eicon-spinner eicon-animation-spin"></i> </span>')},onReady:function(){var t=this;this.dataQueryOption()&&(this.ui.select.select2({placeholder:t.model.get("placeholder")?t.model.get("placeholder"):"Search",minimumInputLength:t.model.get("mininput")?t.model.get("mininput"):0,allowClear:!0,ajax:{url:ajaxurl,dataType:"json",method:"post",delay:250,data:function(o){var n={security:HappyAddonsEditor.select2Secret,select_type:"choose",q:o.term},s=t.model.get("data_options");return e.extend({},n,s)},processResults:function(e){var t=[{id:-1,text:"No results found",disabled:!0}];return{results:null!==e?e:t}},cache:!0}}),this.isPostSearchReady||this.getPostTitlesbyID())},onBeforeDestroy:function(){this.ui.select.data("select2")&&this.ui.select.select2("destroy"),this.$el.remove()}});elementor.addControlView("ha-select2",t)})}(jQuery);
|
assets/css/main.css
CHANGED
@@ -3160,3 +3160,341 @@ a.ha-social-icon:after {
|
|
3160 |
-webkit-backdrop-filter: blur(10px);
|
3161 |
backdrop-filter: blur(10px);
|
3162 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3160 |
-webkit-backdrop-filter: blur(10px);
|
3161 |
backdrop-filter: blur(10px);
|
3162 |
}
|
3163 |
+
|
3164 |
+
.ha-post-list {
|
3165 |
+
margin: 0;
|
3166 |
+
padding: 0;
|
3167 |
+
list-style: none;
|
3168 |
+
}
|
3169 |
+
|
3170 |
+
.ha-post-list.ha-post-list-inline {
|
3171 |
+
display: -webkit-box;
|
3172 |
+
display: -webkit-flex;
|
3173 |
+
display: -ms-flexbox;
|
3174 |
+
display: flex;
|
3175 |
+
-webkit-flex-wrap: wrap;
|
3176 |
+
-ms-flex-wrap: wrap;
|
3177 |
+
flex-wrap: wrap;
|
3178 |
+
}
|
3179 |
+
|
3180 |
+
.ha-post-list .ha-post-list-item {
|
3181 |
+
display: -webkit-box;
|
3182 |
+
display: -webkit-flex;
|
3183 |
+
display: -ms-flexbox;
|
3184 |
+
display: flex;
|
3185 |
+
margin: 0;
|
3186 |
+
margin-bottom: 10px;
|
3187 |
+
padding: 0;
|
3188 |
+
}
|
3189 |
+
|
3190 |
+
.ha-post-list.ha-post-list-inline .ha-post-list-item {
|
3191 |
+
margin-right: 21px;
|
3192 |
+
}
|
3193 |
+
|
3194 |
+
.ha-post-list .ha-post-list-item:last-child,
|
3195 |
+
.ha-post-list.ha-post-list-inline .ha-post-list-item:last-child {
|
3196 |
+
margin-right: 0;
|
3197 |
+
margin-bottom: 0;
|
3198 |
+
}
|
3199 |
+
|
3200 |
+
.ha-post-list .ha-post-list-item a {
|
3201 |
+
display: -webkit-box;
|
3202 |
+
display: -webkit-flex;
|
3203 |
+
display: -ms-flexbox;
|
3204 |
+
display: flex;
|
3205 |
+
width: 100%;
|
3206 |
+
}
|
3207 |
+
|
3208 |
+
.ha-post-list-title {
|
3209 |
+
display: block;
|
3210 |
+
margin-top: 0;
|
3211 |
+
margin-bottom: 0;
|
3212 |
+
color: #242424;
|
3213 |
+
font-size: 1rem;
|
3214 |
+
-webkit-transition: all .4s;
|
3215 |
+
transition: all .4s;
|
3216 |
+
}
|
3217 |
+
|
3218 |
+
.ha-post-list .ha-post-list-item a:hover .ha-post-list-title {
|
3219 |
+
color: #e04d8b;
|
3220 |
+
}
|
3221 |
+
|
3222 |
+
.ha-post-list-item a img {
|
3223 |
+
margin-right: 15px;
|
3224 |
+
}
|
3225 |
+
|
3226 |
+
span.ha-post-list-icon {
|
3227 |
+
margin-right: 8px;
|
3228 |
+
color: #242424;
|
3229 |
+
font-size: 14px;
|
3230 |
+
}
|
3231 |
+
|
3232 |
+
.ha-post-list-meta-wrap {
|
3233 |
+
display: -webkit-box;
|
3234 |
+
display: -webkit-flex;
|
3235 |
+
display: -ms-flexbox;
|
3236 |
+
display: flex;
|
3237 |
+
margin-top: 3px;
|
3238 |
+
}
|
3239 |
+
|
3240 |
+
.ha-post-list-meta-wrap span {
|
3241 |
+
margin-right: 10px;
|
3242 |
+
color: #8c8c8c;
|
3243 |
+
font-size: 13px;
|
3244 |
+
}
|
3245 |
+
|
3246 |
+
.ha-post-list-meta-wrap span:last-child {
|
3247 |
+
margin-right: 0;
|
3248 |
+
}
|
3249 |
+
|
3250 |
+
.ha-post-list-meta-wrap span i {
|
3251 |
+
margin-right: 3px;
|
3252 |
+
}
|
3253 |
+
|
3254 |
+
.ha-post-tab .ha-post-tab-filter {
|
3255 |
+
padding: 0;
|
3256 |
+
border-bottom: 1px solid #ddd;
|
3257 |
+
list-style: none;
|
3258 |
+
}
|
3259 |
+
|
3260 |
+
.ha-post-tab .ha-post-tab-filter li {
|
3261 |
+
display: inline-block;
|
3262 |
+
margin: 0 5px 0 0;
|
3263 |
+
padding: 15px 25px;
|
3264 |
+
background: #fff;
|
3265 |
+
color: #333;
|
3266 |
+
text-decoration: none;
|
3267 |
+
-webkit-transition: all .3s;
|
3268 |
+
transition: all .3s;
|
3269 |
+
}
|
3270 |
+
|
3271 |
+
.ha-post-tab .ha-post-tab-filter li:hover,
|
3272 |
+
.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li:hover,
|
3273 |
+
.ha-post-tab .ha-post-tab-filter li.active,
|
3274 |
+
.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li.active {
|
3275 |
+
background: #6d39ef;
|
3276 |
+
color: #fff;
|
3277 |
+
}
|
3278 |
+
|
3279 |
+
.ha-post-tab .ha-post-tab-item-wrapper {
|
3280 |
+
display: -webkit-box;
|
3281 |
+
display: -webkit-flex;
|
3282 |
+
display: -ms-flexbox;
|
3283 |
+
display: flex;
|
3284 |
+
visibility: hidden;
|
3285 |
+
overflow: hidden;
|
3286 |
+
-webkit-flex-wrap: wrap;
|
3287 |
+
-ms-flex-wrap: wrap;
|
3288 |
+
flex-wrap: wrap;
|
3289 |
+
height: 0;
|
3290 |
+
opacity: 0;
|
3291 |
+
}
|
3292 |
+
|
3293 |
+
.ha-post-tab span.ha-post-tab-loading {
|
3294 |
+
display: -webkit-box;
|
3295 |
+
display: -webkit-flex;
|
3296 |
+
display: -ms-flexbox;
|
3297 |
+
display: flex;
|
3298 |
+
-webkit-box-align: center;
|
3299 |
+
-webkit-align-items: center;
|
3300 |
+
align-items: center;
|
3301 |
+
-ms-flex-align: center;
|
3302 |
+
-webkit-box-pack: center;
|
3303 |
+
-ms-flex-pack: center;
|
3304 |
+
-webkit-justify-content: center;
|
3305 |
+
justify-content: center;
|
3306 |
+
width: 100%;
|
3307 |
+
height: 100%;
|
3308 |
+
text-align: center;
|
3309 |
+
font-size: 60px;
|
3310 |
+
opacity: .5;
|
3311 |
+
}
|
3312 |
+
|
3313 |
+
.ha-post-tab .ha-post-tab-item-wrapper.active {
|
3314 |
+
visibility: visible;
|
3315 |
+
height: auto;
|
3316 |
+
opacity: 1;
|
3317 |
+
}
|
3318 |
+
|
3319 |
+
.ha-post-tab .ha-post-tab-item {
|
3320 |
+
margin-bottom: 30px;
|
3321 |
+
padding-right: 15px;
|
3322 |
+
padding-left: 15px;
|
3323 |
+
}
|
3324 |
+
|
3325 |
+
.ha-post-tab .ha-post-tab-item-inner {
|
3326 |
+
box-sizing: border-box;
|
3327 |
+
padding: 20px;
|
3328 |
+
height: 100%;
|
3329 |
+
border-radius: 5px;
|
3330 |
+
background: #fff;
|
3331 |
+
box-shadow: 0 1px 20px rgba(0, 0, 0, .09);
|
3332 |
+
}
|
3333 |
+
|
3334 |
+
.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-thumb {
|
3335 |
+
position: relative;
|
3336 |
+
display: block;
|
3337 |
+
overflow: hidden;
|
3338 |
+
margin-bottom: 15px;
|
3339 |
+
padding-right: 0;
|
3340 |
+
padding-left: 0;
|
3341 |
+
}
|
3342 |
+
|
3343 |
+
.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-thumb img {
|
3344 |
+
max-width: 100%;
|
3345 |
+
height: auto;
|
3346 |
+
}
|
3347 |
+
|
3348 |
+
.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title {
|
3349 |
+
margin-top: 0;
|
3350 |
+
margin-bottom: 10px;
|
3351 |
+
font-size: 16px;
|
3352 |
+
}
|
3353 |
+
|
3354 |
+
.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title a {
|
3355 |
+
color: #333;
|
3356 |
+
text-decoration: none;
|
3357 |
+
-webkit-transition: all .4s;
|
3358 |
+
transition: all .4s;
|
3359 |
+
}
|
3360 |
+
|
3361 |
+
.ha-post-tab .ha-post-tab-meta span a:hover,
|
3362 |
+
.ha-post-tab .ha-post-tab-title a:hover {
|
3363 |
+
color: #6d39ef;
|
3364 |
+
}
|
3365 |
+
|
3366 |
+
.ha-post-tab .ha-post-tab-meta {
|
3367 |
+
font-size: 14px;
|
3368 |
+
}
|
3369 |
+
|
3370 |
+
.ha-post-tab .ha-post-tab-meta span {
|
3371 |
+
display: inline-block;
|
3372 |
+
margin-top: 10px;
|
3373 |
+
margin-right: 15px;
|
3374 |
+
color: #9b9b9b;
|
3375 |
+
-webkit-transition: all .4s;
|
3376 |
+
transition: all .4s;
|
3377 |
+
}
|
3378 |
+
|
3379 |
+
.ha-post-tab .ha-post-tab-meta span i {
|
3380 |
+
padding-right: 5px;
|
3381 |
+
}
|
3382 |
+
|
3383 |
+
.ha-post-tab .ha-post-tab-meta span a {
|
3384 |
+
color: #9b9b9b;
|
3385 |
+
text-decoration: none;
|
3386 |
+
-webkit-transition: all .4s;
|
3387 |
+
transition: all .4s;
|
3388 |
+
}
|
3389 |
+
|
3390 |
+
.ha-post-tab .ha-post-tab-excerpt p {
|
3391 |
+
margin: 0;
|
3392 |
+
}
|
3393 |
+
|
3394 |
+
.ha-post-tab.ha-post-tab-left,
|
3395 |
+
.ha-post-tab.ha-post-tab-right {
|
3396 |
+
display: -webkit-box;
|
3397 |
+
display: -webkit-flex;
|
3398 |
+
display: -ms-flexbox;
|
3399 |
+
display: flex;
|
3400 |
+
-webkit-flex-wrap: wrap;
|
3401 |
+
-ms-flex-wrap: wrap;
|
3402 |
+
flex-wrap: wrap;
|
3403 |
+
}
|
3404 |
+
|
3405 |
+
.ha-post-tab.ha-post-tab-left .ha-post-tab-filter {
|
3406 |
+
-webkit-box-flex: 0;
|
3407 |
+
-webkit-flex: 0 0 200px;
|
3408 |
+
-ms-flex: 0 0 200px;
|
3409 |
+
flex: 0 0 200px;
|
3410 |
+
min-width: 200px;
|
3411 |
+
border-right: 1px solid #f1f1f1;
|
3412 |
+
border-bottom: none;
|
3413 |
+
}
|
3414 |
+
|
3415 |
+
.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li {
|
3416 |
+
text-align: left;
|
3417 |
+
}
|
3418 |
+
|
3419 |
+
.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li,
|
3420 |
+
.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li {
|
3421 |
+
display: block;
|
3422 |
+
margin: 0;
|
3423 |
+
text-decoration: none;
|
3424 |
+
-webkit-transition: all .3s;
|
3425 |
+
transition: all .3s;
|
3426 |
+
}
|
3427 |
+
|
3428 |
+
.ha-post-tab.ha-post-tab-left .ha-post-tab-content {
|
3429 |
+
-webkit-box-flex: 0;
|
3430 |
+
-webkit-flex: 0 0 calc(100% - 200px);
|
3431 |
+
-ms-flex: 0 0 calc(100% - 200px);
|
3432 |
+
flex: 0 0 calc(100% - 200px);
|
3433 |
+
min-width: calc(100% - 200px);
|
3434 |
+
min-height: 100%;
|
3435 |
+
}
|
3436 |
+
|
3437 |
+
.ha-post-tab.ha-post-tab-right {
|
3438 |
+
-webkit-box-orient: horizontal;
|
3439 |
+
-webkit-box-direction: reverse;
|
3440 |
+
-webkit-flex-direction: row-reverse;
|
3441 |
+
-ms-flex-direction: row-reverse;
|
3442 |
+
flex-direction: row-reverse;
|
3443 |
+
}
|
3444 |
+
|
3445 |
+
.ha-post-tab.ha-post-tab-right .ha-post-tab-filter {
|
3446 |
+
-webkit-box-flex: 0;
|
3447 |
+
-webkit-flex: 0 0 200px;
|
3448 |
+
-ms-flex: 0 0 200px;
|
3449 |
+
flex: 0 0 200px;
|
3450 |
+
min-width: 200px;
|
3451 |
+
border-bottom: none;
|
3452 |
+
border-left: 1px solid #f1f1f1;
|
3453 |
+
}
|
3454 |
+
|
3455 |
+
.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li {
|
3456 |
+
text-align: right;
|
3457 |
+
}
|
3458 |
+
|
3459 |
+
.ha-post-tab.ha-post-tab-right .ha-post-tab-content {
|
3460 |
+
-webkit-box-flex: 0;
|
3461 |
+
-webkit-flex: 0 0 calc(100% - 200px);
|
3462 |
+
-ms-flex: 0 0 calc(100% - 200px);
|
3463 |
+
flex: 0 0 calc(100% - 200px);
|
3464 |
+
min-width: calc(100% - 200px);
|
3465 |
+
min-height: 100%;
|
3466 |
+
}
|
3467 |
+
|
3468 |
+
@media (max-width: 767px) {
|
3469 |
+
.ha-post-tab.ha-post-tab-right {
|
3470 |
+
-webkit-box-orient: horizontal;
|
3471 |
+
-webkit-box-direction: reverse;
|
3472 |
+
-webkit-flex-direction: row-reverse;
|
3473 |
+
-ms-flex-direction: row-reverse;
|
3474 |
+
flex-direction: row-reverse;
|
3475 |
+
}
|
3476 |
+
.ha-post-tab.ha-post-tab-left .ha-post-tab-filter,
|
3477 |
+
.ha-post-tab.ha-post-tab-right .ha-post-tab-filter {
|
3478 |
+
-webkit-box-flex: 0;
|
3479 |
+
-webkit-flex: 0 0 100%;
|
3480 |
+
-ms-flex: 0 0 100%;
|
3481 |
+
flex: 0 0 100%;
|
3482 |
+
min-width: 100%;
|
3483 |
+
border-right: 0;
|
3484 |
+
border-bottom: 1px solid #f1f1f1;
|
3485 |
+
border-left: 0;
|
3486 |
+
}
|
3487 |
+
.ha-post-tab.ha-post-tab-left .ha-post-tab-content,
|
3488 |
+
.ha-post-tab.ha-post-tab-right .ha-post-tab-content {
|
3489 |
+
-webkit-box-flex: 0;
|
3490 |
+
-webkit-flex: 0 0 100%;
|
3491 |
+
-ms-flex: 0 0 100%;
|
3492 |
+
flex: 0 0 100%;
|
3493 |
+
min-width: 100%;
|
3494 |
+
min-height: 100%;
|
3495 |
+
}
|
3496 |
+
.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li,
|
3497 |
+
.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li {
|
3498 |
+
display: inline-block;
|
3499 |
+
}
|
3500 |
+
}
|
assets/css/main.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.happy-addon>.elementor-widget-container{word-wrap:break-word;overflow-wrap:break-word;box-sizing:border-box}.happy-addon>.elementor-widget-container *{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-screen-reader-text{position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);margin:-1px;padding:0;width:1px;height:1px;border:0;word-wrap:normal!important;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.ha-has-background-overlay>.elementor-widget-container{position:relative;z-index:1}.ha-has-background-overlay>.elementor-widget-container:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;content:""}.ha-popup--is-enabled .ha-js-popup,.ha-popup--is-enabled .ha-js-popup img{cursor:-webkit-zoom-in!important;cursor:zoom-in!important}.mfp-wrap .mfp-arrow,.mfp-wrap .mfp-close{background-color:transparent}.mfp-wrap .mfp-arrow:focus,.mfp-wrap .mfp-close:focus{outline-width:thin}.ha-btn{display:inline-block;max-width:100%;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+.ha-btn-text,.ha-btn-text+.ha-btn-icon{margin-left:5px}.ha-badge{padding:.475rem 1.1rem;max-width:100%;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-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-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:#562dd4;color:#fff}.ha-review-ratting--star{color:#ffbf36}.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,a.ha-social-icon:after,a.ha-social-icon:before{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;max-width:100%}.ha-gallery-filter>li:not(:last-child){margin-right:10px}.ha-gallery-filter>li>button{display:block;overflow:hidden;padding:10px 25px;max-width:100%;border:2px solid #562dd4;border-radius:.25rem;background-color:transparent;color:#562dd4;text-transform:uppercase;text-overflow:ellipsis;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-image-grid-item{float:left}.ha-image-grid-inner{position:relative;display:block;overflow:hidden;margin:10px;text-decoration:none}.ha-image-grid-inner img{display:block;width:100%;-webkit-transition:all .25s;transition:all .25s}.ha-image-grid--layout-even .ha-image-grid-inner{height:250px}.ha-image-grid--layout-even .ha-image-grid-inner img{height:100%}.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;line-height:1}.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-skill-name{display:inline-block;overflow:hidden;max-width:70%;text-overflow:ellipsis}.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-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;max-width:100%;color:#fff;text-decoration:none;font-size:14px}.ha-dual-btn--left{background-color:#562dd4}.ha-dual-btn--left:focus,.ha-dual-btn--left:hover{background-color:#4423ab;color:#fff}.ha-dual-btn--right{background-color:#e2498a}.ha-dual-btn--right:focus,.ha-dual-btn--right:hover{background-color:#d6226e;color:#fff}.ha-dual-btn-connector{position:absolute!important;z-index:9;overflow:hidden;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>svg{width:1em;height:auto}.ha-dual-btn-icon>i{font-size:1em}.ha-dual-btn-icon--before{margin-right:5px}.ha-dual-btn-icon--after{margin-left:5px}.ha-dual-button>.elementor-widget-container,.ha-news-ticker-wrapper ul.ha-news-ticker-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-dual-button--mobile-layout-stack>.elementor-widget-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-dual-button--mobile-layout-stack .ha-dual-btn-wrapper{max-width:100%}.ha-dual-button--mobile-layout-stack .ha-dual-btn-connector{top:100%;right:50%}.ha-dual-button--mobile-layout-stack .ha-dual-btn--left{border-radius:30px 30px 0 0}.ha-dual-button--mobile-layout-stack .ha-dual-btn--right{border-radius:0 0 30px 30px}.ha-dual-button--mobile-layout-stack.ha-dual-button--mobile-align-left>.elementor-widget-container{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-align:start}.ha-dual-button--mobile-layout-stack.ha-dual-button--mobile-align-center>.elementor-widget-container,.ha-testimonial__reviewer{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-dual-button--mobile-layout-stack.ha-dual-button--mobile-align-right>.elementor-widget-container{-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end;-ms-flex-align:end}.ha-dual-button--mobile-layout-queue.ha-dual-button--mobile-align-left>.elementor-widget-container{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.ha-dual-button--mobile-layout-queue.ha-dual-button--mobile-align-center>.elementor-widget-container{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ha-dual-button--mobile-layout-queue.ha-dual-button--mobile-align-right>.elementor-widget-container{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-dual-button--mobile-layout-queue>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-dual-button--mobile-layout-queue .ha-dual-btn-wrapper{max-width:50%}.ha-dual-button--mobile-layout-queue .ha-dual-btn-connector{top:50%;right:0}.ha-dual-button--mobile-layout-queue .ha-dual-btn--left{border-radius:50px 0 0 50px}.ha-dual-button--mobile-layout-queue .ha-dual-btn--right{border-radius:0 50px 50px 0}@media (min-width:768px){.ha-dual-button--tablet-layout-stack.ha-dual-button--tablet-align-left>.elementor-widget-container{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-align:start}.ha-dual-button--tablet-layout-stack.ha-dual-button--tablet-align-center>.elementor-widget-container{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-dual-button--tablet-layout-stack.ha-dual-button--tablet-align-right>.elementor-widget-container{-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end;-ms-flex-align:end}.ha-dual-button--tablet-layout-queue.ha-dual-button--tablet-align-left>.elementor-widget-container{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.ha-dual-button--tablet-layout-queue.ha-dual-button--tablet-align-center>.elementor-widget-container{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ha-dual-button--tablet-layout-queue.ha-dual-button--tablet-align-right>.elementor-widget-container{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-dual-button--tablet-layout-stack>.elementor-widget-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-dual-button--tablet-layout-stack .ha-dual-btn-wrapper{max-width:100%}.ha-dual-button--tablet-layout-stack .ha-dual-btn-connector{top:100%;right:50%}.ha-dual-button--tablet-layout-stack .ha-dual-btn--left{border-radius:30px 30px 0 0}.ha-dual-button--tablet-layout-stack .ha-dual-btn--right{border-radius:0 0 30px 30px}.ha-dual-button--tablet-layout-queue>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-dual-button--tablet-layout-queue .ha-dual-btn-wrapper{max-width:50%}.ha-dual-button--tablet-layout-queue .ha-dual-btn-connector{top:50%;right:0}.ha-dual-button--tablet-layout-queue .ha-dual-btn--left{border-radius:50px 0 0 50px}.ha-dual-button--tablet-layout-queue .ha-dual-btn--right{border-radius:0 50px 50px 0}}@media (min-width:1025px){.ha-dual-button--layout-stack.ha-dual-button--align-left>.elementor-widget-container{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-align:start}.ha-dual-button--layout-stack.ha-dual-button--align-center>.elementor-widget-container{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-dual-button--layout-stack.ha-dual-button--align-right>.elementor-widget-container{-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end;-ms-flex-align:end}.ha-dual-button--layout-queue.ha-dual-button--align-left>.elementor-widget-container{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.ha-dual-button--layout-queue.ha-dual-button--align-center>.elementor-widget-container{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ha-dual-button--layout-queue.ha-dual-button--align-right>.elementor-widget-container{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-dual-button--layout-stack>.elementor-widget-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-dual-button--layout-stack .ha-dual-btn-wrapper{max-width:100%}.ha-dual-button--layout-stack .ha-dual-btn-connector{top:100%;right:50%}.ha-dual-button--layout-stack .ha-dual-btn--left{border-radius:30px 30px 0 0}.ha-dual-button--layout-stack .ha-dual-btn--right{border-radius:0 0 30px 30px}.ha-dual-button--layout-queue>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-dual-button--layout-queue .ha-dual-btn-wrapper{max-width:50%}.ha-dual-button--layout-queue .ha-dual-btn-connector{top:50%;right:0}.ha-dual-button--layout-queue .ha-dual-btn--left{border-radius:50px 0 0 50px}.ha-dual-button--layout-queue .ha-dual-btn--right{border-radius:0 50px 50px 0}}.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-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-testimonial__reviewer-thumb{-webkit-box-flex:0;-webkit-flex:0 0 65px;-ms-flex:0 0 65px;flex:0 0 65px;max-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;max-width:100%}.ha-testimonial--left .ha-testimonial__reviewer-meta,.ha-testimonial--right .ha-testimonial__reviewer-meta{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 65px);-ms-flex:0 0 calc(100% - 65px);flex:0 0 calc(100% - 65px);max-width:calc(100% - 65px)}.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-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-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-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-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-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-logo-grid-wrapper:after{display:block;clear:both;content:""}.ha-pricing-table>.elementor-widget-container{position:relative;overflow:hidden;padding:3em 4em}.ha-pricing-table-badge{position:absolute;top:-1px;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-feature-text{display:inline-block}.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)}.ha-step-flow>.elementor-widget-container{padding:30px;text-align:center}.ha-step-arrow,.ha-step-arrow:after{position:absolute;display:inline-block;border-top:1px solid #ddd}.ha-step-arrow{left:calc(100% + 20px);top:49%;width:100px}.ha-step-arrow:after{top:-2px;right:5px;width:12px;height:12px;border-right:1px solid #ddd;color:#ddd;content:"";-webkit-transform:rotate(45deg) translateY(-50%);-ms-transform:rotate(45deg) translateY(-50%);transform:rotate(45deg) translateY(-50%)}.ha-steps-icon{position:relative;display:inline-block;margin-bottom:2rem;padding:40px;border-radius:50%;background-color:#e9ecf0;box-shadow:0 2px 6px -2px #989898;color:#8056ee;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;overflow:hidden;padding:12px 8px;max-width:200%;border:3px solid #fff;border-radius:20px;background-color:#8056ee;color:#fff;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1}.ha-steps-title{margin-top:0;margin-bottom:30px;font-weight:700;font-size:16px}.ha-steps-title a{display:block;color:#562dd4}.ha-news-ticker-wrapper li.ha-news-ticker-item a,.ha-steps-title a:hover{color:#242424}.ha-step-description{margin:0;color:#616161;font-weight:400;font-size:16px;line-height:1.5}.ha-news-ticker-wrapper{position:relative;overflow:hidden;padding:20px 0;border:1px solid #d2d2d2;border-radius:5px}.ha-news-ticker-wrapper ul.ha-news-ticker-container{margin:0;padding:0;list-style:none}.ha-news-ticker-wrapper ul.ha-news-ticker-container:focus,.ha-news-ticker-wrapper ul.ha-news-ticker-container:hover{-webkit-animation-play-state:paused!important;animation-play-state:paused!important}.ha-news-ticker-wrapper span.ha-news-ticker-sticky-title{position:absolute;top:50%;left:auto;z-index:1;padding:20px;background:#333;color:#fff;font-size:1rem;line-height:1;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-news-ticker-wrapper li.ha-news-ticker-item{margin-right:20px;white-space:nowrap}.ha-news-ticker-wrapper li.ha-news-ticker-item:last-child{margin-right:0}.ha-news-ticker-wrapper .ha-news-ticker-title{margin:0;font-size:1rem;line-height:1}.ha-news-ticker-wrapper li.ha-news-ticker-item a:hover{color:#e04c8a}.ha-fun-factor-icon{font-size:3em}.ha-fun-factor-content .ha-fun-factor-content-number,.ha-fun-factor-content .ha-fun-factor-content-text{margin-top:0;margin-bottom:15px;font-size:24px}.ha-ff-icon--left .ha-fun-factor-content{padding-left:20px}.ha-ff-icon--right .ha-fun-factor-content{padding-right:20px}.ha-fun-factor-divider{display:block;margin-bottom:15px;height:1px;background-color:#ccc}.ha-ff-icon--top .ha-fun-factor-icon-section,.ha-ff-icon--top .ha-fun-factor-image-section{display:inline-block;margin-top:10px;margin-bottom:10px;width:auto;height:auto}.ha-fun-factor-image-section img{width:200px;height:100px}.ha-ff-container{padding:10px;word-wrap:break-word;overflow-wrap:break-word}.ha-ff-icon--left>.elementor-widget-container .ha-ff-container,.ha-ff-icon--right>.elementor-widget-container .ha-ff-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-ff-icon--left>.elementor-widget-container .ha-ff-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-ff-icon--right>.elementor-widget-container .ha-ff-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-ff-icon--left>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider,.ha-ff-icon--right>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider{display:block;margin-right:auto;margin-left:auto}.ha-ff-icon--top>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider{display:block;margin-right:auto;margin-left:auto;width:100px}.ha-ff-icon--left>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider,.ha-ff-icon--right>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider{width:100%!important}.ha-fun-factor-divider-align-left{margin-left:0!important;text-align:left}.ha-fun-factor-divider-align-right{margin-right:0!important;text-align:right}.ha-fun-factor-divider-align-center{margin-right:auto!important;margin-left:auto!important;text-align:center}.ha-social-icons-wrapper,.ha-social-icons-wrapper a{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-social-icons-wrapper a{padding:15px;border-radius:4px;color:#fff;font-size:30px;-webkit-transition:all .3s;transition:all .3s}a.ha-social-icon:hover{position:relative;z-index:1;background:#e2498a}.ha-social-icons-wrapper a.elementor-social-icon-label{color:#d30c5c}.ha-social-icon:not(:last-child){margin-right:2px}.ha-social-icon i,.ha-social-icon svg{position:relative;display:initial}.ha-social-icon svg,.ha-social-icon-label{width:100%;height:100%}.ha-social-icon i{width:1em;height:1em}.ha-social-icon-label{margin:0 0 0 10px;font-size:18px;font-family:Roboto,sans-serif;line-height:1}.elementor-social-icon-label .ha-social-icon-label{margin-left:0}.elementor-element-edit-mode .ha-social-icon-sticky{z-index:9999}.ha-social-icons:not(.elementor-element-edit-mode) .ha-social-icon-sticky{position:fixed}.ha-social-icon-separator{margin-right:10px}.ha-separator--stroke .ha-social-icon-separator{width:1px;height:1em;background:#d30c5c}.ha-separator--custom .ha-social-icon-separator{color:#d30c5c;font-size:24px}.ha-social-icon-separator:last-child{display:none}.ha-twitter-feed .ha-tweeter-feed-icon i{position:absolute;top:15px;right:15px;color:#1da1f2;font-size:22px}.ha-twitter-feed .ha-tweet-items{display:-ms-grid;display:grid;grid-gap:30px}.ha-twitter-feed .ha-tweet-item{position:relative;z-index:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-shadow:1px 1px 8px 1px rgba(0,0,0,.1)}.ha-twitter-feed .ha-tweet-content:before,.ha-twitter-feed .ha-tweet-item:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;content:""}.ha-twitter-feed .ha-tweet-inner-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:30px 10px}.ha-twitter-feed .ha-tweet-author,.ha-twitter-feed .ha-tweet-inner-wrapper,.ha-twitter-feed .ha-tweet-user{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-twitter-feed .ha-tweet-author{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;margin-bottom:10px}.ha-twitter-feed .ha-tweet-avatar{width:45px;border-radius:50%}.ha-twitter-feed .ha-tweet-user{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-twitter-feed .ha-tweet-author-name,.ha-twitter-feed .ha-tweet-content p a:hover{color:#e2498a}.ha-twitter-feed .ha-tweet-author-name:hover,.ha-twitter-feed .ha-tweet-content p a{color:#562dd4}.ha-twitter-feed .ha-tweet-username{color:#a7a7a7}.ha-twitter-feed .ha-tweet-username:hover{color:#818181}.ha-twitter-feed .ha-tweet-content{position:relative;color:#222}.ha-twitter-feed .ha-tweet-content p{margin-bottom:5px}.ha-twitter-feed .ha-tweet-footer{position:absolute;bottom:15px;left:0;padding:0 15px;width:100%;text-align:right}.ha-twitter-feed .ha-tweet-date{color:#a7a7a7}.ha-twitter-feed .ha-tweet-meta{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around;padding:15px}.ha-twitter-feed .ha-tweet-favorite,.ha-twitter-feed .ha-tweet-retweet{display:inline-block;color:#a7a7a7}.ha-twitter-feed .ha-tweet-favorite{margin-right:12px}.ha-twitter-feed .ha-twitter-load-more-wrapper{margin-top:30px;text-align:center}.ha-twitter-feed .ha-twitter-load-more{display:inline-block;padding:10px 25px;outline:none;border:none;border-radius:50px;background-color:#302a8c;color:#fff;text-align:center;font-weight:400;font-size:16px;-webkit-transition:all .3s;transition:all .3s}.ha-twitter-feed .ha-twitter-load-more:hover{background-color:#e2498a}.ha-twitter-feed .ha-tweet-error-message{padding:20px;border-left:4px solid #ff7726;background-color:#fff9f5}.ha-twitter-feed.ha-twitter-left .ha-tweet-avatar{margin-right:15px}.ha-twitter-feed.ha-twitter-left .ha-tweet-content{text-align:left}.ha-twitter-feed.ha-twitter-center .ha-tweet-author{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-twitter-feed.ha-twitter-center .ha-tweet-content{text-align:center}.ha-twitter-feed.ha-twitter-right .ha-tweeter-feed-icon i{right:auto;left:5px;-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-twitter-feed.ha-twitter-right .ha-tweet-author{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-twitter-feed.ha-twitter-right .ha-tweet-content{text-align:right}.ha-twitter-feed.ha-twitter-user-bottom .ha-tweet-inner-wrapper{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-twitter-feed.ha-twitter-user-bottom .ha-tweet-author{margin-top:10px;margin-bottom:0}.ha-twitter-feed.ha-tweet-glassy-yes .ha-tweet-content:before{background-color:rgba(255,255,255,.4);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
|
1 |
+
.happy-addon>.elementor-widget-container{word-wrap:break-word;overflow-wrap:break-word;box-sizing:border-box}.happy-addon>.elementor-widget-container *{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-screen-reader-text{position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);margin:-1px;padding:0;width:1px;height:1px;border:0;word-wrap:normal!important;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.ha-has-background-overlay>.elementor-widget-container{position:relative;z-index:1}.ha-has-background-overlay>.elementor-widget-container:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;content:""}.ha-popup--is-enabled .ha-js-popup,.ha-popup--is-enabled .ha-js-popup img{cursor:-webkit-zoom-in!important;cursor:zoom-in!important}.mfp-wrap .mfp-arrow,.mfp-wrap .mfp-close{background-color:transparent}.mfp-wrap .mfp-arrow:focus,.mfp-wrap .mfp-close:focus{outline-width:thin}.ha-btn{display:inline-block;max-width:100%;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+.ha-btn-text,.ha-btn-text+.ha-btn-icon{margin-left:5px}.ha-badge{padding:.475rem 1.1rem;max-width:100%;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-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-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:#562dd4;color:#fff}.ha-review-ratting--star{color:#ffbf36}.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,a.ha-social-icon:after,a.ha-social-icon:before{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;max-width:100%}.ha-gallery-filter>li:not(:last-child){margin-right:10px}.ha-gallery-filter>li>button{display:block;overflow:hidden;padding:10px 25px;max-width:100%;border:2px solid #562dd4;border-radius:.25rem;background-color:transparent;color:#562dd4;text-transform:uppercase;text-overflow:ellipsis;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-image-grid-item{float:left}.ha-image-grid-inner{position:relative;display:block;overflow:hidden;margin:10px;text-decoration:none}.ha-image-grid-inner img{display:block;width:100%;-webkit-transition:all .25s;transition:all .25s}.ha-image-grid--layout-even .ha-image-grid-inner{height:250px}.ha-image-grid--layout-even .ha-image-grid-inner img{height:100%}.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;line-height:1}.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-skill-name{display:inline-block;overflow:hidden;max-width:70%;text-overflow:ellipsis}.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-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;max-width:100%;color:#fff;text-decoration:none;font-size:14px}.ha-dual-btn--left{background-color:#562dd4}.ha-dual-btn--left:focus,.ha-dual-btn--left:hover{background-color:#4423ab;color:#fff}.ha-dual-btn--right{background-color:#e2498a}.ha-dual-btn--right:focus,.ha-dual-btn--right:hover{background-color:#d6226e;color:#fff}.ha-dual-btn-connector{position:absolute!important;z-index:9;overflow:hidden;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>svg{width:1em;height:auto}.ha-dual-btn-icon>i{font-size:1em}.ha-dual-btn-icon--before{margin-right:5px}.ha-dual-btn-icon--after{margin-left:5px}.ha-dual-button>.elementor-widget-container,.ha-news-ticker-wrapper ul.ha-news-ticker-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-dual-button--mobile-layout-stack>.elementor-widget-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-dual-button--mobile-layout-stack .ha-dual-btn-wrapper{max-width:100%}.ha-dual-button--mobile-layout-stack .ha-dual-btn-connector{top:100%;right:50%}.ha-dual-button--mobile-layout-stack .ha-dual-btn--left{border-radius:30px 30px 0 0}.ha-dual-button--mobile-layout-stack .ha-dual-btn--right{border-radius:0 0 30px 30px}.ha-dual-button--mobile-layout-stack.ha-dual-button--mobile-align-left>.elementor-widget-container{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-align:start}.ha-dual-button--mobile-layout-stack.ha-dual-button--mobile-align-center>.elementor-widget-container,.ha-testimonial__reviewer{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-dual-button--mobile-layout-stack.ha-dual-button--mobile-align-right>.elementor-widget-container{-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end;-ms-flex-align:end}.ha-dual-button--mobile-layout-queue.ha-dual-button--mobile-align-left>.elementor-widget-container{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.ha-dual-button--mobile-layout-queue.ha-dual-button--mobile-align-center>.elementor-widget-container{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ha-dual-button--mobile-layout-queue.ha-dual-button--mobile-align-right>.elementor-widget-container{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-dual-button--mobile-layout-queue>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-dual-button--mobile-layout-queue .ha-dual-btn-wrapper{max-width:50%}.ha-dual-button--mobile-layout-queue .ha-dual-btn-connector{top:50%;right:0}.ha-dual-button--mobile-layout-queue .ha-dual-btn--left{border-radius:50px 0 0 50px}.ha-dual-button--mobile-layout-queue .ha-dual-btn--right{border-radius:0 50px 50px 0}@media (min-width:768px){.ha-dual-button--tablet-layout-stack.ha-dual-button--tablet-align-left>.elementor-widget-container{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-align:start}.ha-dual-button--tablet-layout-stack.ha-dual-button--tablet-align-center>.elementor-widget-container{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-dual-button--tablet-layout-stack.ha-dual-button--tablet-align-right>.elementor-widget-container{-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end;-ms-flex-align:end}.ha-dual-button--tablet-layout-queue.ha-dual-button--tablet-align-left>.elementor-widget-container{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.ha-dual-button--tablet-layout-queue.ha-dual-button--tablet-align-center>.elementor-widget-container{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ha-dual-button--tablet-layout-queue.ha-dual-button--tablet-align-right>.elementor-widget-container{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-dual-button--tablet-layout-stack>.elementor-widget-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-dual-button--tablet-layout-stack .ha-dual-btn-wrapper{max-width:100%}.ha-dual-button--tablet-layout-stack .ha-dual-btn-connector{top:100%;right:50%}.ha-dual-button--tablet-layout-stack .ha-dual-btn--left{border-radius:30px 30px 0 0}.ha-dual-button--tablet-layout-stack .ha-dual-btn--right{border-radius:0 0 30px 30px}.ha-dual-button--tablet-layout-queue>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-dual-button--tablet-layout-queue .ha-dual-btn-wrapper{max-width:50%}.ha-dual-button--tablet-layout-queue .ha-dual-btn-connector{top:50%;right:0}.ha-dual-button--tablet-layout-queue .ha-dual-btn--left{border-radius:50px 0 0 50px}.ha-dual-button--tablet-layout-queue .ha-dual-btn--right{border-radius:0 50px 50px 0}}@media (min-width:1025px){.ha-dual-button--layout-stack.ha-dual-button--align-left>.elementor-widget-container{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-align:start}.ha-dual-button--layout-stack.ha-dual-button--align-center>.elementor-widget-container{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-dual-button--layout-stack.ha-dual-button--align-right>.elementor-widget-container{-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end;-ms-flex-align:end}.ha-dual-button--layout-queue.ha-dual-button--align-left>.elementor-widget-container{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.ha-dual-button--layout-queue.ha-dual-button--align-center>.elementor-widget-container{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ha-dual-button--layout-queue.ha-dual-button--align-right>.elementor-widget-container{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-dual-button--layout-stack>.elementor-widget-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-dual-button--layout-stack .ha-dual-btn-wrapper{max-width:100%}.ha-dual-button--layout-stack .ha-dual-btn-connector{top:100%;right:50%}.ha-dual-button--layout-stack .ha-dual-btn--left{border-radius:30px 30px 0 0}.ha-dual-button--layout-stack .ha-dual-btn--right{border-radius:0 0 30px 30px}.ha-dual-button--layout-queue>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-dual-button--layout-queue .ha-dual-btn-wrapper{max-width:50%}.ha-dual-button--layout-queue .ha-dual-btn-connector{top:50%;right:0}.ha-dual-button--layout-queue .ha-dual-btn--left{border-radius:50px 0 0 50px}.ha-dual-button--layout-queue .ha-dual-btn--right{border-radius:0 50px 50px 0}}.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-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-testimonial__reviewer-thumb{-webkit-box-flex:0;-webkit-flex:0 0 65px;-ms-flex:0 0 65px;flex:0 0 65px;max-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;max-width:100%}.ha-testimonial--left .ha-testimonial__reviewer-meta,.ha-testimonial--right .ha-testimonial__reviewer-meta{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 65px);-ms-flex:0 0 calc(100% - 65px);flex:0 0 calc(100% - 65px);max-width:calc(100% - 65px)}.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-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-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-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-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-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-logo-grid-wrapper:after{display:block;clear:both;content:""}.ha-pricing-table>.elementor-widget-container{position:relative;overflow:hidden;padding:3em 4em}.ha-pricing-table-badge{position:absolute;top:-1px;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-feature-text{display:inline-block}.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)}.ha-step-flow>.elementor-widget-container{padding:30px;text-align:center}.ha-step-arrow,.ha-step-arrow:after{position:absolute;display:inline-block;border-top:1px solid #ddd}.ha-step-arrow{left:calc(100% + 20px);top:49%;width:100px}.ha-step-arrow:after{top:-2px;right:5px;width:12px;height:12px;border-right:1px solid #ddd;color:#ddd;content:"";-webkit-transform:rotate(45deg) translateY(-50%);-ms-transform:rotate(45deg) translateY(-50%);transform:rotate(45deg) translateY(-50%)}.ha-steps-icon{position:relative;display:inline-block;margin-bottom:2rem;padding:40px;border-radius:50%;background-color:#e9ecf0;box-shadow:0 2px 6px -2px #989898;color:#8056ee;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;overflow:hidden;padding:12px 8px;max-width:200%;border:3px solid #fff;border-radius:20px;background-color:#8056ee;color:#fff;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1}.ha-steps-title{margin-top:0;margin-bottom:30px;font-weight:700;font-size:16px}.ha-steps-title a{display:block;color:#562dd4}.ha-news-ticker-wrapper li.ha-news-ticker-item a,.ha-steps-title a:hover{color:#242424}.ha-step-description{margin:0;color:#616161;font-weight:400;font-size:16px;line-height:1.5}.ha-news-ticker-wrapper{position:relative;overflow:hidden;padding:20px 0;border:1px solid #d2d2d2;border-radius:5px}.ha-news-ticker-wrapper ul.ha-news-ticker-container{margin:0;padding:0;list-style:none}.ha-news-ticker-wrapper ul.ha-news-ticker-container:focus,.ha-news-ticker-wrapper ul.ha-news-ticker-container:hover{-webkit-animation-play-state:paused!important;animation-play-state:paused!important}.ha-news-ticker-wrapper span.ha-news-ticker-sticky-title{position:absolute;top:50%;left:auto;z-index:1;padding:20px;background:#333;color:#fff;font-size:1rem;line-height:1;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-news-ticker-wrapper li.ha-news-ticker-item{margin-right:20px;white-space:nowrap}.ha-news-ticker-wrapper li.ha-news-ticker-item:last-child,.ha-post-list-meta-wrap span:last-child{margin-right:0}.ha-news-ticker-wrapper .ha-news-ticker-title{margin:0;font-size:1rem;line-height:1}.ha-news-ticker-wrapper li.ha-news-ticker-item a:hover{color:#e04c8a}.ha-fun-factor-icon{font-size:3em}.ha-fun-factor-content .ha-fun-factor-content-number,.ha-fun-factor-content .ha-fun-factor-content-text{margin-top:0;margin-bottom:15px;font-size:24px}.ha-ff-icon--left .ha-fun-factor-content{padding-left:20px}.ha-ff-icon--right .ha-fun-factor-content{padding-right:20px}.ha-fun-factor-divider{display:block;margin-bottom:15px;height:1px;background-color:#ccc}.ha-ff-icon--top .ha-fun-factor-icon-section,.ha-ff-icon--top .ha-fun-factor-image-section{display:inline-block;margin-top:10px;margin-bottom:10px;width:auto;height:auto}.ha-fun-factor-image-section img{width:200px;height:100px}.ha-ff-container{padding:10px;word-wrap:break-word;overflow-wrap:break-word}.ha-ff-icon--left>.elementor-widget-container .ha-ff-container,.ha-ff-icon--right>.elementor-widget-container .ha-ff-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-ff-icon--left>.elementor-widget-container .ha-ff-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-ff-icon--right>.elementor-widget-container .ha-ff-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-ff-icon--left>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider,.ha-ff-icon--right>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider{display:block;margin-right:auto;margin-left:auto}.ha-ff-icon--top>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider{display:block;margin-right:auto;margin-left:auto;width:100px}.ha-ff-icon--left>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider,.ha-ff-icon--right>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider{width:100%!important}.ha-fun-factor-divider-align-left{margin-left:0!important;text-align:left}.ha-fun-factor-divider-align-right{margin-right:0!important;text-align:right}.ha-fun-factor-divider-align-center{margin-right:auto!important;margin-left:auto!important;text-align:center}.ha-social-icons-wrapper,.ha-social-icons-wrapper a{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-social-icons-wrapper a{padding:15px;border-radius:4px;color:#fff;font-size:30px;-webkit-transition:all .3s;transition:all .3s}a.ha-social-icon:hover{position:relative;z-index:1;background:#e2498a}.ha-social-icons-wrapper a.elementor-social-icon-label{color:#d30c5c}.ha-social-icon:not(:last-child){margin-right:2px}.ha-social-icon i,.ha-social-icon svg{position:relative;display:initial}.ha-social-icon svg,.ha-social-icon-label{width:100%;height:100%}.ha-social-icon i{width:1em;height:1em}.ha-social-icon-label{margin:0 0 0 10px;font-size:18px;font-family:Roboto,sans-serif;line-height:1}.elementor-social-icon-label .ha-social-icon-label{margin-left:0}.elementor-element-edit-mode .ha-social-icon-sticky{z-index:9999}.ha-social-icons:not(.elementor-element-edit-mode) .ha-social-icon-sticky{position:fixed}.ha-social-icon-separator{margin-right:10px}.ha-separator--stroke .ha-social-icon-separator{width:1px;height:1em;background:#d30c5c}.ha-separator--custom .ha-social-icon-separator{color:#d30c5c;font-size:24px}.ha-social-icon-separator:last-child{display:none}.ha-twitter-feed .ha-tweeter-feed-icon i{position:absolute;top:15px;right:15px;color:#1da1f2;font-size:22px}.ha-twitter-feed .ha-tweet-items{display:-ms-grid;display:grid;grid-gap:30px}.ha-twitter-feed .ha-tweet-item{position:relative;z-index:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-shadow:1px 1px 8px 1px rgba(0,0,0,.1)}.ha-twitter-feed .ha-tweet-content:before,.ha-twitter-feed .ha-tweet-item:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;content:""}.ha-twitter-feed .ha-tweet-inner-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:30px 10px}.ha-twitter-feed .ha-tweet-author,.ha-twitter-feed .ha-tweet-inner-wrapper,.ha-twitter-feed .ha-tweet-user{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-twitter-feed .ha-tweet-author{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;margin-bottom:10px}.ha-twitter-feed .ha-tweet-avatar{width:45px;border-radius:50%}.ha-twitter-feed .ha-tweet-user{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-twitter-feed .ha-tweet-author-name,.ha-twitter-feed .ha-tweet-content p a:hover{color:#e2498a}.ha-twitter-feed .ha-tweet-author-name:hover,.ha-twitter-feed .ha-tweet-content p a{color:#562dd4}.ha-twitter-feed .ha-tweet-username{color:#a7a7a7}.ha-twitter-feed .ha-tweet-username:hover{color:#818181}.ha-twitter-feed .ha-tweet-content{position:relative;color:#222}.ha-twitter-feed .ha-tweet-content p{margin-bottom:5px}.ha-twitter-feed .ha-tweet-footer{position:absolute;bottom:15px;left:0;padding:0 15px;width:100%;text-align:right}.ha-twitter-feed .ha-tweet-date{color:#a7a7a7}.ha-twitter-feed .ha-tweet-meta{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around;padding:15px}.ha-twitter-feed .ha-tweet-favorite,.ha-twitter-feed .ha-tweet-retweet{display:inline-block;color:#a7a7a7}.ha-twitter-feed .ha-tweet-favorite{margin-right:12px}.ha-twitter-feed .ha-twitter-load-more-wrapper{margin-top:30px;text-align:center}.ha-twitter-feed .ha-twitter-load-more{display:inline-block;padding:10px 25px;outline:none;border:none;border-radius:50px;background-color:#302a8c;color:#fff;text-align:center;font-weight:400;font-size:16px;-webkit-transition:all .3s;transition:all .3s}.ha-twitter-feed .ha-twitter-load-more:hover{background-color:#e2498a}.ha-twitter-feed .ha-tweet-error-message{padding:20px;border-left:4px solid #ff7726;background-color:#fff9f5}.ha-post-list-item a img,.ha-twitter-feed.ha-twitter-left .ha-tweet-avatar{margin-right:15px}.ha-twitter-feed.ha-twitter-left .ha-tweet-content{text-align:left}.ha-twitter-feed.ha-twitter-center .ha-tweet-author{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-twitter-feed.ha-twitter-center .ha-tweet-content{text-align:center}.ha-twitter-feed.ha-twitter-right .ha-tweeter-feed-icon i{right:auto;left:5px;-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-twitter-feed.ha-twitter-right .ha-tweet-author{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-twitter-feed.ha-twitter-right .ha-tweet-content{text-align:right}.ha-twitter-feed.ha-twitter-user-bottom .ha-tweet-inner-wrapper{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-twitter-feed.ha-twitter-user-bottom .ha-tweet-author{margin-top:10px;margin-bottom:0}.ha-twitter-feed.ha-tweet-glassy-yes .ha-tweet-content:before{background-color:rgba(255,255,255,.4);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.ha-post-list{margin:0;padding:0;list-style:none}.ha-post-list .ha-post-list-item,.ha-post-list.ha-post-list-inline{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-post-list.ha-post-list-inline{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ha-post-list .ha-post-list-item{margin:0 0 10px;padding:0}.ha-post-list.ha-post-list-inline .ha-post-list-item{margin-right:21px}.ha-post-list .ha-post-list-item:last-child,.ha-post-list.ha-post-list-inline .ha-post-list-item:last-child{margin-right:0;margin-bottom:0}.ha-post-list .ha-post-list-item a{width:100%}.ha-post-list-title{display:block;margin-top:0;margin-bottom:0;color:#242424;font-size:1rem;-webkit-transition:all .4s;transition:all .4s}.ha-post-list .ha-post-list-item a:hover .ha-post-list-title{color:#e04d8b}span.ha-post-list-icon{margin-right:8px;color:#242424;font-size:14px}.ha-post-list .ha-post-list-item a,.ha-post-list-meta-wrap,.ha-post-tab span.ha-post-tab-loading{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-post-list-meta-wrap{margin-top:3px}.ha-post-list-meta-wrap span{margin-right:10px;color:#8c8c8c;font-size:13px}.ha-post-list-meta-wrap span i{margin-right:3px}.ha-post-tab .ha-post-tab-filter{padding:0;border-bottom:1px solid #ddd;list-style:none}.ha-post-tab .ha-post-tab-filter li{display:inline-block;margin:0 5px 0 0;padding:15px 25px;background:#fff;color:#333;text-decoration:none;-webkit-transition:all .3s;transition:all .3s}.ha-post-tab .ha-post-tab-filter li.active,.ha-post-tab .ha-post-tab-filter li:hover,.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li.active,.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li:hover{background:#6d39ef;color:#fff}.ha-post-tab .ha-post-tab-item-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;visibility:hidden;overflow:hidden;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;height:0;opacity:0}.ha-post-tab span.ha-post-tab-loading{-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;width:100%;height:100%;text-align:center;font-size:60px;opacity:.5}.ha-post-tab .ha-post-tab-item-wrapper.active{visibility:visible;height:auto;opacity:1}.ha-post-tab .ha-post-tab-item{margin-bottom:30px;padding-right:15px;padding-left:15px}.ha-post-tab .ha-post-tab-item-inner{box-sizing:border-box;padding:20px;height:100%;border-radius:5px;background:#fff;box-shadow:0 1px 20px rgba(0,0,0,.09)}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-thumb{position:relative;display:block;overflow:hidden;margin-bottom:15px;padding-right:0;padding-left:0}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-thumb img{max-width:100%;height:auto}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title{margin-top:0;margin-bottom:10px;font-size:16px}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title a,.ha-post-tab .ha-post-tab-meta span a{color:#333;text-decoration:none;-webkit-transition:all .4s;transition:all .4s}.ha-post-tab .ha-post-tab-meta span a:hover,.ha-post-tab .ha-post-tab-title a:hover{color:#6d39ef}.ha-post-tab .ha-post-tab-meta{font-size:14px}.ha-post-tab .ha-post-tab-meta span{display:inline-block;margin-top:10px;margin-right:15px;color:#9b9b9b;-webkit-transition:all .4s;transition:all .4s}.ha-post-tab .ha-post-tab-meta span i{padding-right:5px}.ha-post-tab .ha-post-tab-meta span a{color:#9b9b9b}.ha-post-tab .ha-post-tab-excerpt p{margin:0}.ha-post-tab.ha-post-tab-left,.ha-post-tab.ha-post-tab-right{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter{-webkit-box-flex:0;-webkit-flex:0 0 200px;-ms-flex:0 0 200px;flex:0 0 200px;min-width:200px;border-right:1px solid #f1f1f1;border-bottom:none}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li,.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li{text-align:left;display:block;margin:0;text-decoration:none;-webkit-transition:all .3s;transition:all .3s}.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li{text-align:right}.ha-post-tab.ha-post-tab-left .ha-post-tab-content{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 200px);-ms-flex:0 0 calc(100% - 200px);flex:0 0 calc(100% - 200px);min-width:calc(100% - 200px);min-height:100%}.ha-post-tab.ha-post-tab-right{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-post-tab.ha-post-tab-right .ha-post-tab-filter{-webkit-box-flex:0;-webkit-flex:0 0 200px;-ms-flex:0 0 200px;flex:0 0 200px;min-width:200px;border-bottom:none;border-left:1px solid #f1f1f1}.ha-post-tab.ha-post-tab-right .ha-post-tab-content{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 200px);-ms-flex:0 0 calc(100% - 200px);flex:0 0 calc(100% - 200px);min-width:calc(100% - 200px);min-height:100%}@media (max-width:767px){.ha-post-tab.ha-post-tab-right{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter,.ha-post-tab.ha-post-tab-right .ha-post-tab-filter{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;min-width:100%;border-right:0;border-bottom:1px solid #f1f1f1;border-left:0}.ha-post-tab.ha-post-tab-left .ha-post-tab-content,.ha-post-tab.ha-post-tab-right .ha-post-tab-content{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;min-width:100%;min-height:100%}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li,.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li{display:inline-block}}
|
assets/css/widgets/post-list.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
.ha-post-list{margin:0;padding:0;list-style:none}.ha-post-list .ha-post-list-item,.ha-post-list.ha-post-list-inline{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-post-list.ha-post-list-inline{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ha-post-list .ha-post-list-item{margin:0 0 10px;padding:0}.ha-post-list.ha-post-list-inline .ha-post-list-item{margin-right:21px}.ha-post-list .ha-post-list-item:last-child,.ha-post-list.ha-post-list-inline .ha-post-list-item:last-child{margin-right:0;margin-bottom:0}.ha-post-list .ha-post-list-item a,.ha-post-list-meta-wrap{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-post-list .ha-post-list-item a{width:100%}.ha-post-list-title{display:block;margin-top:0;margin-bottom:0;color:#242424;font-size:1rem;-webkit-transition:all .4s;transition:all .4s}.ha-post-list .ha-post-list-item a:hover .ha-post-list-title{color:#e04d8b}.ha-post-list-item a img{margin-right:15px}span.ha-post-list-icon{margin-right:8px;color:#242424;font-size:14px}.ha-post-list-meta-wrap{margin-top:3px}.ha-post-list-meta-wrap span{margin-right:10px;color:#8c8c8c;font-size:13px}.ha-post-list-meta-wrap span:last-child{margin-right:0}.ha-post-list-meta-wrap span i{margin-right:3px}
|
assets/css/widgets/post-tab.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
.ha-post-tab .ha-post-tab-filter{padding:0;border-bottom:1px solid #ddd;list-style:none}.ha-post-tab .ha-post-tab-filter li{display:inline-block;margin:0 5px 0 0;padding:15px 25px;background:#fff;color:#333;text-decoration:none;-webkit-transition:all .3s;transition:all .3s}.ha-post-tab .ha-post-tab-filter li.active,.ha-post-tab .ha-post-tab-filter li:hover,.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li.active,.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li:hover{background:#6d39ef;color:#fff}.ha-post-tab .ha-post-tab-item-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;visibility:hidden;overflow:hidden;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;height:0;opacity:0}.ha-post-tab span.ha-post-tab-loading{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;width:100%;height:100%;text-align:center;font-size:60px;opacity:.5}.ha-post-tab .ha-post-tab-item-wrapper.active{visibility:visible;height:auto;opacity:1}.ha-post-tab .ha-post-tab-item{margin-bottom:30px;padding-right:15px;padding-left:15px}.ha-post-tab .ha-post-tab-item-inner{box-sizing:border-box;padding:20px;height:100%;border-radius:5px;background:#fff;box-shadow:0 1px 20px rgba(0,0,0,.09)}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-thumb{position:relative;display:block;overflow:hidden;margin-bottom:15px;padding-right:0;padding-left:0}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-thumb img{max-width:100%;height:auto}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title{margin-top:0;margin-bottom:10px;font-size:16px}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title a,.ha-post-tab .ha-post-tab-meta span a{color:#333;text-decoration:none;-webkit-transition:all .4s;transition:all .4s}.ha-post-tab .ha-post-tab-meta span a:hover,.ha-post-tab .ha-post-tab-title a:hover{color:#6d39ef}.ha-post-tab .ha-post-tab-meta{font-size:14px}.ha-post-tab .ha-post-tab-meta span{display:inline-block;margin-top:10px;margin-right:15px;color:#9b9b9b;-webkit-transition:all .4s;transition:all .4s}.ha-post-tab .ha-post-tab-meta span i{padding-right:5px}.ha-post-tab .ha-post-tab-meta span a{color:#9b9b9b}.ha-post-tab .ha-post-tab-excerpt p{margin:0}.ha-post-tab.ha-post-tab-left,.ha-post-tab.ha-post-tab-right{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter{-webkit-box-flex:0;-webkit-flex:0 0 200px;-ms-flex:0 0 200px;flex:0 0 200px;min-width:200px;border-right:1px solid #f1f1f1;border-bottom:none}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li,.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li{text-align:left;display:block;margin:0;text-decoration:none;-webkit-transition:all .3s;transition:all .3s}.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li{text-align:right}.ha-post-tab.ha-post-tab-left .ha-post-tab-content{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 200px);-ms-flex:0 0 calc(100% - 200px);flex:0 0 calc(100% - 200px);min-width:calc(100% - 200px);min-height:100%}.ha-post-tab.ha-post-tab-right{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-post-tab.ha-post-tab-right .ha-post-tab-filter{-webkit-box-flex:0;-webkit-flex:0 0 200px;-ms-flex:0 0 200px;flex:0 0 200px;min-width:200px;border-bottom:none;border-left:1px solid #f1f1f1}.ha-post-tab.ha-post-tab-right .ha-post-tab-content{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 200px);-ms-flex:0 0 calc(100% - 200px);flex:0 0 calc(100% - 200px);min-width:calc(100% - 200px);min-height:100%}@media (max-width:767px){.ha-post-tab.ha-post-tab-right{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter,.ha-post-tab.ha-post-tab-right .ha-post-tab-filter{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;min-width:100%;border-right:0;border-bottom:1px solid #f1f1f1;border-left:0}.ha-post-tab.ha-post-tab-left .ha-post-tab-content,.ha-post-tab.ha-post-tab-right .ha-post-tab-content{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;min-width:100%;min-height:100%}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li,.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li{display:inline-block}}
|
assets/js/happy-addons.js
CHANGED
@@ -498,6 +498,73 @@
|
|
498 |
});
|
499 |
};
|
500 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
501 |
$('[data-ha-element-link]').each(function() {
|
502 |
var link = $(this).data('ha-element-link');
|
503 |
$(this).on('click.haElementOnClick', function() {
|
@@ -528,6 +595,7 @@
|
|
528 |
'ha-carousel.default': Slick,
|
529 |
'ha-image-grid.default': Isotope,
|
530 |
'ha-news-ticker.default': NewsTicker,
|
|
|
531 |
'widget': ExtensionHandler
|
532 |
};
|
533 |
|
498 |
});
|
499 |
};
|
500 |
|
501 |
+
//PostTab
|
502 |
+
var PostTab = EM.frontend.handlers.Base.extend({
|
503 |
+
|
504 |
+
onInit: function () {
|
505 |
+
EM.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
|
506 |
+
this.wrapper = this.$element.find('.ha-post-tab');
|
507 |
+
this.run();
|
508 |
+
},
|
509 |
+
run: function () {
|
510 |
+
var filter_wrap = this.wrapper.find('.ha-post-tab-filter'),
|
511 |
+
filter = filter_wrap.find('li'),
|
512 |
+
event = this.wrapper.data('event'),
|
513 |
+
args = this.wrapper.data('query-args');
|
514 |
+
|
515 |
+
filter.on(event, debounce(function (e) {
|
516 |
+
e.preventDefault();
|
517 |
+
|
518 |
+
var $self = $(this),
|
519 |
+
term_id = $self.data("term"),
|
520 |
+
$wrapper = $self.closest(".ha-post-tab"),
|
521 |
+
content = $wrapper.find('.ha-post-tab-content'),
|
522 |
+
loading = content.find('.ha-post-tab-loading'),
|
523 |
+
tab_item = content.find('.ha-post-tab-item-wrapper'),
|
524 |
+
$content_exist = false;
|
525 |
+
|
526 |
+
if (0 === loading.length) {
|
527 |
+
filter.removeClass('active');
|
528 |
+
tab_item.removeClass('active');
|
529 |
+
$self.addClass('active');
|
530 |
+
|
531 |
+
tab_item.each(function () {
|
532 |
+
var $self = $(this),
|
533 |
+
$content_id = $self.data("term");
|
534 |
+
if (term_id === $content_id) {
|
535 |
+
$self.addClass('active');
|
536 |
+
$content_exist = true;
|
537 |
+
}
|
538 |
+
});
|
539 |
+
|
540 |
+
if (false === $content_exist) {
|
541 |
+
$.ajax({
|
542 |
+
url: HappyLocalize.ajax_url,
|
543 |
+
type: 'POST',
|
544 |
+
data: {
|
545 |
+
action: "ha_post_tab_action",
|
546 |
+
security: HappyLocalize.nonce,
|
547 |
+
post_tab_query: args,
|
548 |
+
term_id: term_id,
|
549 |
+
},
|
550 |
+
beforeSend: function () {
|
551 |
+
content.append('<span class="ha-post-tab-loading"><i class="eicon-spinner eicon-animation-spin"></i></span>');
|
552 |
+
},
|
553 |
+
success: function (response) {
|
554 |
+
content.find('.ha-post-tab-loading').remove();
|
555 |
+
content.append(response);
|
556 |
+
},
|
557 |
+
error: function (error) {
|
558 |
+
}
|
559 |
+
});
|
560 |
+
|
561 |
+
}
|
562 |
+
}
|
563 |
+
|
564 |
+
}, 200));
|
565 |
+
}
|
566 |
+
});
|
567 |
+
|
568 |
$('[data-ha-element-link]').each(function() {
|
569 |
var link = $(this).data('ha-element-link');
|
570 |
$(this).on('click.haElementOnClick', function() {
|
595 |
'ha-carousel.default': Slick,
|
596 |
'ha-image-grid.default': Isotope,
|
597 |
'ha-news-ticker.default': NewsTicker,
|
598 |
+
'ha-post-tab.default': PostTab,
|
599 |
'widget': ExtensionHandler
|
600 |
};
|
601 |
|
assets/js/happy-addons.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
"use strict";!function(t,e){function i(t,e,i){var n;return function(){var a=this,s=arguments,o=function(){n=null,i||t.apply(a,s)},r=i&&!n;clearTimeout(n),n=setTimeout(o,e),r&&t.apply(a,s)}}function n(e,i){var n=e.find(".hajs-gallery-filter");n.length&&n.on("click","button",function(e){e.stopPropagation();var n=t(this);n.parent().addClass("ha-filter-active").siblings().removeClass("ha-filter-active"),i(n.data("filter"))})}function a(e,i,n,a){if(t.fn.magnificPopup){if(!n)return void t.magnificPopup.close();e.on("click",i,function(t){t.stopPropagation()}),e.find(i).magnificPopup({key:a,type:"image",image:{titleSrc:function(t){return t.el.attr("title")?t.el.attr("title"):t.el.find("img").attr("alt")}},gallery:{enabled:!0,preload:[1,2]},zoom:{enabled:!0,duration:300,easing:"ease-in-out",opener:function(t){return t.is("img")?t:t.find("img")}}})}}var s=t(e);t.fn.getHappySettings=function(){return this.data("happy-settings")};var o=function(t){var e=t.find(".hajs-image-comparison"),i=e.getHappySettings();i[{on_hover:"move_slider_on_hover",on_swipe:"move_with_handle_only",on_click:"click_to_move"}[i.move_handle||"on_swipe"]]=!0,delete i.move_handle,e.imagesLoaded().done(function(){e.twentytwenty(i);var t=setTimeout(function(){s.trigger("resize.twentytwenty"),clearTimeout(t)},400)})},r=function(e){var i=e.find(".hajs-justified-gallery"),s=i.getHappySettings(),o=s.enable_popup;i.justifiedGallery(t.extend({},{rowHeight:150,lastRow:"justify",margins:10},s)),a(e,".ha-js-popup",o,"justifiedgallery"),n(e,function(t){i.justifiedGallery({lastRow:"*"===t?s.lastRow:"nojustify",filter:t}),a(e,"*"!==t?t:".ha-js-popup",o,"justifiedgallery")})};s.on("elementor/frontend/init",function(){var e=elementorFrontend,s=elementorModules,l=s.frontend.handlers.Base.extend({onInit:function(){s.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.widgetContainer=this.$element.find(".elementor-widget-container")[0],this.initFloatingEffects(),this.initBackgroundOverlay()},initBackgroundOverlay:function(){this.isEdit&&this.$element.addClass("ha-has-background-overlay")},getDefaultSettings:function(){return{targets:this.widgetContainer,loop:!0,direction:"alternate",easing:"easeInOutSine"}},onElementChange:function(t){-1!==t.indexOf("ha_floating")&&this.runOnElementChange()},runOnElementChange:i(function(){this.animation&&this.animation.restart(),this.initFloatingEffects()},200),getConfig:function(t){return this.getElementSettings("ha_floating_fx_"+t)},initFloatingEffects: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.widgetContainer.style.setProperty("will-change","transform"),this.animation=anime(t))}}),g=s.frontend.handlers.Base.extend({onInit:function(){s.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 i={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":i.arrows=!0;break;case"dots":i.dots=!0;break;case"both":i.arrows=!0,i.dots=!0}return this.isCarousel()&&(i.slidesToShow=this.getElementSettings("slides_to_show")||3,i.responsive=[{breakpoint:e.config.breakpoints.lg,settings:{slidesToShow:this.getElementSettings("slides_to_show_tablet")||i.slidesToShow}},{breakpoint:e.config.breakpoints.md,settings:{slidesToShow:this.getElementSettings("slides_to_show_mobile")||this.getElementSettings("slides_to_show_tablet")||i.slidesToShow}}]),t.extend({},this.getDefaultSettings(),i)},run:function(){this.$container.slick(this.getReadySettings())}}),h=function(t){e.waypoint(t,function(){var e=t.find(".ha-number-text");e.numerator(e.data("animation"))})},f=function(i){e.waypoint(i,function(){i.find(".ha-skill-level").each(function(){var e=t(this),i=e.find(".ha-skill-level-text"),n=e.data("level");e.animate({width:n+"%"},500),i.numerator({toValue:n+"%",duration:1300,onStep:function(){i.append("%")}})})})},d=s.frontend.handlers.Base.extend({onInit:function(){s.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$container=this.$element.find(".hajs-isotope"),this.run(),this.runFilter()},getLayoutMode:function(){var t=this.getElementSettings("layout");return"even"===t?"masonry":t},getDefaultSettings:function(){return{itemSelector:".ha-image-grid-item",percentPosition:!0,layoutMode:this.getLayoutMode()}},runFilter:function(){var t=this;n(this.$element,function(e){t.$container.isotope({filter:e});var i="*"!==e?e:".ha-js-popup";a(t.$element,i,t.getElementSettings("enable_popup"),"imagegrid")})},onElementChange:function(t){-1!==["layout","image_height","columns","image_margin","enable_popup"].indexOf(t)&&this.run()},run:function(){var t=this;this.$container.isotope(t.getDefaultSettings()),this.$container.imagesLoaded().progress(function(){t.$container.isotope("layout")}),a(this.$element,".ha-js-popup",this.getElementSettings("enable_popup"),"imagegrid")}}),u=s.frontend.handlers.Base.extend({onInit:function(){s.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.wrapper=this.$element.find(".ha-news-ticker-wrapper"),this.run()},onElementChange:function(t){"item_space"!==t&&"title_typography_font_size"!==t||this.run()},run:function(){var e=this.wrapper.innerHeight(),i=this.wrapper.innerWidth(),n=this.wrapper.find(".ha-news-ticker-container"),a=n.find(".ha-news-ticker-item"),s=this.wrapper.data("scroll-direction"),o="scroll"+s+e+i,r=this.wrapper.data("duration"),l="normal",g=10,h={transform:"translateX(0"+i+"px)"},f={transform:"translateX(-101%)"};"right"===s&&(l="reverse"),a.each(function(){g+=t(this).outerWidth(!0)}),n.css({width:g,display:"flex"}),t.keyframe.define([{name:o,"0%":h,"100%":f}]),n.playKeyframe({name:o,duration:r+"ms",timingFunction:"linear",delay:"0s",iterationCount:"infinite",direction:l,fillMode:"none",complete:function(){}})}}),c=function(t){e.waypoint(t,function(){var e=t.find(".ha-fun-factor-content-number");e.numerator(e.data("animation"))})},p=function(i){e.waypoint(i,function(){var e=t(this),i=e.find(".ha-bar-chart-container"),n=e.find("#ha-bar-chart"),a=i.data("settings");i.length&&new Chart(n,a)})},m=function(e){var i=e.find(".ha-twitter-load-more"),n=e.find(".ha-tweet-items");i.on("click",function(i){i.preventDefault();var a=t(this),s=a.data("settings"),o=a.data("total"),r=e.find(".ha-tweet-item").length;t.ajax({url:HappyLocalize.ajax_url,type:"POST",data:{action:"ha_twitter_feed_action",security:HappyLocalize.nonce,query_settings:s,loaded_item:r},success:function(e){o>r?t(e).appendTo(n):(a.text("All Loaded").addClass("loaded"),setTimeout(function(){a.css({display:"none"})},800))},error:function(t){}})})};t("[data-ha-element-link]").each(function(){var e=t(this).data("ha-element-link");t(this).on("click.haElementOnClick",function(){e.is_external?window.open(e.url):location.href=e.url})});var _={"ha-image-compare.default":o,"ha-justified-gallery.default":r,"ha-number.default":h,"ha-skills.default":f,"ha-fun-factor.default":c,"ha-bar-chart.default":p,"ha-twitter-feed.default":m};t.each(_,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,i)});var y={"ha-slider.default":g,"ha-carousel.default":g,"ha-image-grid.default":d,"ha-news-ticker.default":u,widget:l};t.each(y,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,function(t){e.elementsHandler.addHandler(i,{$element:t})})})})}(jQuery,window);
|
1 |
+
"use strict";!function(t,e){function i(t,e,i){var n;return function(){var a=this,s=arguments,o=function(){n=null,i||t.apply(a,s)},r=i&&!n;clearTimeout(n),n=setTimeout(o,e),r&&t.apply(a,s)}}function n(e,i){var n=e.find(".hajs-gallery-filter");n.length&&n.on("click","button",function(e){e.stopPropagation();var n=t(this);n.parent().addClass("ha-filter-active").siblings().removeClass("ha-filter-active"),i(n.data("filter"))})}function a(e,i,n,a){if(t.fn.magnificPopup){if(!n)return void t.magnificPopup.close();e.on("click",i,function(t){t.stopPropagation()}),e.find(i).magnificPopup({key:a,type:"image",image:{titleSrc:function(t){return t.el.attr("title")?t.el.attr("title"):t.el.find("img").attr("alt")}},gallery:{enabled:!0,preload:[1,2]},zoom:{enabled:!0,duration:300,easing:"ease-in-out",opener:function(t){return t.is("img")?t:t.find("img")}}})}}var s=t(e);t.fn.getHappySettings=function(){return this.data("happy-settings")};var o=function(t){var e=t.find(".hajs-image-comparison"),i=e.getHappySettings();i[{on_hover:"move_slider_on_hover",on_swipe:"move_with_handle_only",on_click:"click_to_move"}[i.move_handle||"on_swipe"]]=!0,delete i.move_handle,e.imagesLoaded().done(function(){e.twentytwenty(i);var t=setTimeout(function(){s.trigger("resize.twentytwenty"),clearTimeout(t)},400)})},r=function(e){var i=e.find(".hajs-justified-gallery"),s=i.getHappySettings(),o=s.enable_popup;i.justifiedGallery(t.extend({},{rowHeight:150,lastRow:"justify",margins:10},s)),a(e,".ha-js-popup",o,"justifiedgallery"),n(e,function(t){i.justifiedGallery({lastRow:"*"===t?s.lastRow:"nojustify",filter:t}),a(e,"*"!==t?t:".ha-js-popup",o,"justifiedgallery")})};s.on("elementor/frontend/init",function(){var e=elementorFrontend,s=elementorModules,l=s.frontend.handlers.Base.extend({onInit:function(){s.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.widgetContainer=this.$element.find(".elementor-widget-container")[0],this.initFloatingEffects(),this.initBackgroundOverlay()},initBackgroundOverlay:function(){this.isEdit&&this.$element.addClass("ha-has-background-overlay")},getDefaultSettings:function(){return{targets:this.widgetContainer,loop:!0,direction:"alternate",easing:"easeInOutSine"}},onElementChange:function(t){-1!==t.indexOf("ha_floating")&&this.runOnElementChange()},runOnElementChange:i(function(){this.animation&&this.animation.restart(),this.initFloatingEffects()},200),getConfig:function(t){return this.getElementSettings("ha_floating_fx_"+t)},initFloatingEffects: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.widgetContainer.style.setProperty("will-change","transform"),this.animation=anime(t))}}),g=s.frontend.handlers.Base.extend({onInit:function(){s.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 i={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":i.arrows=!0;break;case"dots":i.dots=!0;break;case"both":i.arrows=!0,i.dots=!0}return this.isCarousel()&&(i.slidesToShow=this.getElementSettings("slides_to_show")||3,i.responsive=[{breakpoint:e.config.breakpoints.lg,settings:{slidesToShow:this.getElementSettings("slides_to_show_tablet")||i.slidesToShow}},{breakpoint:e.config.breakpoints.md,settings:{slidesToShow:this.getElementSettings("slides_to_show_mobile")||this.getElementSettings("slides_to_show_tablet")||i.slidesToShow}}]),t.extend({},this.getDefaultSettings(),i)},run:function(){this.$container.slick(this.getReadySettings())}}),h=function(t){e.waypoint(t,function(){var e=t.find(".ha-number-text");e.numerator(e.data("animation"))})},f=function(i){e.waypoint(i,function(){i.find(".ha-skill-level").each(function(){var e=t(this),i=e.find(".ha-skill-level-text"),n=e.data("level");e.animate({width:n+"%"},500),i.numerator({toValue:n+"%",duration:1300,onStep:function(){i.append("%")}})})})},d=s.frontend.handlers.Base.extend({onInit:function(){s.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$container=this.$element.find(".hajs-isotope"),this.run(),this.runFilter()},getLayoutMode:function(){var t=this.getElementSettings("layout");return"even"===t?"masonry":t},getDefaultSettings:function(){return{itemSelector:".ha-image-grid-item",percentPosition:!0,layoutMode:this.getLayoutMode()}},runFilter:function(){var t=this;n(this.$element,function(e){t.$container.isotope({filter:e});var i="*"!==e?e:".ha-js-popup";a(t.$element,i,t.getElementSettings("enable_popup"),"imagegrid")})},onElementChange:function(t){-1!==["layout","image_height","columns","image_margin","enable_popup"].indexOf(t)&&this.run()},run:function(){var t=this;this.$container.isotope(t.getDefaultSettings()),this.$container.imagesLoaded().progress(function(){t.$container.isotope("layout")}),a(this.$element,".ha-js-popup",this.getElementSettings("enable_popup"),"imagegrid")}}),u=s.frontend.handlers.Base.extend({onInit:function(){s.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.wrapper=this.$element.find(".ha-news-ticker-wrapper"),this.run()},onElementChange:function(t){"item_space"!==t&&"title_typography_font_size"!==t||this.run()},run:function(){var e=this.wrapper.innerHeight(),i=this.wrapper.innerWidth(),n=this.wrapper.find(".ha-news-ticker-container"),a=n.find(".ha-news-ticker-item"),s=this.wrapper.data("scroll-direction"),o="scroll"+s+e+i,r=this.wrapper.data("duration"),l="normal",g=10,h={transform:"translateX(0"+i+"px)"},f={transform:"translateX(-101%)"};"right"===s&&(l="reverse"),a.each(function(){g+=t(this).outerWidth(!0)}),n.css({width:g,display:"flex"}),t.keyframe.define([{name:o,"0%":h,"100%":f}]),n.playKeyframe({name:o,duration:r+"ms",timingFunction:"linear",delay:"0s",iterationCount:"infinite",direction:l,fillMode:"none",complete:function(){}})}}),c=function(t){e.waypoint(t,function(){var e=t.find(".ha-fun-factor-content-number");e.numerator(e.data("animation"))})},p=function(i){e.waypoint(i,function(){var e=t(this),i=e.find(".ha-bar-chart-container"),n=e.find("#ha-bar-chart"),a=i.data("settings");i.length&&new Chart(n,a)})},m=function(e){var i=e.find(".ha-twitter-load-more"),n=e.find(".ha-tweet-items");i.on("click",function(i){i.preventDefault();var a=t(this),s=a.data("settings"),o=a.data("total"),r=e.find(".ha-tweet-item").length;t.ajax({url:HappyLocalize.ajax_url,type:"POST",data:{action:"ha_twitter_feed_action",security:HappyLocalize.nonce,query_settings:s,loaded_item:r},success:function(e){o>r?t(e).appendTo(n):(a.text("All Loaded").addClass("loaded"),setTimeout(function(){a.css({display:"none"})},800))},error:function(t){}})})},_=s.frontend.handlers.Base.extend({onInit:function(){s.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.wrapper=this.$element.find(".ha-post-tab"),this.run()},run:function(){var e=this.wrapper.find(".ha-post-tab-filter"),n=e.find("li"),a=this.wrapper.data("event"),s=this.wrapper.data("query-args");n.on(a,i(function(e){e.preventDefault();var i=t(this),a=i.data("term"),o=i.closest(".ha-post-tab"),r=o.find(".ha-post-tab-content"),l=r.find(".ha-post-tab-loading"),g=r.find(".ha-post-tab-item-wrapper"),h=!1;0===l.length&&(n.removeClass("active"),g.removeClass("active"),i.addClass("active"),g.each(function(){var e=t(this),i=e.data("term");a===i&&(e.addClass("active"),h=!0)}),!1===h&&t.ajax({url:HappyLocalize.ajax_url,type:"POST",data:{action:"ha_post_tab_action",security:HappyLocalize.nonce,post_tab_query:s,term_id:a},beforeSend:function(){r.append('<span class="ha-post-tab-loading"><i class="eicon-spinner eicon-animation-spin"></i></span>')},success:function(t){r.find(".ha-post-tab-loading").remove(),r.append(t)},error:function(t){}}))},200))}});t("[data-ha-element-link]").each(function(){var e=t(this).data("ha-element-link");t(this).on("click.haElementOnClick",function(){e.is_external?window.open(e.url):location.href=e.url})});var y={"ha-image-compare.default":o,"ha-justified-gallery.default":r,"ha-number.default":h,"ha-skills.default":f,"ha-fun-factor.default":c,"ha-bar-chart.default":p,"ha-twitter-feed.default":m};t.each(y,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,i)});var C={"ha-slider.default":g,"ha-carousel.default":g,"ha-image-grid.default":d,"ha-news-ticker.default":u,"ha-post-tab.default":_,widget:l};t.each(C,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,function(t){e.elementsHandler.addHandler(i,{$element:t})})})})}(jQuery,window);
|
base.php
CHANGED
@@ -51,6 +51,7 @@ class Base {
|
|
51 |
Cache_Manager::init();
|
52 |
Icons_Manager::init();
|
53 |
Extensions_Manager::init();
|
|
|
54 |
|
55 |
$this->init_appsero_tracking();
|
56 |
|
@@ -103,6 +104,7 @@ class Base {
|
|
103 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/widgets-cache.php' );
|
104 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/assets-cache.php' );
|
105 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/extensions-manager.php' );
|
|
|
106 |
|
107 |
if ( is_admin() ) {
|
108 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/updater.php' );
|
@@ -138,9 +140,12 @@ class Base {
|
|
138 |
*/
|
139 |
public function register_controls( Controls_Manager $controls_Manager ) {
|
140 |
include_once( HAPPY_ADDONS_DIR_PATH . 'controls/foreground.php' );
|
|
|
141 |
$foreground = __NAMESPACE__ . '\Controls\Group_Control_Foreground';
|
|
|
142 |
|
143 |
$controls_Manager->add_group_control( $foreground::get_type(), new $foreground() );
|
|
|
144 |
}
|
145 |
|
146 |
/**
|
51 |
Cache_Manager::init();
|
52 |
Icons_Manager::init();
|
53 |
Extensions_Manager::init();
|
54 |
+
Select2_Handler::init();
|
55 |
|
56 |
$this->init_appsero_tracking();
|
57 |
|
104 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/widgets-cache.php' );
|
105 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/assets-cache.php' );
|
106 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/extensions-manager.php' );
|
107 |
+
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/select2-handler.php' );
|
108 |
|
109 |
if ( is_admin() ) {
|
110 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/updater.php' );
|
140 |
*/
|
141 |
public function register_controls( Controls_Manager $controls_Manager ) {
|
142 |
include_once( HAPPY_ADDONS_DIR_PATH . 'controls/foreground.php' );
|
143 |
+
include_once( HAPPY_ADDONS_DIR_PATH . 'controls/select2.php' );
|
144 |
$foreground = __NAMESPACE__ . '\Controls\Group_Control_Foreground';
|
145 |
+
$select2 = __NAMESPACE__ . '\Controls\Select2';
|
146 |
|
147 |
$controls_Manager->add_group_control( $foreground::get_type(), new $foreground() );
|
148 |
+
ha_elementor()->controls_manager->register_control( $select2::TYPE, new $select2() );
|
149 |
}
|
150 |
|
151 |
/**
|
classes/assets-manager.php
CHANGED
@@ -240,7 +240,7 @@ class Assets_Manager {
|
|
240 |
//Localize scripts
|
241 |
wp_localize_script('happy-elementor-addons', 'HappyLocalize', [
|
242 |
'ajax_url' => admin_url('admin-ajax.php'),
|
243 |
-
'nonce'
|
244 |
]);
|
245 |
}
|
246 |
|
@@ -305,6 +305,7 @@ class Assets_Manager {
|
|
305 |
],
|
306 |
'proWidgets' => [],
|
307 |
'hasPro' => ha_has_pro(),
|
|
|
308 |
];
|
309 |
|
310 |
if ( ! ha_has_pro() && ha_is_elementor_version( '>=', '2.9.0' ) ) {
|
240 |
//Localize scripts
|
241 |
wp_localize_script('happy-elementor-addons', 'HappyLocalize', [
|
242 |
'ajax_url' => admin_url('admin-ajax.php'),
|
243 |
+
'nonce' => wp_create_nonce('happy_addons_nonce'),
|
244 |
]);
|
245 |
}
|
246 |
|
305 |
],
|
306 |
'proWidgets' => [],
|
307 |
'hasPro' => ha_has_pro(),
|
308 |
+
'select2Secret' => wp_create_nonce( 'HappyAddons_Select2_Secret' ),
|
309 |
];
|
310 |
|
311 |
if ( ! ha_has_pro() && ha_is_elementor_version( '>=', '2.9.0' ) ) {
|
classes/select2-handler.php
ADDED
@@ -0,0 +1,103 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Happy_Addons\Elementor;
|
4 |
+
|
5 |
+
defined( 'ABSPATH' ) || die();
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Class Select2_Handler
|
9 |
+
* @package Happy_Addons\Elementor
|
10 |
+
*/
|
11 |
+
class Select2_Handler {
|
12 |
+
|
13 |
+
public static function init () {
|
14 |
+
add_action( 'wp_ajax_ha_post_list_query', [ __CLASS__, 'ha_post_list_query' ] );
|
15 |
+
add_action( 'wp_ajax_ha_post_tab_select_query', [ __CLASS__, 'post_tab_query' ] );
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Return Post list based on post type
|
20 |
+
*/
|
21 |
+
public static function ha_post_list_query () {
|
22 |
+
$security = check_ajax_referer( 'HappyAddons_Select2_Secret', 'security' );
|
23 |
+
if ( ! $security ) return;
|
24 |
+
$post_type = isset( $_POST['post_type'] ) ? sanitize_text_field( $_POST['post_type'] ) : '';
|
25 |
+
if ( ! $post_type ) return;
|
26 |
+
|
27 |
+
$select_type = isset( $_POST['select_type'] ) ? $_POST['select_type'] : false;
|
28 |
+
$search_string = isset( $_POST['q'] ) ? sanitize_text_field( $_POST['q'] ) : '';
|
29 |
+
$ids = isset( $_POST['id'] ) ? $_POST['id'] : array();
|
30 |
+
|
31 |
+
$data = [];
|
32 |
+
$arg = [
|
33 |
+
'post_status' => 'publish',
|
34 |
+
'post_type' => $post_type,
|
35 |
+
'posts_per_page' => -1,
|
36 |
+
];
|
37 |
+
$arg['s'] = $search_string;
|
38 |
+
$arg['post__in'] = $ids;
|
39 |
+
$query = new \WP_Query( $arg );
|
40 |
+
if ( $select_type === 'choose' && $query->have_posts() ) {
|
41 |
+
while ( $query->have_posts() ) {
|
42 |
+
$query->the_post();
|
43 |
+
$data[] = [
|
44 |
+
'id' => get_the_id(),
|
45 |
+
'text' => get_the_title(),
|
46 |
+
];
|
47 |
+
}
|
48 |
+
wp_reset_postdata();
|
49 |
+
}
|
50 |
+
if ( $select_type === 'selected' && $query->have_posts() ) {
|
51 |
+
while ( $query->have_posts() ) {
|
52 |
+
$query->the_post();
|
53 |
+
$data[get_the_id()] = get_the_title();
|
54 |
+
}
|
55 |
+
wp_reset_postdata();
|
56 |
+
}
|
57 |
+
// return the results in json.
|
58 |
+
wp_send_json( $data );
|
59 |
+
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Return Post tab query value
|
64 |
+
*/
|
65 |
+
public static function post_tab_query () {
|
66 |
+
$security = check_ajax_referer( 'HappyAddons_Select2_Secret', 'security' );
|
67 |
+
if ( ! $security ) return;
|
68 |
+
$tax_id = isset( $_POST['tax_id'] ) ? sanitize_text_field( $_POST['tax_id'] ) : '';
|
69 |
+
if ( ! $tax_id ) return;
|
70 |
+
|
71 |
+
$select_type = isset( $_POST['select_type'] ) ? $_POST['select_type'] : false;
|
72 |
+
$search = isset( $_POST['q'] ) ? sanitize_text_field( $_POST['q'] ) : '';
|
73 |
+
$ids = isset( $_POST['id'] ) ? $_POST['id'] : array();
|
74 |
+
|
75 |
+
$arg = [
|
76 |
+
'taxonomy' => $tax_id,
|
77 |
+
'hide_empty' => true,
|
78 |
+
'include' => $ids,
|
79 |
+
];
|
80 |
+
if($search)
|
81 |
+
$arg['search'] = $search;
|
82 |
+
$terms = get_terms( $arg );
|
83 |
+
|
84 |
+
$data = [];
|
85 |
+
if ( $select_type === 'choose' ) {
|
86 |
+
foreach ($terms as $value){
|
87 |
+
$data[] = [
|
88 |
+
'id' => $value->term_id,
|
89 |
+
'text' => $value->name . ' ('. $value->count.')',
|
90 |
+
];
|
91 |
+
}
|
92 |
+
}
|
93 |
+
if ( $select_type === 'selected' ) {
|
94 |
+
foreach ($terms as $value){
|
95 |
+
$data[ $value->term_id ] = $value->name;
|
96 |
+
}
|
97 |
+
}
|
98 |
+
// return the results in json.
|
99 |
+
wp_send_json( $data );
|
100 |
+
|
101 |
+
}
|
102 |
+
|
103 |
+
}
|
classes/widgets-manager.php
CHANGED
@@ -509,6 +509,26 @@ class Widgets_Manager {
|
|
509 |
'js' => [],
|
510 |
],
|
511 |
],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
512 |
];
|
513 |
}
|
514 |
|
509 |
'js' => [],
|
510 |
],
|
511 |
],
|
512 |
+
'post-list' => [
|
513 |
+
'title' => __( 'Post List', 'happy-elementor-addons' ),
|
514 |
+
'icon' => 'hm hm-post-list',
|
515 |
+
'css' => ['post-list'],
|
516 |
+
'js' => [],
|
517 |
+
'vendor' => [
|
518 |
+
'css' => [],
|
519 |
+
'js' => [],
|
520 |
+
],
|
521 |
+
],
|
522 |
+
'post-tab' => [
|
523 |
+
'title' => __( 'Post Tab', 'happy-elementor-addons' ),
|
524 |
+
'icon' => 'hm hm-post-tab',
|
525 |
+
'css' => ['post-tab'],
|
526 |
+
'js' => [],
|
527 |
+
'vendor' => [
|
528 |
+
'css' => [],
|
529 |
+
'js' => [],
|
530 |
+
],
|
531 |
+
],
|
532 |
];
|
533 |
}
|
534 |
|
controls/select2.php
ADDED
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Select2 Update control class
|
4 |
+
*
|
5 |
+
* @package Happy_Addons
|
6 |
+
*/
|
7 |
+
namespace Happy_Addons\Elementor\Controls;
|
8 |
+
|
9 |
+
use Elementor\Base_Data_Control;
|
10 |
+
|
11 |
+
defined( 'ABSPATH' ) || die();
|
12 |
+
|
13 |
+
class Select2 extends Base_Data_Control {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Control identifier
|
17 |
+
*/
|
18 |
+
const TYPE = 'ha-select2';
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Set control type.
|
22 |
+
*/
|
23 |
+
public function get_type() {
|
24 |
+
return self::TYPE;
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Enqueue control scripts and styles.
|
29 |
+
*/
|
30 |
+
public function enqueue() {
|
31 |
+
wp_enqueue_script(
|
32 |
+
'ha-select2',
|
33 |
+
HAPPY_ADDONS_ASSETS.'/admin/js/select2.js',
|
34 |
+
['jquery'],
|
35 |
+
HAPPY_ADDONS_VERSION
|
36 |
+
);
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Get select2 control default settings.
|
41 |
+
*
|
42 |
+
* Retrieve the default settings of the select2 control. Used to return the
|
43 |
+
* default settings while initializing the select2 control.
|
44 |
+
*
|
45 |
+
* @access protected
|
46 |
+
*
|
47 |
+
* @return array Control default settings.
|
48 |
+
*/
|
49 |
+
protected function get_default_settings() {
|
50 |
+
return [
|
51 |
+
'options' => [],
|
52 |
+
'multiple' => false,
|
53 |
+
'select2options' => [],
|
54 |
+
];
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Render select2 control output in the editor.
|
59 |
+
*
|
60 |
+
* Used to generate the control HTML in the editor using Underscore JS
|
61 |
+
* template. The variables for the class are available using `data` JS
|
62 |
+
* object.
|
63 |
+
*
|
64 |
+
* @access public
|
65 |
+
*/
|
66 |
+
public function content_template() {
|
67 |
+
$control_uid = $this->get_control_uid();
|
68 |
+
?>
|
69 |
+
<div class="elementor-control-field">
|
70 |
+
<# if ( data.label ) {#>
|
71 |
+
<label for="<?php echo $control_uid; ?>" class="elementor-control-title">{{{ data.label }}}</label>
|
72 |
+
<# } #>
|
73 |
+
<div class="elementor-control-input-wrapper">
|
74 |
+
<# var multiple = ( data.multiple ) ? 'multiple' : ''; #>
|
75 |
+
<select id="<?php echo $control_uid; ?>" class="elementor-select2" type="select2" {{ multiple }} data-setting="{{ data.name }}">
|
76 |
+
<# _.each( data.options, function( option_title, option_value ) {
|
77 |
+
var value = data.controlValue;
|
78 |
+
if ( typeof value == 'string' ) {
|
79 |
+
var selected = ( option_value === value ) ? 'selected' : '';
|
80 |
+
} else if ( null !== value ) {
|
81 |
+
var value = _.values( value );
|
82 |
+
var selected = ( -1 !== value.indexOf( option_value ) ) ? 'selected' : '';
|
83 |
+
}
|
84 |
+
#>
|
85 |
+
<option {{ selected }} value="{{ option_value }}">{{{ option_title }}}</option>
|
86 |
+
<# } ); #>
|
87 |
+
</select>
|
88 |
+
</div>
|
89 |
+
</div>
|
90 |
+
<# if ( data.description ) { #>
|
91 |
+
<div class="elementor-control-field-description">{{{ data.description }}}</div>
|
92 |
+
<# } #>
|
93 |
+
<?php
|
94 |
+
}
|
95 |
+
}
|
inc/functions.php
CHANGED
@@ -475,3 +475,124 @@ add_action( 'wp_ajax_nopriv_ha_twitter_feed_action', 'ha_twitter_feed_ajax' );
|
|
475 |
function ha_get_icon_for_label() {
|
476 |
return '<i style="position: relative; top: 1px" class="hm hm-happyaddons"></i> ';
|
477 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
475 |
function ha_get_icon_for_label() {
|
476 |
return '<i style="position: relative; top: 1px" class="hm hm-happyaddons"></i> ';
|
477 |
}
|
478 |
+
|
479 |
+
/**
|
480 |
+
* Get All Post Types
|
481 |
+
* @param array $args
|
482 |
+
* @param array $diff_key
|
483 |
+
* @return array|string[]|WP_Post_Type[]
|
484 |
+
*/
|
485 |
+
function ha_get_post_types ( $args = array(), $diff_key = array() ) {
|
486 |
+
$default = [
|
487 |
+
'public' => true,
|
488 |
+
'show_in_nav_menus' => true
|
489 |
+
];
|
490 |
+
$args = array_merge( $default, $args );
|
491 |
+
$post_types = get_post_types( $args , 'objects' );
|
492 |
+
$post_types = wp_list_pluck( $post_types, 'label', 'name' );
|
493 |
+
|
494 |
+
if( !empty( $diff_key ) ){
|
495 |
+
$post_types = array_diff_key( $post_types, $diff_key );
|
496 |
+
}
|
497 |
+
return $post_types;
|
498 |
+
}
|
499 |
+
|
500 |
+
/**
|
501 |
+
* Get All Taxonomies
|
502 |
+
* @param array $args
|
503 |
+
* @param string $output
|
504 |
+
* @param bool $list
|
505 |
+
* @param array $diff_key
|
506 |
+
* @return array|string[]|WP_Taxonomy[]
|
507 |
+
*/
|
508 |
+
function ha_get_taxonomies ( $args = array(), $output = 'object', $list = true, $diff_key = array() ) {
|
509 |
+
|
510 |
+
$taxonomies = get_taxonomies( $args , $output );
|
511 |
+
if( 'object' === $output && $list ){
|
512 |
+
$taxonomies = wp_list_pluck( $taxonomies, 'label', 'name' );
|
513 |
+
}
|
514 |
+
|
515 |
+
if( !empty( $diff_key ) ){
|
516 |
+
$taxonomies = array_diff_key( $taxonomies, $diff_key );
|
517 |
+
}
|
518 |
+
|
519 |
+
return $taxonomies;
|
520 |
+
}
|
521 |
+
|
522 |
+
/**
|
523 |
+
* Post Tab Ajax call
|
524 |
+
*/
|
525 |
+
function ha_post_tab () {
|
526 |
+
|
527 |
+
$security = check_ajax_referer( 'happy_addons_nonce', 'security' );
|
528 |
+
|
529 |
+
if ( true == $security ) :
|
530 |
+
$settings = $_POST['post_tab_query'];
|
531 |
+
$post_type = $settings['post_type'];
|
532 |
+
$taxonomy = $settings['taxonomy'];
|
533 |
+
$item_limit = $settings['item_limit'];
|
534 |
+
$excerpt = $settings['excerpt'];
|
535 |
+
$term_id = $_POST['term_id'];
|
536 |
+
|
537 |
+
$args = [
|
538 |
+
'post_status' => 'publish',
|
539 |
+
'post_type' => $post_type,
|
540 |
+
'posts_per_page' => $item_limit,
|
541 |
+
'tax_query' => array(
|
542 |
+
array(
|
543 |
+
'taxonomy' => $taxonomy,
|
544 |
+
'field' => 'term_id',
|
545 |
+
'terms' => $term_id,
|
546 |
+
),
|
547 |
+
),
|
548 |
+
];
|
549 |
+
$posts = get_posts( $args );
|
550 |
+
if ( count( $posts ) !== 0 ):
|
551 |
+
?>
|
552 |
+
<div class="ha-post-tab-item-wrapper active" data-term="<?php echo esc_attr( $term_id ); ?>">
|
553 |
+
<?php foreach ( $posts as $post ): ?>
|
554 |
+
<div class="ha-post-tab-item">
|
555 |
+
<div class="ha-post-tab-item-inner">
|
556 |
+
<?php if ( has_post_thumbnail( $post->ID ) ): ?>
|
557 |
+
<a href="<?php echo esc_url( get_the_permalink( $post->ID ) ); ?>"
|
558 |
+
class="ha-post-tab-thumb">
|
559 |
+
<?php echo get_the_post_thumbnail( $post->ID, 'full' ); ?>
|
560 |
+
</a>
|
561 |
+
<?php endif; ?>
|
562 |
+
<h2 class="ha-post-tab-title">
|
563 |
+
<a href="<?php echo esc_url( get_the_permalink( $post->ID ) ); ?>"> <?php echo esc_html( $post->post_title ); ?></a>
|
564 |
+
</h2>
|
565 |
+
<div class="ha-post-tab-meta">
|
566 |
+
<span class="ha-post-tab-meta-author">
|
567 |
+
<i class="fa fa-user-o"></i>
|
568 |
+
<a href="<?php echo esc_url( get_author_posts_url( $post->post_author ) ); ?>"><?php echo esc_html( get_the_author_meta( 'display_name', $post->post_author ) ); ?></a>
|
569 |
+
</span>
|
570 |
+
<?php
|
571 |
+
$archive_year = get_the_time( 'Y', $post->ID );
|
572 |
+
$archive_month = get_the_time( 'm', $post->ID );
|
573 |
+
$archive_day = get_the_time( 'd', $post->ID );
|
574 |
+
?>
|
575 |
+
<span class="ha-post-tab-meta-date">
|
576 |
+
<i class="fa fa-calendar-o"></i>
|
577 |
+
<a href="<?php echo esc_url( get_day_link( $archive_year, $archive_month, $archive_day ) ); ?>"><?php echo get_the_date( "M d, Y", $post->ID ); ?></a>
|
578 |
+
</span>
|
579 |
+
</div>
|
580 |
+
<?php if( 'yes' === $excerpt && !empty($post->post_excerpt) ): ?>
|
581 |
+
<div class="ha-post-tab-excerpt">
|
582 |
+
<p><?php echo esc_html($post->post_excerpt);?></p>
|
583 |
+
</div>
|
584 |
+
<?php endif;?>
|
585 |
+
</div>
|
586 |
+
</div>
|
587 |
+
<?php endforeach; ?>
|
588 |
+
</div>
|
589 |
+
<?php
|
590 |
+
|
591 |
+
endif;
|
592 |
+
endif;
|
593 |
+
wp_die();
|
594 |
+
|
595 |
+
}
|
596 |
+
add_action( 'wp_ajax_ha_post_tab_action', 'ha_post_tab' );
|
597 |
+
add_action( 'wp_ajax_nopriv_ha_post_tab_action', 'ha_post_tab' );
|
598 |
+
|
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: 2.
|
7 |
* Author: weDevs
|
8 |
* Author URI: https://happyaddons.com/
|
9 |
* License: GPLv2
|
@@ -34,7 +34,7 @@ Copyright 2019 HappyMonster <http://happymonster.me>
|
|
34 |
|
35 |
defined( 'ABSPATH' ) || die();
|
36 |
|
37 |
-
define( 'HAPPY_ADDONS_VERSION', '2.
|
38 |
define( 'HAPPY_ADDONS__FILE__', __FILE__ );
|
39 |
define( 'HAPPY_ADDONS_DIR_PATH', plugin_dir_path( HAPPY_ADDONS__FILE__ ) );
|
40 |
define( 'HAPPY_ADDONS_DIR_URL', plugin_dir_url( HAPPY_ADDONS__FILE__ ) );
|
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: 2.8.0
|
7 |
* Author: weDevs
|
8 |
* Author URI: https://happyaddons.com/
|
9 |
* License: GPLv2
|
34 |
|
35 |
defined( 'ABSPATH' ) || die();
|
36 |
|
37 |
+
define( 'HAPPY_ADDONS_VERSION', '2.8.0' );
|
38 |
define( 'HAPPY_ADDONS__FILE__', __FILE__ );
|
39 |
define( 'HAPPY_ADDONS_DIR_PATH', plugin_dir_path( HAPPY_ADDONS__FILE__ ) );
|
40 |
define( 'HAPPY_ADDONS_DIR_URL', plugin_dir_url( HAPPY_ADDONS__FILE__ ) );
|
readme.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
=== Happy Elementor Addons ===
|
2 |
Plugin Name: Happy Elementor Addons
|
3 |
-
Version: 2.
|
4 |
Author: weDevs
|
5 |
Author URI: https://happyaddons.com/
|
6 |
Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, sourav926, wedevs, iqbalrony, mrokon, obiplabon
|
@@ -27,7 +27,7 @@ _HappyAddons is a unique Elementor Addon. It might be the best addon package for
|
|
27 |
_— **Adam Preiser, Founder of WP Crafter**_
|
28 |
|
29 |
|
30 |
-
### INCLUDED
|
31 |
|
32 |
Unlike other Elementor addons, the Happy Elementor Addons comes with a host of free yet powerful widgets. The magical widgets will impress you so much that you will be confused whether they are premium or free:
|
33 |
|
@@ -61,6 +61,8 @@ Unlike other Elementor addons, the Happy Elementor Addons comes with a host of f
|
|
61 |
28. **[Twitter Feed](https://demo.happyaddons.com/elementor-twitter-feed-widget-demo/)**
|
62 |
29. **[Bar Chart](https://demo.happyaddons.com/elementor-bar-chart-widget-demo/)**
|
63 |
30. **[Social Icons](https://demo.happyaddons.com/elementor-social-icon-widget-demo/)**
|
|
|
|
|
64 |
|
65 |
|
66 |
### Free Built-in Extensions to Give You an Awesome Experience
|
@@ -276,6 +278,11 @@ It's really easy and super simple to install **Happy Elementor Addons** plugin b
|
|
276 |
|
277 |
== Changelog ==
|
278 |
|
|
|
|
|
|
|
|
|
|
|
279 |
= 2.7.3 - 31 March 2020 =
|
280 |
|
281 |
- Tweak: Custom attribute output support for all links
|
1 |
=== Happy Elementor Addons ===
|
2 |
Plugin Name: Happy Elementor Addons
|
3 |
+
Version: 2.8.0
|
4 |
Author: weDevs
|
5 |
Author URI: https://happyaddons.com/
|
6 |
Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, sourav926, wedevs, iqbalrony, mrokon, obiplabon
|
27 |
_— **Adam Preiser, Founder of WP Crafter**_
|
28 |
|
29 |
|
30 |
+
### INCLUDED 32 FREE WIDGETS
|
31 |
|
32 |
Unlike other Elementor addons, the Happy Elementor Addons comes with a host of free yet powerful widgets. The magical widgets will impress you so much that you will be confused whether they are premium or free:
|
33 |
|
61 |
28. **[Twitter Feed](https://demo.happyaddons.com/elementor-twitter-feed-widget-demo/)**
|
62 |
29. **[Bar Chart](https://demo.happyaddons.com/elementor-bar-chart-widget-demo/)**
|
63 |
30. **[Social Icons](https://demo.happyaddons.com/elementor-social-icon-widget-demo/)**
|
64 |
+
31. **[Post Tab](https://demo.happyaddons.com/elementor-post-tab-widget-demo/)**
|
65 |
+
32. **[Post List](https://demo.happyaddons.com/elementor-post-list-widget-demo/)**
|
66 |
|
67 |
|
68 |
### Free Built-in Extensions to Give You an Awesome Experience
|
278 |
|
279 |
== Changelog ==
|
280 |
|
281 |
+
= 2.8.0 - 1 April 2020 =
|
282 |
+
|
283 |
+
- New: Post Tab widget
|
284 |
+
- New: Post List widget
|
285 |
+
|
286 |
= 2.7.3 - 31 March 2020 =
|
287 |
|
288 |
- Tweak: Custom attribute output support for all links
|
widgets/post-list/widget.php
ADDED
@@ -0,0 +1,1033 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Post List widget class
|
4 |
+
*
|
5 |
+
* @package Happy_Addons
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace Happy_Addons\Elementor\Widget;
|
9 |
+
|
10 |
+
use Elementor\Controls_Manager;
|
11 |
+
use Elementor\Group_Control_Border;
|
12 |
+
use Elementor\Group_Control_Box_Shadow;
|
13 |
+
use Elementor\Group_Control_Image_Size;
|
14 |
+
use Elementor\Group_Control_Text_Shadow;
|
15 |
+
use Elementor\Group_Control_Typography;
|
16 |
+
use Elementor\Icons_Manager;
|
17 |
+
use Elementor\Repeater;
|
18 |
+
use Elementor\Core\Schemes;
|
19 |
+
use Elementor\Group_Control_Background;
|
20 |
+
use Happy_Addons\Elementor\Controls\Select2;
|
21 |
+
|
22 |
+
defined( 'ABSPATH' ) || die();
|
23 |
+
|
24 |
+
class Post_List extends Base {
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Get widget title.
|
28 |
+
*
|
29 |
+
* @return string Widget title.
|
30 |
+
* @since 1.0.0
|
31 |
+
* @access public
|
32 |
+
*
|
33 |
+
*/
|
34 |
+
public function get_title () {
|
35 |
+
return __( 'Post List', 'happy-elementor-addons' );
|
36 |
+
}
|
37 |
+
|
38 |
+
public function get_custom_help_url () {
|
39 |
+
return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/post-list/';
|
40 |
+
}
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Get widget icon.
|
44 |
+
*
|
45 |
+
* @return string Widget icon.
|
46 |
+
* @since 1.0.0
|
47 |
+
* @access public
|
48 |
+
*
|
49 |
+
*/
|
50 |
+
public function get_icon () {
|
51 |
+
return 'hm hm-post-list';
|
52 |
+
}
|
53 |
+
|
54 |
+
public function get_keywords () {
|
55 |
+
return [ 'posts', 'post', 'post-list', 'list', 'news' ];
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Get a list of All Post Types
|
60 |
+
*
|
61 |
+
* @return array
|
62 |
+
*/
|
63 |
+
public function get_post_types () {
|
64 |
+
$post_types = ha_get_post_types( [],[ 'elementor_library', 'attachment' ] );
|
65 |
+
return $post_types;
|
66 |
+
}
|
67 |
+
|
68 |
+
protected function register_content_controls () {
|
69 |
+
$this->start_controls_section(
|
70 |
+
'_section_post_list',
|
71 |
+
[
|
72 |
+
'label' => __( 'List', 'happy-elementor-addons' ),
|
73 |
+
'tab' => Controls_Manager::TAB_CONTENT,
|
74 |
+
]
|
75 |
+
);
|
76 |
+
|
77 |
+
$this->add_control(
|
78 |
+
'post_type',
|
79 |
+
[
|
80 |
+
'label' => __( 'Source', 'happy-elementor-addons' ),
|
81 |
+
'type' => Controls_Manager::SELECT,
|
82 |
+
'options' => $this->get_post_types(),
|
83 |
+
'default' => key( $this->get_post_types() ),
|
84 |
+
]
|
85 |
+
);
|
86 |
+
|
87 |
+
$this->add_control(
|
88 |
+
'show_post_by',
|
89 |
+
[
|
90 |
+
'label' => __( 'Show post by:', 'happy-elementor-addons' ),
|
91 |
+
'type' => Controls_Manager::SELECT,
|
92 |
+
'default' => 'recent',
|
93 |
+
'options' => [
|
94 |
+
'recent' => __( 'Recent Post', 'happy-elementor-addons' ),
|
95 |
+
'selected' => __( 'Selected Post', 'happy-elementor-addons' ),
|
96 |
+
],
|
97 |
+
|
98 |
+
]
|
99 |
+
);
|
100 |
+
|
101 |
+
$this->add_control(
|
102 |
+
'posts_per_page',
|
103 |
+
[
|
104 |
+
'label' => __( 'Item Limit', 'happy-elementor-addons' ),
|
105 |
+
'type' => Controls_Manager::NUMBER,
|
106 |
+
'default' => 3,
|
107 |
+
'dynamic' => [ 'active' => true ],
|
108 |
+
'condition' => [
|
109 |
+
'show_post_by' => [ 'recent' ]
|
110 |
+
]
|
111 |
+
]
|
112 |
+
);
|
113 |
+
|
114 |
+
$repeater = [];
|
115 |
+
|
116 |
+
foreach ( $this->get_post_types() as $key => $value ) {
|
117 |
+
|
118 |
+
$repeater[$key] = new Repeater();
|
119 |
+
|
120 |
+
$repeater[$key]->add_control(
|
121 |
+
'title',
|
122 |
+
[
|
123 |
+
'label' => __( 'Title', 'happy-elementor-addons' ),
|
124 |
+
'type' => Controls_Manager::TEXT,
|
125 |
+
'label_block' => true,
|
126 |
+
'placeholder' => __( 'Customize Title', 'happy-elementor-addons' ),
|
127 |
+
'dynamic' => [
|
128 |
+
'active' => true,
|
129 |
+
],
|
130 |
+
]
|
131 |
+
);
|
132 |
+
|
133 |
+
$repeater[$key]->add_control(
|
134 |
+
'post_id',
|
135 |
+
[
|
136 |
+
'label' => __( 'Select ', 'happy-elementor-addons' ) . $value,
|
137 |
+
'label_block' => true,
|
138 |
+
'type' => Select2::TYPE,
|
139 |
+
'multiple' => false,
|
140 |
+
'placeholder' => 'Search ' . $value,
|
141 |
+
'data_options' => [
|
142 |
+
'post_type' => $key,
|
143 |
+
'action' => 'ha_post_list_query'
|
144 |
+
],
|
145 |
+
]
|
146 |
+
);
|
147 |
+
|
148 |
+
$this->add_control(
|
149 |
+
'selected_list_' . $key,
|
150 |
+
[
|
151 |
+
'label' => '',
|
152 |
+
'type' => Controls_Manager::REPEATER,
|
153 |
+
'fields' => $repeater[$key]->get_controls(),
|
154 |
+
'title_field' => '{{ title }}',
|
155 |
+
'condition' => [
|
156 |
+
'show_post_by' => 'selected',
|
157 |
+
'post_type' => $key
|
158 |
+
],
|
159 |
+
]
|
160 |
+
);
|
161 |
+
}
|
162 |
+
|
163 |
+
$this->end_controls_section();
|
164 |
+
|
165 |
+
//Settings
|
166 |
+
$this->start_controls_section(
|
167 |
+
'_section_settings',
|
168 |
+
[
|
169 |
+
'label' => __( 'Settings', 'happy-elementor-addons' ),
|
170 |
+
'tab' => Controls_Manager::TAB_CONTENT,
|
171 |
+
]
|
172 |
+
);
|
173 |
+
|
174 |
+
$this->add_control(
|
175 |
+
'view',
|
176 |
+
[
|
177 |
+
'label' => __( 'Layout', 'happy-elementor-addons' ),
|
178 |
+
'label_block' => false,
|
179 |
+
'type' => Controls_Manager::CHOOSE,
|
180 |
+
'default' => 'list',
|
181 |
+
'options' => [
|
182 |
+
'list' => [
|
183 |
+
'title' => __( 'List', 'happy-elementor-addons' ),
|
184 |
+
'icon' => 'eicon-editor-list-ul',
|
185 |
+
],
|
186 |
+
'inline' => [
|
187 |
+
'title' => __( 'Inline', 'happy-elementor-addons' ),
|
188 |
+
'icon' => 'eicon-ellipsis-h',
|
189 |
+
],
|
190 |
+
],
|
191 |
+
'style_transfer' => true,
|
192 |
+
]
|
193 |
+
);
|
194 |
+
|
195 |
+
$this->add_control(
|
196 |
+
'feature_image',
|
197 |
+
[
|
198 |
+
'label' => __( 'Featured Image', 'happy-elementor-addons' ),
|
199 |
+
'type' => Controls_Manager::SWITCHER,
|
200 |
+
'label_on' => __( 'Show', 'happy-elementor-addons' ),
|
201 |
+
'label_off' => __( 'Hide', 'happy-elementor-addons' ),
|
202 |
+
'return_value' => 'yes',
|
203 |
+
'default' => '',
|
204 |
+
]
|
205 |
+
);
|
206 |
+
|
207 |
+
$this->add_group_control(
|
208 |
+
Group_Control_Image_Size::get_type(),
|
209 |
+
[
|
210 |
+
'name' => 'post_image',
|
211 |
+
'default' => 'thumbnail',
|
212 |
+
'exclude' => [
|
213 |
+
'custom'
|
214 |
+
],
|
215 |
+
'condition' => [
|
216 |
+
'feature_image' => 'yes'
|
217 |
+
]
|
218 |
+
]
|
219 |
+
);
|
220 |
+
|
221 |
+
$this->add_control(
|
222 |
+
'list_icon',
|
223 |
+
[
|
224 |
+
'label' => __( 'List Icon', 'happy-elementor-addons' ),
|
225 |
+
'type' => Controls_Manager::SWITCHER,
|
226 |
+
'label_on' => __( 'Show', 'happy-elementor-addons' ),
|
227 |
+
'label_off' => __( 'Hide', 'happy-elementor-addons' ),
|
228 |
+
'return_value' => 'yes',
|
229 |
+
'default' => 'yes',
|
230 |
+
'condition' => [
|
231 |
+
'feature_image!' => 'yes'
|
232 |
+
]
|
233 |
+
]
|
234 |
+
);
|
235 |
+
|
236 |
+
$this->add_control(
|
237 |
+
'icon',
|
238 |
+
[
|
239 |
+
'label' => __( 'Icon', 'happy-elementor-addons' ),
|
240 |
+
'type' => Controls_Manager::ICONS,
|
241 |
+
'label_block' => true,
|
242 |
+
'default' => [
|
243 |
+
'value' => 'far fa-check-circle',
|
244 |
+
'library' => 'reguler'
|
245 |
+
],
|
246 |
+
'condition' => [
|
247 |
+
'list_icon' => 'yes',
|
248 |
+
'feature_image!' => 'yes'
|
249 |
+
]
|
250 |
+
]
|
251 |
+
);
|
252 |
+
|
253 |
+
$this->add_control(
|
254 |
+
'meta',
|
255 |
+
[
|
256 |
+
'label' => __( 'Show Meta', 'happy-elementor-addons' ),
|
257 |
+
'type' => Controls_Manager::SWITCHER,
|
258 |
+
'label_on' => __( 'Show', 'happy-elementor-addons' ),
|
259 |
+
'label_off' => __( 'Hide', 'happy-elementor-addons' ),
|
260 |
+
'return_value' => 'yes',
|
261 |
+
'default' => '',
|
262 |
+
]
|
263 |
+
);
|
264 |
+
|
265 |
+
$this->add_control(
|
266 |
+
'author_meta',
|
267 |
+
[
|
268 |
+
'label' => __( 'Author', 'happy-elementor-addons' ),
|
269 |
+
'type' => Controls_Manager::SWITCHER,
|
270 |
+
'label_on' => __( 'Show', 'happy-elementor-addons' ),
|
271 |
+
'label_off' => __( 'Hide', 'happy-elementor-addons' ),
|
272 |
+
'return_value' => 'yes',
|
273 |
+
'default' => '',
|
274 |
+
'condition' => [
|
275 |
+
'meta' => 'yes',
|
276 |
+
]
|
277 |
+
]
|
278 |
+
);
|
279 |
+
|
280 |
+
$this->add_control(
|
281 |
+
'author_icon',
|
282 |
+
[
|
283 |
+
'label' => __( 'Author Icon', 'happy-elementor-addons' ),
|
284 |
+
'type' => Controls_Manager::ICONS,
|
285 |
+
'default' => [
|
286 |
+
'value' => 'far fa-user',
|
287 |
+
'library' => 'reguler',
|
288 |
+
],
|
289 |
+
'condition' => [
|
290 |
+
'meta' => 'yes',
|
291 |
+
'author_meta' => 'yes',
|
292 |
+
]
|
293 |
+
]
|
294 |
+
);
|
295 |
+
|
296 |
+
$this->add_control(
|
297 |
+
'date_meta',
|
298 |
+
[
|
299 |
+
'label' => __( 'Date', 'happy-elementor-addons' ),
|
300 |
+
'type' => Controls_Manager::SWITCHER,
|
301 |
+
'label_on' => __( 'Show', 'happy-elementor-addons' ),
|
302 |
+
'label_off' => __( 'Hide', 'happy-elementor-addons' ),
|
303 |
+
'return_value' => 'yes',
|
304 |
+
'default' => '',
|
305 |
+
'condition' => [
|
306 |
+
'meta' => 'yes',
|
307 |
+
]
|
308 |
+
]
|
309 |
+
);
|
310 |
+
|
311 |
+
$this->add_control(
|
312 |
+
'date_icon',
|
313 |
+
[
|
314 |
+
'label' => __( 'Date Icon', 'happy-elementor-addons' ),
|
315 |
+
'type' => Controls_Manager::ICONS,
|
316 |
+
'default' => [
|
317 |
+
'value' => 'far fa-calendar-check',
|
318 |
+
'library' => 'reguler',
|
319 |
+
],
|
320 |
+
'condition' => [
|
321 |
+
'meta' => 'yes',
|
322 |
+
'date_meta' => 'yes',
|
323 |
+
]
|
324 |
+
]
|
325 |
+
);
|
326 |
+
|
327 |
+
$this->add_control(
|
328 |
+
'category_meta',
|
329 |
+
[
|
330 |
+
'label' => __( 'Category', 'happy-elementor-addons' ),
|
331 |
+
'type' => Controls_Manager::SWITCHER,
|
332 |
+
'label_on' => __( 'Show', 'happy-elementor-addons' ),
|
333 |
+
'label_off' => __( 'Hide', 'happy-elementor-addons' ),
|
334 |
+
'return_value' => 'yes',
|
335 |
+
'default' => '',
|
336 |
+
'condition' => [
|
337 |
+
'meta' => 'yes',
|
338 |
+
'post_type' => 'post',
|
339 |
+
]
|
340 |
+
]
|
341 |
+
);
|
342 |
+
|
343 |
+
$this->add_control(
|
344 |
+
'category_icon',
|
345 |
+
[
|
346 |
+
'label' => __( 'Category Icon', 'happy-elementor-addons' ),
|
347 |
+
'type' => Controls_Manager::ICONS,
|
348 |
+
'default' => [
|
349 |
+
'value' => 'far fa-folder-open',
|
350 |
+
'library' => 'reguler',
|
351 |
+
],
|
352 |
+
'condition' => [
|
353 |
+
'meta' => 'yes',
|
354 |
+
'category_meta' => 'yes',
|
355 |
+
'post_type' => 'post',
|
356 |
+
]
|
357 |
+
]
|
358 |
+
);
|
359 |
+
|
360 |
+
$this->add_control(
|
361 |
+
'meta_position',
|
362 |
+
[
|
363 |
+
'label' => __( 'Meta Position', 'happy-elementor-addons' ),
|
364 |
+
'type' => Controls_Manager::SELECT,
|
365 |
+
'default' => 'bottom',
|
366 |
+
'options' => [
|
367 |
+
'top' => __( 'Top', 'happy-elementor-addons' ),
|
368 |
+
'bottom' => __( 'Bottom', 'happy-elementor-addons' ),
|
369 |
+
],
|
370 |
+
'condition' => [
|
371 |
+
'meta' => 'yes',
|
372 |
+
]
|
373 |
+
]
|
374 |
+
);
|
375 |
+
|
376 |
+
$this->add_control(
|
377 |
+
'title_tag',
|
378 |
+
[
|
379 |
+
'label' => __( 'Title HTML Tag', 'happy-elementor-addons' ),
|
380 |
+
'type' => Controls_Manager::CHOOSE,
|
381 |
+
'options' => [
|
382 |
+
'h1' => [
|
383 |
+
'title' => __( 'H1', 'happy-elementor-addons' ),
|
384 |
+
'icon' => 'eicon-editor-h1'
|
385 |
+
],
|
386 |
+
'h2' => [
|
387 |
+
'title' => __( 'H2', 'happy-elementor-addons' ),
|
388 |
+
'icon' => 'eicon-editor-h2'
|
389 |
+
],
|
390 |
+
'h3' => [
|
391 |
+
'title' => __( 'H3', 'happy-elementor-addons' ),
|
392 |
+
'icon' => 'eicon-editor-h3'
|
393 |
+
],
|
394 |
+
'h4' => [
|
395 |
+
'title' => __( 'H4', 'happy-elementor-addons' ),
|
396 |
+
'icon' => 'eicon-editor-h4'
|
397 |
+
],
|
398 |
+
'h5' => [
|
399 |
+
'title' => __( 'H5', 'happy-elementor-addons' ),
|
400 |
+
'icon' => 'eicon-editor-h5'
|
401 |
+
],
|
402 |
+
'h6' => [
|
403 |
+
'title' => __( 'H6', 'happy-elementor-addons' ),
|
404 |
+
'icon' => 'eicon-editor-h6'
|
405 |
+
]
|
406 |
+
],
|
407 |
+
'default' => 'h2',
|
408 |
+
'toggle' => false,
|
409 |
+
]
|
410 |
+
);
|
411 |
+
|
412 |
+
$this->add_control(
|
413 |
+
'item_align',
|
414 |
+
[
|
415 |
+
'label' => __( 'Alignment', 'happy-elementor-addons' ),
|
416 |
+
'type' => Controls_Manager::CHOOSE,
|
417 |
+
'options' => [
|
418 |
+
'left' => [
|
419 |
+
'title' => __( 'Left', 'happy-elementor-addons' ),
|
420 |
+
'icon' => 'fa fa-align-left',
|
421 |
+
],
|
422 |
+
'center' => [
|
423 |
+
'title' => __( 'Center', 'happy-elementor-addons' ),
|
424 |
+
'icon' => 'fa fa-align-center',
|
425 |
+
],
|
426 |
+
'right' => [
|
427 |
+
'title' => __( 'Right', 'happy-elementor-addons' ),
|
428 |
+
'icon' => 'fa fa-align-right',
|
429 |
+
],
|
430 |
+
],
|
431 |
+
'toggle' => true,
|
432 |
+
'selectors_dictionary' => [
|
433 |
+
'left' => 'justify-content: flex-start',
|
434 |
+
'center' => 'justify-content: center',
|
435 |
+
'right' => 'justify-content: flex-end',
|
436 |
+
],
|
437 |
+
'selectors' => [
|
438 |
+
'{{WRAPPER}} .ha-post-list .ha-post-list-item a' => '{{VALUE}};'
|
439 |
+
],
|
440 |
+
'condition' => [
|
441 |
+
'view' => 'list',
|
442 |
+
]
|
443 |
+
]
|
444 |
+
);
|
445 |
+
|
446 |
+
$this->end_controls_section();
|
447 |
+
}
|
448 |
+
|
449 |
+
protected function register_style_controls () {
|
450 |
+
|
451 |
+
$this->start_controls_section(
|
452 |
+
'_section_post_list_style',
|
453 |
+
[
|
454 |
+
'label' => __( 'List', 'happy-elementor-addons' ),
|
455 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
456 |
+
]
|
457 |
+
);
|
458 |
+
|
459 |
+
$this->add_responsive_control(
|
460 |
+
'list_item_common',
|
461 |
+
[
|
462 |
+
'label' => __( 'Common', 'happy-elementor-addons' ),
|
463 |
+
'type' => Controls_Manager::HEADING,
|
464 |
+
]
|
465 |
+
);
|
466 |
+
|
467 |
+
$this->add_responsive_control(
|
468 |
+
'list_item_margin',
|
469 |
+
[
|
470 |
+
'label' => __( 'Margin', 'happy-elementor-addons' ),
|
471 |
+
'type' => Controls_Manager::DIMENSIONS,
|
472 |
+
'size_units' => [ 'px', '%' ],
|
473 |
+
'selectors' => [
|
474 |
+
'{{WRAPPER}} .ha-post-list .ha-post-list-item' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
475 |
+
]
|
476 |
+
]
|
477 |
+
);
|
478 |
+
|
479 |
+
$this->add_responsive_control(
|
480 |
+
'list_item_padding',
|
481 |
+
[
|
482 |
+
'label' => __( 'Padding', 'happy-elementor-addons' ),
|
483 |
+
'type' => Controls_Manager::DIMENSIONS,
|
484 |
+
'size_units' => [ 'px', 'em', '%' ],
|
485 |
+
'selectors' => [
|
486 |
+
'{{WRAPPER}} .ha-post-list .ha-post-list-item a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
487 |
+
]
|
488 |
+
]
|
489 |
+
);
|
490 |
+
|
491 |
+
$this->add_group_control(
|
492 |
+
Group_Control_Background::get_type(),
|
493 |
+
[
|
494 |
+
'name' => 'list_item_background',
|
495 |
+
'label' => __( 'Background', 'happy-elementor-addons' ),
|
496 |
+
'types' => [ 'classic', 'gradient' ],
|
497 |
+
'selector' => '{{WRAPPER}} .ha-post-list .ha-post-list-item',
|
498 |
+
]
|
499 |
+
);
|
500 |
+
|
501 |
+
$this->add_group_control(
|
502 |
+
Group_Control_Box_Shadow::get_type(),
|
503 |
+
[
|
504 |
+
'name' => 'list_item_box_shadow',
|
505 |
+
'label' => __( 'Box Shadow', 'happy-elementor-addons' ),
|
506 |
+
'selector' => '{{WRAPPER}} .ha-post-list .ha-post-list-item',
|
507 |
+
]
|
508 |
+
);
|
509 |
+
|
510 |
+
$this->add_group_control(
|
511 |
+
Group_Control_Border::get_type(),
|
512 |
+
[
|
513 |
+
'name' => 'list_item_border',
|
514 |
+
'label' => __( 'Border', 'happy-elementor-addons' ),
|
515 |
+
'selector' => '{{WRAPPER}} .ha-post-list .ha-post-list-item',
|
516 |
+
]
|
517 |
+
);
|
518 |
+
|
519 |
+
$this->add_responsive_control(
|
520 |
+
'list_item_border_radius',
|
521 |
+
[
|
522 |
+
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
523 |
+
'type' => Controls_Manager::DIMENSIONS,
|
524 |
+
'size_units' => [ 'px', 'em', '%' ],
|
525 |
+
'selectors' => [
|
526 |
+
'{{WRAPPER}} .ha-post-list .ha-post-list-item' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
527 |
+
]
|
528 |
+
]
|
529 |
+
);
|
530 |
+
|
531 |
+
$this->add_control(
|
532 |
+
'advance_style',
|
533 |
+
[
|
534 |
+
'label' => __( 'Advance Style', 'happy-elementor-addons' ),
|
535 |
+
'type' => Controls_Manager::SWITCHER,
|
536 |
+
'label_on' => __( 'On', 'happy-elementor-addons' ),
|
537 |
+
'label_off' => __( 'Off', 'happy-elementor-addons' ),
|
538 |
+
'return_value' => 'yes',
|
539 |
+
'default' => '',
|
540 |
+
]
|
541 |
+
);
|
542 |
+
|
543 |
+
$this->add_responsive_control(
|
544 |
+
'list_item_first',
|
545 |
+
[
|
546 |
+
'label' => __( 'First Item', 'happy-elementor-addons' ),
|
547 |
+
'type' => Controls_Manager::HEADING,
|
548 |
+
'separator' => 'before',
|
549 |
+
'condition' => [
|
550 |
+
'advance_style' => 'yes',
|
551 |
+
]
|
552 |
+
]
|
553 |
+
);
|
554 |
+
|
555 |
+
$this->add_responsive_control(
|
556 |
+
'list_item_first_child_margin',
|
557 |
+
[
|
558 |
+
'label' => __( 'Margin', 'happy-elementor-addons' ),
|
559 |
+
'type' => Controls_Manager::DIMENSIONS,
|
560 |
+
'size_units' => [ 'px', '%' ],
|
561 |
+
'selectors' => [
|
562 |
+
'{{WRAPPER}} .ha-post-list .ha-post-list-item:first-child' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
563 |
+
],
|
564 |
+
'condition' => [
|
565 |
+
'advance_style' => 'yes',
|
566 |
+
]
|
567 |
+
]
|
568 |
+
);
|
569 |
+
|
570 |
+
$this->add_group_control(
|
571 |
+
Group_Control_Border::get_type(),
|
572 |
+
[
|
573 |
+
'name' => 'list_item_first_child_border',
|
574 |
+
'label' => __( 'Border', 'happy-elementor-addons' ),
|
575 |
+
'selector' => '{{WRAPPER}} .ha-post-list .ha-post-list-item:first-child',
|
576 |
+
'condition' => [
|
577 |
+
'advance_style' => 'yes',
|
578 |
+
]
|
579 |
+
]
|
580 |
+
);
|
581 |
+
|
582 |
+
$this->add_responsive_control(
|
583 |
+
'list_item_last',
|
584 |
+
[
|
585 |
+
'label' => __( 'Last Item', 'happy-elementor-addons' ),
|
586 |
+
'type' => Controls_Manager::HEADING,
|
587 |
+
'separator' => 'before',
|
588 |
+
'condition' => [
|
589 |
+
'advance_style' => 'yes',
|
590 |
+
]
|
591 |
+
]
|
592 |
+
);
|
593 |
+
|
594 |
+
$this->add_responsive_control(
|
595 |
+
'list_item_last_child_margin',
|
596 |
+
[
|
597 |
+
'label' => __( 'Margin', 'happy-elementor-addons' ),
|
598 |
+
'type' => Controls_Manager::DIMENSIONS,
|
599 |
+
'size_units' => [ 'px', '%' ],
|
600 |
+
'selectors' => [
|
601 |
+
'{{WRAPPER}} .ha-post-list .ha-post-list-item:last-child' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
602 |
+
],
|
603 |
+
'condition' => [
|
604 |
+
'advance_style' => 'yes',
|
605 |
+
]
|
606 |
+
]
|
607 |
+
);
|
608 |
+
|
609 |
+
$this->add_group_control(
|
610 |
+
Group_Control_Border::get_type(),
|
611 |
+
[
|
612 |
+
'name' => 'list_item_last_child_border',
|
613 |
+
'label' => __( 'Border', 'happy-elementor-addons' ),
|
614 |
+
'selector' => '{{WRAPPER}} .ha-post-list .ha-post-list-item:last-child',
|
615 |
+
'condition' => [
|
616 |
+
'advance_style' => 'yes',
|
617 |
+
]
|
618 |
+
]
|
619 |
+
);
|
620 |
+
|
621 |
+
$this->end_controls_section();
|
622 |
+
//Title Style
|
623 |
+
$this->start_controls_section(
|
624 |
+
'_section_post_list_title_style',
|
625 |
+
[
|
626 |
+
'label' => __( 'Title', 'happy-elementor-addons' ),
|
627 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
628 |
+
]
|
629 |
+
);
|
630 |
+
|
631 |
+
$this->add_group_control(
|
632 |
+
Group_Control_Typography::get_type(),
|
633 |
+
[
|
634 |
+
'name' => 'title_typography',
|
635 |
+
'label' => __( 'Typography', 'happy-elementor-addons' ),
|
636 |
+
'scheme' => Schemes\Typography::TYPOGRAPHY_2,
|
637 |
+
'selector' => '{{WRAPPER}} .ha-post-list-title',
|
638 |
+
]
|
639 |
+
);
|
640 |
+
|
641 |
+
$this->start_controls_tabs( 'title_tabs' );
|
642 |
+
$this->start_controls_tab(
|
643 |
+
'title_normal_tab',
|
644 |
+
[
|
645 |
+
'label' => __( 'Normal', 'happy-elementor-addons' ),
|
646 |
+
]
|
647 |
+
);
|
648 |
+
|
649 |
+
$this->add_control(
|
650 |
+
'title_color',
|
651 |
+
[
|
652 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
653 |
+
'type' => Controls_Manager::COLOR,
|
654 |
+
'selectors' => [
|
655 |
+
'{{WRAPPER}} .ha-post-list-title' => 'color: {{VALUE}}',
|
656 |
+
],
|
657 |
+
]
|
658 |
+
);
|
659 |
+
$this->end_controls_tab();
|
660 |
+
|
661 |
+
$this->start_controls_tab(
|
662 |
+
'title_hover_tab',
|
663 |
+
[
|
664 |
+
'label' => __( 'Hover', 'happy-elementor-addons' ),
|
665 |
+
]
|
666 |
+
);
|
667 |
+
|
668 |
+
$this->add_control(
|
669 |
+
'title_hvr_color',
|
670 |
+
[
|
671 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
672 |
+
'type' => Controls_Manager::COLOR,
|
673 |
+
'selectors' => [
|
674 |
+
'{{WRAPPER}} .ha-post-list .ha-post-list-item a:hover .ha-post-list-title' => 'color: {{VALUE}}',
|
675 |
+
],
|
676 |
+
]
|
677 |
+
);
|
678 |
+
$this->end_controls_tab();
|
679 |
+
$this->end_controls_tabs();
|
680 |
+
|
681 |
+
$this->end_controls_section();
|
682 |
+
//List Icon Style
|
683 |
+
$this->start_controls_section(
|
684 |
+
'_section_list_icon_feature_iamge_style',
|
685 |
+
[
|
686 |
+
'label' => __( 'Icon & Feature Image', 'happy-elementor-addons' ),
|
687 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
688 |
+
'conditions' => [
|
689 |
+
'relation' => 'or',
|
690 |
+
'terms' => [
|
691 |
+
[
|
692 |
+
'name' => 'feature_image',
|
693 |
+
'operator' => '==',
|
694 |
+
'value' => 'yes',
|
695 |
+
],
|
696 |
+
[
|
697 |
+
'name' => 'list_icon',
|
698 |
+
'operator' => '==',
|
699 |
+
'value' => 'yes',
|
700 |
+
],
|
701 |
+
],
|
702 |
+
],
|
703 |
+
]
|
704 |
+
);
|
705 |
+
|
706 |
+
$this->add_control(
|
707 |
+
'icon_color',
|
708 |
+
[
|
709 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
710 |
+
'type' => Controls_Manager::COLOR,
|
711 |
+
'default' => '',
|
712 |
+
'selectors' => [
|
713 |
+
'{{WRAPPER}} span.ha-post-list-icon' => 'color: {{VALUE}};',
|
714 |
+
],
|
715 |
+
'condition' => [
|
716 |
+
'feature_image!' => 'yes',
|
717 |
+
'list_icon' => 'yes',
|
718 |
+
]
|
719 |
+
]
|
720 |
+
);
|
721 |
+
|
722 |
+
$this->add_responsive_control(
|
723 |
+
'icon_size',
|
724 |
+
[
|
725 |
+
'label' => __( 'Font Size', 'happy-elementor-addons' ),
|
726 |
+
'type' => Controls_Manager::SLIDER,
|
727 |
+
'selectors' => [
|
728 |
+
'{{WRAPPER}} span.ha-post-list-icon' => 'font-size: {{SIZE}}{{UNIT}};',
|
729 |
+
],
|
730 |
+
'condition' => [
|
731 |
+
'feature_image!' => 'yes',
|
732 |
+
'list_icon' => 'yes',
|
733 |
+
]
|
734 |
+
]
|
735 |
+
);
|
736 |
+
|
737 |
+
$this->add_responsive_control(
|
738 |
+
'icon_line_height',
|
739 |
+
[
|
740 |
+
'label' => __( 'Line Height', 'happy-elementor-addons' ),
|
741 |
+
'type' => Controls_Manager::SLIDER,
|
742 |
+
'selectors' => [
|
743 |
+
'{{WRAPPER}} span.ha-post-list-icon' => 'line-height: {{SIZE}}{{UNIT}};',
|
744 |
+
],
|
745 |
+
'condition' => [
|
746 |
+
'feature_image!' => 'yes',
|
747 |
+
'list_icon' => 'yes',
|
748 |
+
]
|
749 |
+
]
|
750 |
+
);
|
751 |
+
|
752 |
+
$this->add_responsive_control(
|
753 |
+
'image_width',
|
754 |
+
[
|
755 |
+
'label' => __( 'Image Width', 'happy-elementor-addons' ),
|
756 |
+
'type' => Controls_Manager::SLIDER,
|
757 |
+
'range' => [
|
758 |
+
'px' => [
|
759 |
+
'min' => 0,
|
760 |
+
'max' => 1000,
|
761 |
+
'step' => 1,
|
762 |
+
],
|
763 |
+
],
|
764 |
+
'selectors' => [
|
765 |
+
'{{WRAPPER}} .ha-post-list-item a img' => 'width: {{SIZE}}{{UNIT}};',
|
766 |
+
],
|
767 |
+
'condition' => [
|
768 |
+
'feature_image' => 'yes',
|
769 |
+
]
|
770 |
+
]
|
771 |
+
);
|
772 |
+
|
773 |
+
$this->add_group_control(
|
774 |
+
Group_Control_Border::get_type(),
|
775 |
+
[
|
776 |
+
'name' => 'image_boder',
|
777 |
+
'label' => __( 'Border', 'happy-elementor-addons' ),
|
778 |
+
'selector' => '{{WRAPPER}} .ha-post-list-item a img',
|
779 |
+
'condition' => [
|
780 |
+
'feature_image' => 'yes',
|
781 |
+
]
|
782 |
+
]
|
783 |
+
);
|
784 |
+
|
785 |
+
$this->add_responsive_control(
|
786 |
+
'image_boder_radius',
|
787 |
+
[
|
788 |
+
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
789 |
+
'type' => Controls_Manager::DIMENSIONS,
|
790 |
+
'size_units' => [ 'px', '%' ],
|
791 |
+
'selectors' => [
|
792 |
+
'{{WRAPPER}} .ha-post-list-item a img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
793 |
+
],
|
794 |
+
'condition' => [
|
795 |
+
'feature_image' => 'yes',
|
796 |
+
]
|
797 |
+
]
|
798 |
+
);
|
799 |
+
|
800 |
+
$this->add_responsive_control(
|
801 |
+
'icon_margin_right',
|
802 |
+
[
|
803 |
+
'label' => __( 'Margin Right', 'happy-elementor-addons' ),
|
804 |
+
'type' => Controls_Manager::SLIDER,
|
805 |
+
'selectors' => [
|
806 |
+
'{{WRAPPER}} span.ha-post-list-icon' => 'margin-right: {{SIZE}}{{UNIT}};',
|
807 |
+
'{{WRAPPER}} .ha-post-list-item a img' => 'margin-right: {{SIZE}}{{UNIT}};',
|
808 |
+
],
|
809 |
+
]
|
810 |
+
);
|
811 |
+
|
812 |
+
$this->end_controls_section();
|
813 |
+
//List Meta Style
|
814 |
+
$this->start_controls_section(
|
815 |
+
'_section_list_meta_style',
|
816 |
+
[
|
817 |
+
'label' => __( 'Meta', 'happy-elementor-addons' ),
|
818 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
819 |
+
'condition' => [
|
820 |
+
'meta' => 'yes',
|
821 |
+
]
|
822 |
+
]
|
823 |
+
);
|
824 |
+
|
825 |
+
$this->add_group_control(
|
826 |
+
Group_Control_Typography::get_type(),
|
827 |
+
[
|
828 |
+
'name' => 'meta_typography',
|
829 |
+
'label' => __( 'Typography', 'happy-elementor-addons' ),
|
830 |
+
'scheme' => Schemes\Typography::TYPOGRAPHY_3,
|
831 |
+
'selector' => '{{WRAPPER}} .ha-post-list-meta-wrap span',
|
832 |
+
]
|
833 |
+
);
|
834 |
+
|
835 |
+
$this->add_control(
|
836 |
+
'meta_color',
|
837 |
+
[
|
838 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
839 |
+
'type' => Controls_Manager::COLOR,
|
840 |
+
'default' => '',
|
841 |
+
'selectors' => [
|
842 |
+
'{{WRAPPER}} .ha-post-list-meta-wrap span' => 'color: {{VALUE}};',
|
843 |
+
],
|
844 |
+
]
|
845 |
+
);
|
846 |
+
|
847 |
+
$this->add_responsive_control(
|
848 |
+
'meta_space',
|
849 |
+
[
|
850 |
+
'label' => __( 'Space Between', 'happy-elementor-addons' ),
|
851 |
+
'type' => Controls_Manager::SLIDER,
|
852 |
+
'selectors' => [
|
853 |
+
'{{WRAPPER}} .ha-post-list-meta-wrap span' => 'margin-right: {{SIZE}}{{UNIT}};',
|
854 |
+
'{{WRAPPER}} .ha-post-list-meta-wrap span:last-child' => 'margin-right: 0;',
|
855 |
+
],
|
856 |
+
]
|
857 |
+
);
|
858 |
+
|
859 |
+
$this->add_responsive_control(
|
860 |
+
'meta_box_margin',
|
861 |
+
[
|
862 |
+
'label' => __( 'Margin', 'happy-elementor-addons' ),
|
863 |
+
'type' => Controls_Manager::DIMENSIONS,
|
864 |
+
'size_units' => [ 'px', '%' ],
|
865 |
+
'selectors' => [
|
866 |
+
'{{WRAPPER}} .ha-post-list-meta-wrap' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
867 |
+
]
|
868 |
+
]
|
869 |
+
);
|
870 |
+
|
871 |
+
$this->add_responsive_control(
|
872 |
+
'meta_icon_heading',
|
873 |
+
[
|
874 |
+
'label' => __( 'Meta Icon', 'happy-elementor-addons' ),
|
875 |
+
'type' => Controls_Manager::HEADING,
|
876 |
+
'separator' => 'before',
|
877 |
+
]
|
878 |
+
);
|
879 |
+
|
880 |
+
$this->add_control(
|
881 |
+
'meta_icon_color',
|
882 |
+
[
|
883 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
884 |
+
'type' => Controls_Manager::COLOR,
|
885 |
+
'default' => '',
|
886 |
+
'selectors' => [
|
887 |
+
'{{WRAPPER}} .ha-post-list-meta-wrap span i' => 'color: {{VALUE}};',
|
888 |
+
],
|
889 |
+
]
|
890 |
+
);
|
891 |
+
|
892 |
+
$this->add_responsive_control(
|
893 |
+
'meta_icon_space',
|
894 |
+
[
|
895 |
+
'label' => __( 'Space Between', 'happy-elementor-addons' ),
|
896 |
+
'type' => Controls_Manager::SLIDER,
|
897 |
+
'selectors' => [
|
898 |
+
'{{WRAPPER}} .ha-post-list-meta-wrap span i' => 'margin-right: {{SIZE}}{{UNIT}};',
|
899 |
+
],
|
900 |
+
]
|
901 |
+
);
|
902 |
+
|
903 |
+
$this->end_controls_section();
|
904 |
+
}
|
905 |
+
|
906 |
+
protected function render () {
|
907 |
+
|
908 |
+
$settings = $this->get_settings_for_display();
|
909 |
+
if ( ! $settings['post_type'] ) return;
|
910 |
+
$args = [
|
911 |
+
'post_status' => 'publish',
|
912 |
+
'post_type' => $settings['post_type'],
|
913 |
+
];
|
914 |
+
if ( 'recent' === $settings['show_post_by'] ) {
|
915 |
+
$args['posts_per_page'] = $settings['posts_per_page'];
|
916 |
+
}
|
917 |
+
|
918 |
+
$customize_title = [];
|
919 |
+
$ids = [];
|
920 |
+
if ( 'selected' === $settings['show_post_by'] ) {
|
921 |
+
$args['posts_per_page'] = -1;
|
922 |
+
$lists = $settings['selected_list_' . $settings['post_type']];
|
923 |
+
if ( ! empty( $lists ) ) {
|
924 |
+
foreach ( $lists as $index => $value ) {
|
925 |
+
$ids[] = $value['post_id'];
|
926 |
+
if ( $value['title'] ) $customize_title[$value['post_id']] = $value['title'];
|
927 |
+
}
|
928 |
+
}
|
929 |
+
$args['post__in'] = (array) $ids;
|
930 |
+
$args['orderby'] = 'post__in';
|
931 |
+
}
|
932 |
+
|
933 |
+
if ( 'selected' === $settings['show_post_by'] && empty( $ids ) ) {
|
934 |
+
$posts = [];
|
935 |
+
} else {
|
936 |
+
$posts = get_posts( $args );
|
937 |
+
}
|
938 |
+
|
939 |
+
$this->add_render_attribute( 'wrapper', 'class', [ 'ha-post-list-wrapper' ] );
|
940 |
+
$this->add_render_attribute( 'wrapper-inner', 'class', [ 'ha-post-list' ] );
|
941 |
+
if ( 'inline' === $settings['view'] ) {
|
942 |
+
$this->add_render_attribute( 'wrapper-inner', 'class', [ 'ha-post-list-inline' ] );
|
943 |
+
}
|
944 |
+
$this->add_render_attribute( 'item', 'class', [ 'ha-post-list-item' ] );
|
945 |
+
|
946 |
+
if ( count( $posts ) !== 0 ) :?>
|
947 |
+
<div <?php $this->print_render_attribute_string( 'wrapper' ); ?>>
|
948 |
+
<ul <?php $this->print_render_attribute_string( 'wrapper-inner' ); ?> >
|
949 |
+
<?php foreach ( $posts as $post ): ?>
|
950 |
+
<li <?php $this->print_render_attribute_string( 'item' ); ?>>
|
951 |
+
<a href="<?php echo esc_url( get_the_permalink( $post->ID ) ); ?>">
|
952 |
+
<?php if ( 'yes' === $settings['feature_image'] ):
|
953 |
+
echo get_the_post_thumbnail( $post->ID, $settings['post_image_size'] );
|
954 |
+
elseif ( 'yes' === $settings['list_icon'] && $settings['icon'] ) :
|
955 |
+
echo '<span class="ha-post-list-icon">';
|
956 |
+
Icons_Manager::render_icon( $settings['icon'], [ 'aria-hidden' => 'true' ] );
|
957 |
+
echo '</span>';
|
958 |
+
endif; ?>
|
959 |
+
<div class="ha-post-list-content">
|
960 |
+
<?php
|
961 |
+
$title = $post->post_title;
|
962 |
+
if ( 'selected' === $settings['show_post_by'] && array_key_exists( $post->ID, $customize_title ) ) {
|
963 |
+
$title = $customize_title[$post->ID];
|
964 |
+
}
|
965 |
+
if ( 'top' !== $settings['meta_position'] && $title ) {
|
966 |
+
printf( '<%1$s %2$s>%3$s</%1$s>',
|
967 |
+
tag_escape( $settings['title_tag'] ),
|
968 |
+
'class="ha-post-list-title"',
|
969 |
+
esc_html( $title )
|
970 |
+
);
|
971 |
+
}
|
972 |
+
?>
|
973 |
+
<?php if ( 'yes' === $settings['meta'] ): ?>
|
974 |
+
<div class="ha-post-list-meta-wrap">
|
975 |
+
|
976 |
+
<?php if ( 'yes' === $settings['author_meta'] ):
|
977 |
+
?>
|
978 |
+
<span class="ha-post-list-author">
|
979 |
+
<?php if ( $settings['author_icon'] ):
|
980 |
+
Icons_Manager::render_icon( $settings['author_icon'], [ 'aria-hidden' => 'true' ] );
|
981 |
+
endif;
|
982 |
+
echo esc_html( get_the_author_meta( 'display_name', $post->post_author ) ); ?>
|
983 |
+
</span>
|
984 |
+
<?php endif; ?>
|
985 |
+
|
986 |
+
<?php if ( 'yes' === $settings['date_meta'] ): ?>
|
987 |
+
<span class="ha-post-list-date">
|
988 |
+
<?php if ( $settings['date_icon'] ):
|
989 |
+
Icons_Manager::render_icon( $settings['date_icon'], [ 'aria-hidden' => 'true' ] );
|
990 |
+
endif;
|
991 |
+
echo get_the_date( "M d, Y" );
|
992 |
+
?>
|
993 |
+
</span>
|
994 |
+
<?php endif; ?>
|
995 |
+
|
996 |
+
<?php if ( 'post' === $settings['post_type'] && 'yes' === $settings['category_meta'] ):
|
997 |
+
$categories = get_the_category( $post->ID );
|
998 |
+
?>
|
999 |
+
<span class="ha-post-list-category">
|
1000 |
+
<?php if ( $settings['category_icon'] ):
|
1001 |
+
Icons_Manager::render_icon( $settings['category_icon'], [ 'aria-hidden' => 'true' ] );
|
1002 |
+
endif;
|
1003 |
+
echo esc_html( $categories[0]->name ); ?>
|
1004 |
+
</span>
|
1005 |
+
<?php endif; ?>
|
1006 |
+
|
1007 |
+
</div>
|
1008 |
+
<?php endif; ?>
|
1009 |
+
<?php
|
1010 |
+
if ( 'top' === $settings['meta_position'] && $title ) {
|
1011 |
+
printf( '<%1$s %2$s>%3$s</%1$s>',
|
1012 |
+
tag_escape( $settings['title_tag'] ),
|
1013 |
+
'class="ha-post-list-title"',
|
1014 |
+
esc_html( $title )
|
1015 |
+
);
|
1016 |
+
}
|
1017 |
+
?>
|
1018 |
+
</div>
|
1019 |
+
</a>
|
1020 |
+
</li>
|
1021 |
+
<?php endforeach; ?>
|
1022 |
+
</ul>
|
1023 |
+
</div>
|
1024 |
+
<?php
|
1025 |
+
else:
|
1026 |
+
printf( '%1$s %2$s %3$s',
|
1027 |
+
__( 'No ', 'happy-elementor-addons' ),
|
1028 |
+
esc_html( $settings['post_type'] ),
|
1029 |
+
__( 'Found', 'happy-elementor-addons' )
|
1030 |
+
);
|
1031 |
+
endif;
|
1032 |
+
}
|
1033 |
+
}
|
widgets/post-tab/widget.php
ADDED
@@ -0,0 +1,935 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Post Tab widget class
|
4 |
+
*
|
5 |
+
* @package Happy_Addons
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace Happy_Addons\Elementor\Widget;
|
9 |
+
|
10 |
+
use Elementor\Controls_Manager;
|
11 |
+
use Elementor\Group_Control_Border;
|
12 |
+
use Elementor\Group_Control_Box_Shadow;
|
13 |
+
use Elementor\Group_Control_Typography;
|
14 |
+
use Elementor\Scheme_Typography;
|
15 |
+
use Elementor\Group_Control_Background;
|
16 |
+
use Happy_Addons\Elementor\Controls\Select2;
|
17 |
+
|
18 |
+
defined( 'ABSPATH' ) || die();
|
19 |
+
|
20 |
+
class Post_Tab extends Base {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Get widget title.
|
24 |
+
*
|
25 |
+
* @return string Widget title.
|
26 |
+
* @since 1.0.0
|
27 |
+
* @access public
|
28 |
+
*
|
29 |
+
*/
|
30 |
+
public function get_title () {
|
31 |
+
return __( 'Post Tab', 'happy-elementor-addons' );
|
32 |
+
}
|
33 |
+
|
34 |
+
public function get_custom_help_url () {
|
35 |
+
return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/post-tab/';
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Get widget icon.
|
40 |
+
*
|
41 |
+
* @return string Widget icon.
|
42 |
+
* @since 1.0.0
|
43 |
+
* @access public
|
44 |
+
*
|
45 |
+
*/
|
46 |
+
public function get_icon () {
|
47 |
+
return 'hm hm-post-tab';
|
48 |
+
}
|
49 |
+
|
50 |
+
public function get_keywords () {
|
51 |
+
return [ 'posts', 'post', 'post-tab', 'tab', 'news' ];
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Get a list of All Post Types
|
56 |
+
*
|
57 |
+
* @return array
|
58 |
+
*/
|
59 |
+
public static function get_post_types () {
|
60 |
+
$diff_key = [
|
61 |
+
'elementor_library' => '',
|
62 |
+
'attachment' => '',
|
63 |
+
'page' => ''
|
64 |
+
];
|
65 |
+
$post_types = ha_get_post_types( [], $diff_key );
|
66 |
+
return $post_types;
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Get a list of Taxonomy
|
71 |
+
*
|
72 |
+
* @return array
|
73 |
+
*/
|
74 |
+
public static function get_taxonomies ( $post_type = '' ) {
|
75 |
+
$list = [];
|
76 |
+
if ( $post_type ) {
|
77 |
+
$tax = ha_get_taxonomies( [ 'public' => true, "object_type" => [ $post_type ] ], 'object', true );
|
78 |
+
$list[$post_type] = count( $tax ) !== 0 ? $tax : '';
|
79 |
+
} else {
|
80 |
+
$list = ha_get_taxonomies( [ 'public' => true ], 'object', true );
|
81 |
+
}
|
82 |
+
return $list;
|
83 |
+
}
|
84 |
+
|
85 |
+
protected function register_content_controls () {
|
86 |
+
$this->start_controls_section(
|
87 |
+
'_section_post_tab_query',
|
88 |
+
[
|
89 |
+
'label' => __( 'Query', 'happy-elementor-addons' ),
|
90 |
+
'tab' => Controls_Manager::TAB_CONTENT,
|
91 |
+
]
|
92 |
+
);
|
93 |
+
|
94 |
+
$this->add_control(
|
95 |
+
'post_type',
|
96 |
+
[
|
97 |
+
'label' => __( 'Source', 'happy-elementor-addons' ),
|
98 |
+
'type' => Controls_Manager::SELECT,
|
99 |
+
'options' => $this->get_post_types(),
|
100 |
+
'default' => key( $this->get_post_types() ),
|
101 |
+
]
|
102 |
+
);
|
103 |
+
|
104 |
+
foreach ( self::get_post_types() as $key => $value ) {
|
105 |
+
$taxonomy = self::get_taxonomies( $key );
|
106 |
+
if ( ! $taxonomy[$key] )
|
107 |
+
continue;
|
108 |
+
$this->add_control(
|
109 |
+
'tax_type_' . $key,
|
110 |
+
[
|
111 |
+
'label' => __( 'Taxonomies', 'happy-elementor-addons' ),
|
112 |
+
'type' => Controls_Manager::SELECT,
|
113 |
+
'options' => $taxonomy[$key],
|
114 |
+
'default' => key( $taxonomy[$key] ),
|
115 |
+
'condition' => [
|
116 |
+
'post_type' => $key
|
117 |
+
],
|
118 |
+
]
|
119 |
+
);
|
120 |
+
|
121 |
+
foreach ( $taxonomy[$key] as $tax_key => $tax_value ) {
|
122 |
+
|
123 |
+
$this->add_control(
|
124 |
+
'tax_ids_' . $tax_key,
|
125 |
+
[
|
126 |
+
'label' => __( 'Select ', 'happy-elementor-addons' ) . $tax_value,
|
127 |
+
'label_block' => true,
|
128 |
+
'type' => Select2::TYPE,
|
129 |
+
'multiple' => true,
|
130 |
+
'placeholder' => 'Search ' . $tax_value,
|
131 |
+
'data_options' => [
|
132 |
+
'tax_id' => $tax_key,
|
133 |
+
'action' => 'ha_post_tab_select_query'
|
134 |
+
],
|
135 |
+
'condition' => [
|
136 |
+
'post_type' => $key,
|
137 |
+
'tax_type_' . $key => $tax_key
|
138 |
+
],
|
139 |
+
'render_type' => 'template',
|
140 |
+
]
|
141 |
+
);
|
142 |
+
}
|
143 |
+
}
|
144 |
+
|
145 |
+
$this->add_control(
|
146 |
+
'item_limit',
|
147 |
+
[
|
148 |
+
'label' => __( 'Item Limit', 'happy-elementor-addons' ),
|
149 |
+
'type' => Controls_Manager::NUMBER,
|
150 |
+
'default' => 3,
|
151 |
+
'dynamic' => [ 'active' => true ],
|
152 |
+
]
|
153 |
+
);
|
154 |
+
|
155 |
+
$this->end_controls_section();
|
156 |
+
|
157 |
+
//Settings
|
158 |
+
$this->start_controls_section(
|
159 |
+
'_section_settings',
|
160 |
+
[
|
161 |
+
'label' => __( 'Settings', 'happy-elementor-addons' ),
|
162 |
+
'tab' => Controls_Manager::TAB_CONTENT,
|
163 |
+
]
|
164 |
+
);
|
165 |
+
|
166 |
+
$this->add_responsive_control(
|
167 |
+
'column',
|
168 |
+
[
|
169 |
+
'label' => __( 'Column', 'happy-elementor-addons' ),
|
170 |
+
'type' => Controls_Manager::SELECT,
|
171 |
+
'options' => [
|
172 |
+
'1' => __( '1 Column', 'happy-elementor-addons' ),
|
173 |
+
'2' => __( '2 Column', 'happy-elementor-addons' ),
|
174 |
+
'3' => __( '3 Column', 'happy-elementor-addons' ),
|
175 |
+
'4' => __( '4 Column', 'happy-elementor-addons' ),
|
176 |
+
'5' => __( '5 Column', 'happy-elementor-addons' ),
|
177 |
+
'6' => __( '6 Column', 'happy-elementor-addons' ),
|
178 |
+
],
|
179 |
+
'desktop_default' => '4',
|
180 |
+
'tablet_default' => '3',
|
181 |
+
'mobile_default' => '1',
|
182 |
+
'selectors' => [
|
183 |
+
'(desktop){{WRAPPER}} .ha-post-tab .ha-post-tab-item' => 'flex-basis: calc(100% / {{VALUE}});',
|
184 |
+
'(tablet){{WRAPPER}} .ha-post-tab .ha-post-tab-item' => 'flex-basis: calc(100% / {{column_tablet.VALUE}});',
|
185 |
+
'(mobile){{WRAPPER}} .ha-post-tab .ha-post-tab-item' => 'flex-basis: calc(100% / {{column_mobile.VALUE}});'
|
186 |
+
],
|
187 |
+
'render_type' => 'template',
|
188 |
+
'style_transfer' => true,
|
189 |
+
]
|
190 |
+
);
|
191 |
+
|
192 |
+
$this->add_control(
|
193 |
+
'excerpt',
|
194 |
+
[
|
195 |
+
'label' => __( 'Show Excerpt', 'happy-elementor-addons' ),
|
196 |
+
'type' => Controls_Manager::SWITCHER,
|
197 |
+
'label_on' => __( 'Show', 'happy-elementor-addons' ),
|
198 |
+
'label_off' => __( 'Hide', 'happy-elementor-addons' ),
|
199 |
+
'return_value' => 'yes',
|
200 |
+
'default' => '',
|
201 |
+
]
|
202 |
+
);
|
203 |
+
|
204 |
+
$this->add_control(
|
205 |
+
'filter_pos',
|
206 |
+
[
|
207 |
+
'label' => __( 'Filter Position', 'happy-elementor-addons' ),
|
208 |
+
'label_block' => false,
|
209 |
+
'type' => Controls_Manager::CHOOSE,
|
210 |
+
'default' => 'top',
|
211 |
+
'options' => [
|
212 |
+
'left' => [
|
213 |
+
'title' => __( 'Left', 'happy-elementor-addons' ),
|
214 |
+
'icon' => 'eicon-h-align-left',
|
215 |
+
],
|
216 |
+
'top' => [
|
217 |
+
'title' => __( 'Top', 'happy-elementor-addons' ),
|
218 |
+
'icon' => 'eicon-v-align-top',
|
219 |
+
],
|
220 |
+
'right' => [
|
221 |
+
'title' => __( 'Right', 'happy-elementor-addons' ),
|
222 |
+
'icon' => 'eicon-h-align-right',
|
223 |
+
],
|
224 |
+
],
|
225 |
+
'style_transfer' => true,
|
226 |
+
]
|
227 |
+
);
|
228 |
+
|
229 |
+
$this->add_control(
|
230 |
+
'filter_align',
|
231 |
+
[
|
232 |
+
'label' => __( 'Filter Align', 'happy-elementor-addons' ),
|
233 |
+
'label_block' => false,
|
234 |
+
'type' => Controls_Manager::CHOOSE,
|
235 |
+
'default' => 'left',
|
236 |
+
'options' => [
|
237 |
+
'left' => [
|
238 |
+
'title' => __( 'Left', 'happy-elementor-addons' ),
|
239 |
+
'icon' => 'fa fa-align-left',
|
240 |
+
],
|
241 |
+
'center' => [
|
242 |
+
'title' => __( 'Center', 'happy-elementor-addons' ),
|
243 |
+
'icon' => 'fa fa-align-center',
|
244 |
+
],
|
245 |
+
'right' => [
|
246 |
+
'title' => __( 'Right', 'happy-elementor-addons' ),
|
247 |
+
'icon' => 'fa fa-align-right',
|
248 |
+
],
|
249 |
+
],
|
250 |
+
'condition' => [
|
251 |
+
'filter_pos' => 'top',
|
252 |
+
],
|
253 |
+
'selectors' => [
|
254 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-filter' => 'text-align: {{VALUE}};',
|
255 |
+
],
|
256 |
+
'style_transfer' => true,
|
257 |
+
]
|
258 |
+
);
|
259 |
+
|
260 |
+
|
261 |
+
$this->add_responsive_control(
|
262 |
+
'event',
|
263 |
+
[
|
264 |
+
'label' => __( 'Tab action', 'happy-elementor-addons' ),
|
265 |
+
'type' => Controls_Manager::SELECT,
|
266 |
+
'options' => [
|
267 |
+
'click' => __( 'On Click', 'happy-elementor-addons' ),
|
268 |
+
'hover' => __( 'On Hover', 'happy-elementor-addons' ),
|
269 |
+
],
|
270 |
+
'default' => 'click',
|
271 |
+
'render_type' => 'template',
|
272 |
+
'style_transfer' => true,
|
273 |
+
]
|
274 |
+
);
|
275 |
+
|
276 |
+
$this->end_controls_section();
|
277 |
+
}
|
278 |
+
|
279 |
+
protected function register_style_controls () {
|
280 |
+
|
281 |
+
$this->start_controls_section(
|
282 |
+
'_section_post_tab_filter',
|
283 |
+
[
|
284 |
+
'label' => __( 'Tab', 'happy-elementor-addons' ),
|
285 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
286 |
+
]
|
287 |
+
);
|
288 |
+
|
289 |
+
$this->add_responsive_control(
|
290 |
+
'tab_margin_btm',
|
291 |
+
[
|
292 |
+
'label' => __( 'Margin Bottom', 'happy-elementor-addons' ),
|
293 |
+
'type' => Controls_Manager::SLIDER,
|
294 |
+
'default' => [
|
295 |
+
'unit' => 'px',
|
296 |
+
'size' => 30,
|
297 |
+
],
|
298 |
+
'selectors' => [
|
299 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-filter' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
300 |
+
],
|
301 |
+
'condition' => [
|
302 |
+
'filter_pos' => 'top',
|
303 |
+
],
|
304 |
+
]
|
305 |
+
);
|
306 |
+
|
307 |
+
$this->add_responsive_control(
|
308 |
+
'tab_padding',
|
309 |
+
[
|
310 |
+
'label' => __( 'Padding', 'happy-elementor-addons' ),
|
311 |
+
'type' => Controls_Manager::DIMENSIONS,
|
312 |
+
'size_units' => [ 'px', 'em', '%' ],
|
313 |
+
'selectors' => [
|
314 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-filter' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
315 |
+
]
|
316 |
+
]
|
317 |
+
);
|
318 |
+
|
319 |
+
$this->add_group_control(
|
320 |
+
Group_Control_Box_Shadow::get_type(),
|
321 |
+
[
|
322 |
+
'name' => 'tab_shadow',
|
323 |
+
'label' => __( 'Box Shadow', 'happy-elementor-addons' ),
|
324 |
+
'selector' => '{{WRAPPER}} .ha-post-tab .ha-post-tab-filter',
|
325 |
+
]
|
326 |
+
);
|
327 |
+
|
328 |
+
$this->add_group_control(
|
329 |
+
Group_Control_Border::get_type(),
|
330 |
+
[
|
331 |
+
'name' => 'tab_border',
|
332 |
+
'label' => __( 'Border', 'happy-elementor-addons' ),
|
333 |
+
'selector' => '{{WRAPPER}} .ha-post-tab .ha-post-tab-filter',
|
334 |
+
]
|
335 |
+
);
|
336 |
+
|
337 |
+
$this->add_responsive_control(
|
338 |
+
'tab_item',
|
339 |
+
[
|
340 |
+
'label' => __( 'Tab Item', 'happy-elementor-addons' ),
|
341 |
+
'type' => Controls_Manager::HEADING,
|
342 |
+
'separator' => 'before',
|
343 |
+
]
|
344 |
+
);
|
345 |
+
|
346 |
+
$this->add_responsive_control(
|
347 |
+
'tab_item_margin',
|
348 |
+
[
|
349 |
+
'label' => __( 'Margin', 'happy-elementor-addons' ),
|
350 |
+
'type' => Controls_Manager::DIMENSIONS,
|
351 |
+
'size_units' => [ 'px', '%' ],
|
352 |
+
'selectors' => [
|
353 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-filter li' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
354 |
+
],
|
355 |
+
]
|
356 |
+
);
|
357 |
+
|
358 |
+
$this->add_responsive_control(
|
359 |
+
'tab_item_padding',
|
360 |
+
[
|
361 |
+
'label' => __( 'Padding', 'happy-elementor-addons' ),
|
362 |
+
'type' => Controls_Manager::DIMENSIONS,
|
363 |
+
'size_units' => [ 'px', 'em', '%' ],
|
364 |
+
'selectors' => [
|
365 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-filter li' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
366 |
+
]
|
367 |
+
]
|
368 |
+
);
|
369 |
+
|
370 |
+
$this->start_controls_tabs( 'tab_item_tabs' );
|
371 |
+
$this->start_controls_tab(
|
372 |
+
'tab_item_normal_tab',
|
373 |
+
[
|
374 |
+
'label' => __( 'Normal', 'happy-elementor-addons' ),
|
375 |
+
]
|
376 |
+
);
|
377 |
+
|
378 |
+
$this->add_control(
|
379 |
+
'tab_item_color',
|
380 |
+
[
|
381 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
382 |
+
'type' => Controls_Manager::COLOR,
|
383 |
+
'selectors' => [
|
384 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-filter li' => 'color: {{VALUE}}',
|
385 |
+
],
|
386 |
+
]
|
387 |
+
);
|
388 |
+
|
389 |
+
$this->add_group_control(
|
390 |
+
Group_Control_Background::get_type(),
|
391 |
+
[
|
392 |
+
'name' => 'tab_item_background',
|
393 |
+
'label' => __( 'Background', 'happy-elementor-addons' ),
|
394 |
+
'types' => [ 'classic', 'gradient' ],
|
395 |
+
'selector' => '{{WRAPPER}} .ha-post-tab .ha-post-tab-filter li',
|
396 |
+
]
|
397 |
+
);
|
398 |
+
|
399 |
+
$this->end_controls_tab();
|
400 |
+
|
401 |
+
$this->start_controls_tab(
|
402 |
+
'tab_item_hover_tab',
|
403 |
+
[
|
404 |
+
'label' => __( 'Hover', 'happy-elementor-addons' ),
|
405 |
+
]
|
406 |
+
);
|
407 |
+
|
408 |
+
$this->add_control(
|
409 |
+
'tab_item_hvr_color',
|
410 |
+
[
|
411 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
412 |
+
'type' => Controls_Manager::COLOR,
|
413 |
+
'selectors' => [
|
414 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-filter li.active' => 'color: {{VALUE}}',
|
415 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-filter li:hover' => 'color: {{VALUE}}',
|
416 |
+
],
|
417 |
+
]
|
418 |
+
);
|
419 |
+
|
420 |
+
|
421 |
+
$this->add_group_control(
|
422 |
+
Group_Control_Background::get_type(),
|
423 |
+
[
|
424 |
+
'name' => 'tab_item_hvr_background',
|
425 |
+
'label' => __( 'Background', 'happy-elementor-addons' ),
|
426 |
+
'types' => [ 'classic', 'gradient' ],
|
427 |
+
'selector' => '{{WRAPPER}} .ha-post-tab .ha-post-tab-filter li.active,{{WRAPPER}} .ha-post-tab .ha-post-tab-filter li:hover',
|
428 |
+
]
|
429 |
+
);
|
430 |
+
$this->end_controls_tab();
|
431 |
+
$this->end_controls_tabs();
|
432 |
+
|
433 |
+
$this->add_group_control(
|
434 |
+
Group_Control_Typography::get_type(),
|
435 |
+
[
|
436 |
+
'name' => 'tab_item_typography',
|
437 |
+
'label' => __( 'Typography', 'happy-elementor-addons' ),
|
438 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_2,
|
439 |
+
'selector' => '{{WRAPPER}} .ha-post-tab .ha-post-tab-filter li',
|
440 |
+
]
|
441 |
+
);
|
442 |
+
|
443 |
+
$this->add_group_control(
|
444 |
+
Group_Control_Border::get_type(),
|
445 |
+
[
|
446 |
+
'name' => 'tab_item_border',
|
447 |
+
'label' => __( 'Border', 'happy-elementor-addons' ),
|
448 |
+
'selector' => '{{WRAPPER}} .ha-post-tab .ha-post-tab-filter li',
|
449 |
+
]
|
450 |
+
);
|
451 |
+
|
452 |
+
$this->add_responsive_control(
|
453 |
+
'tab_item_border_radius',
|
454 |
+
[
|
455 |
+
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
456 |
+
'type' => Controls_Manager::DIMENSIONS,
|
457 |
+
'size_units' => [ 'px', 'em', '%' ],
|
458 |
+
'selectors' => [
|
459 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-filter li' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
460 |
+
]
|
461 |
+
]
|
462 |
+
);
|
463 |
+
$this->end_controls_section();
|
464 |
+
|
465 |
+
//Column
|
466 |
+
$this->start_controls_section(
|
467 |
+
'_section_post_tab_column',
|
468 |
+
[
|
469 |
+
'label' => __( 'Column', 'happy-elementor-addons' ),
|
470 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
471 |
+
]
|
472 |
+
);
|
473 |
+
|
474 |
+
$this->add_responsive_control(
|
475 |
+
'post_item_space',
|
476 |
+
[
|
477 |
+
'label' => __( 'Space Between', 'happy-elementor-addons' ),
|
478 |
+
'type' => Controls_Manager::SLIDER,
|
479 |
+
'default' => [
|
480 |
+
'unit' => 'px',
|
481 |
+
'size' => 15,
|
482 |
+
],
|
483 |
+
'selectors' => [
|
484 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-item' => 'padding-left: {{SIZE}}{{UNIT}};padding-right: {{SIZE}}{{UNIT}};',
|
485 |
+
],
|
486 |
+
]
|
487 |
+
);
|
488 |
+
|
489 |
+
$this->add_responsive_control(
|
490 |
+
'post_item_margin_btm',
|
491 |
+
[
|
492 |
+
'label' => __( 'Margin Bottom', 'happy-elementor-addons' ),
|
493 |
+
'type' => Controls_Manager::SLIDER,
|
494 |
+
'default' => [
|
495 |
+
'unit' => 'px',
|
496 |
+
'size' => 30,
|
497 |
+
],
|
498 |
+
'selectors' => [
|
499 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-item' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
500 |
+
],
|
501 |
+
]
|
502 |
+
);
|
503 |
+
|
504 |
+
$this->add_responsive_control(
|
505 |
+
'post_item_padding',
|
506 |
+
[
|
507 |
+
'label' => __( 'Padding', 'happy-elementor-addons' ),
|
508 |
+
'type' => Controls_Manager::DIMENSIONS,
|
509 |
+
'size_units' => [ 'px', 'em', '%' ],
|
510 |
+
'selectors' => [
|
511 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-item-inner' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
512 |
+
]
|
513 |
+
]
|
514 |
+
);
|
515 |
+
|
516 |
+
$this->add_group_control(
|
517 |
+
Group_Control_Background::get_type(),
|
518 |
+
[
|
519 |
+
'name' => 'post_item_background',
|
520 |
+
'label' => __( 'Background', 'happy-elementor-addons' ),
|
521 |
+
'types' => [ 'classic', 'gradient' ],
|
522 |
+
'selector' => '{{WRAPPER}} .ha-post-tab .ha-post-tab-item-inner',
|
523 |
+
]
|
524 |
+
);
|
525 |
+
|
526 |
+
$this->add_group_control(
|
527 |
+
Group_Control_Box_Shadow::get_type(),
|
528 |
+
[
|
529 |
+
'name' => 'post_item_box_shadow',
|
530 |
+
'label' => __( 'Box Shadow', 'happy-elementor-addons' ),
|
531 |
+
'selector' => '{{WRAPPER}} .ha-post-tab .ha-post-tab-item-inner',
|
532 |
+
]
|
533 |
+
);
|
534 |
+
|
535 |
+
$this->add_group_control(
|
536 |
+
Group_Control_Border::get_type(),
|
537 |
+
[
|
538 |
+
'name' => 'post_item_border',
|
539 |
+
'label' => __( 'Border', 'happy-elementor-addons' ),
|
540 |
+
'selector' => '{{WRAPPER}} .ha-post-tab .ha-post-tab-item-inner',
|
541 |
+
]
|
542 |
+
);
|
543 |
+
|
544 |
+
$this->add_responsive_control(
|
545 |
+
'post_item_border_radius',
|
546 |
+
[
|
547 |
+
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
548 |
+
'type' => Controls_Manager::DIMENSIONS,
|
549 |
+
'size_units' => [ 'px', 'em', '%' ],
|
550 |
+
'selectors' => [
|
551 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-item-inner' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
552 |
+
]
|
553 |
+
]
|
554 |
+
);
|
555 |
+
$this->end_controls_section();
|
556 |
+
|
557 |
+
//Content Style
|
558 |
+
$this->start_controls_section(
|
559 |
+
'_section_post_tab_content',
|
560 |
+
[
|
561 |
+
'label' => __( 'Content', 'happy-elementor-addons' ),
|
562 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
563 |
+
]
|
564 |
+
);
|
565 |
+
|
566 |
+
$this->add_responsive_control(
|
567 |
+
'post_content_image',
|
568 |
+
[
|
569 |
+
'label' => __( 'Image', 'happy-elementor-addons' ),
|
570 |
+
'type' => Controls_Manager::HEADING,
|
571 |
+
]
|
572 |
+
);
|
573 |
+
|
574 |
+
$this->add_responsive_control(
|
575 |
+
'post_item_content_img_margin_btm',
|
576 |
+
[
|
577 |
+
'label' => __( 'Margin Bottom', 'happy-elementor-addons' ),
|
578 |
+
'type' => Controls_Manager::SLIDER,
|
579 |
+
'default' => [
|
580 |
+
'unit' => 'px',
|
581 |
+
'size' => 15,
|
582 |
+
],
|
583 |
+
'selectors' => [
|
584 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-item-inner .ha-post-tab-thumb' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
585 |
+
],
|
586 |
+
]
|
587 |
+
);
|
588 |
+
|
589 |
+
$this->add_group_control(
|
590 |
+
Group_Control_Border::get_type(),
|
591 |
+
[
|
592 |
+
'name' => 'image_boder',
|
593 |
+
'label' => __( 'Border', 'happy-elementor-addons' ),
|
594 |
+
'selector' => '{{WRAPPER}} .ha-post-tab .ha-post-tab-item-inner .ha-post-tab-thumb img',
|
595 |
+
]
|
596 |
+
);
|
597 |
+
|
598 |
+
$this->add_responsive_control(
|
599 |
+
'image_boder_radius',
|
600 |
+
[
|
601 |
+
'label' => __( 'Border Radius', 'happy-elementor-addons' ),
|
602 |
+
'type' => Controls_Manager::DIMENSIONS,
|
603 |
+
'size_units' => [ 'px', '%' ],
|
604 |
+
'selectors' => [
|
605 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-item-inner .ha-post-tab-thumb img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
606 |
+
],
|
607 |
+
]
|
608 |
+
);
|
609 |
+
|
610 |
+
$this->add_responsive_control(
|
611 |
+
'post_content_title',
|
612 |
+
[
|
613 |
+
'label' => __( 'Title', 'happy-elementor-addons' ),
|
614 |
+
'type' => Controls_Manager::HEADING,
|
615 |
+
'separator' => 'before'
|
616 |
+
]
|
617 |
+
);
|
618 |
+
|
619 |
+
$this->add_responsive_control(
|
620 |
+
'post_content_margin_btm',
|
621 |
+
[
|
622 |
+
'label' => __( 'Margin Bottom', 'happy-elementor-addons' ),
|
623 |
+
'type' => Controls_Manager::SLIDER,
|
624 |
+
'default' => [
|
625 |
+
'unit' => 'px',
|
626 |
+
'size' => 10,
|
627 |
+
],
|
628 |
+
'selectors' => [
|
629 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
630 |
+
],
|
631 |
+
]
|
632 |
+
);
|
633 |
+
|
634 |
+
$this->add_group_control(
|
635 |
+
Group_Control_Typography::get_type(),
|
636 |
+
[
|
637 |
+
'name' => 'title_typography',
|
638 |
+
'label' => __( 'Typography', 'happy-elementor-addons' ),
|
639 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_2,
|
640 |
+
'selector' => '{{WRAPPER}} .ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title',
|
641 |
+
]
|
642 |
+
);
|
643 |
+
|
644 |
+
$this->start_controls_tabs( 'title_tabs' );
|
645 |
+
$this->start_controls_tab(
|
646 |
+
'title_normal_tab',
|
647 |
+
[
|
648 |
+
'label' => __( 'Normal', 'happy-elementor-addons' ),
|
649 |
+
]
|
650 |
+
);
|
651 |
+
|
652 |
+
$this->add_control(
|
653 |
+
'title_color',
|
654 |
+
[
|
655 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
656 |
+
'type' => Controls_Manager::COLOR,
|
657 |
+
'selectors' => [
|
658 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title a' => 'color: {{VALUE}}',
|
659 |
+
],
|
660 |
+
]
|
661 |
+
);
|
662 |
+
$this->end_controls_tab();
|
663 |
+
|
664 |
+
$this->start_controls_tab(
|
665 |
+
'title_hover_tab',
|
666 |
+
[
|
667 |
+
'label' => __( 'Hover', 'happy-elementor-addons' ),
|
668 |
+
]
|
669 |
+
);
|
670 |
+
|
671 |
+
$this->add_control(
|
672 |
+
'title_hvr_color',
|
673 |
+
[
|
674 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
675 |
+
'type' => Controls_Manager::COLOR,
|
676 |
+
'selectors' => [
|
677 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title a:hover' => 'color: {{VALUE}}',
|
678 |
+
],
|
679 |
+
]
|
680 |
+
);
|
681 |
+
$this->end_controls_tab();
|
682 |
+
$this->end_controls_tabs();
|
683 |
+
|
684 |
+
$this->add_responsive_control(
|
685 |
+
'post_content_meta',
|
686 |
+
[
|
687 |
+
'label' => __( 'Meta', 'happy-elementor-addons' ),
|
688 |
+
'type' => Controls_Manager::HEADING,
|
689 |
+
'separator' => 'before'
|
690 |
+
]
|
691 |
+
);
|
692 |
+
|
693 |
+
$this->add_group_control(
|
694 |
+
Group_Control_Typography::get_type(),
|
695 |
+
[
|
696 |
+
'name' => 'meta_typography',
|
697 |
+
'label' => __( 'Typography', 'happy-elementor-addons' ),
|
698 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
699 |
+
'selector' => '{{WRAPPER}} .ha-post-tab .ha-post-tab-meta span',
|
700 |
+
]
|
701 |
+
);
|
702 |
+
|
703 |
+
$this->start_controls_tabs( 'meta_tabs' );
|
704 |
+
$this->start_controls_tab(
|
705 |
+
'meta_normal_tab',
|
706 |
+
[
|
707 |
+
'label' => __( 'Normal', 'happy-elementor-addons' ),
|
708 |
+
]
|
709 |
+
);
|
710 |
+
|
711 |
+
$this->add_control(
|
712 |
+
'meta_color',
|
713 |
+
[
|
714 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
715 |
+
'type' => Controls_Manager::COLOR,
|
716 |
+
'selectors' => [
|
717 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-meta span' => 'color: {{VALUE}};',
|
718 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-meta span a' => 'color: {{VALUE}};',
|
719 |
+
],
|
720 |
+
]
|
721 |
+
);
|
722 |
+
$this->end_controls_tab();
|
723 |
+
|
724 |
+
$this->start_controls_tab(
|
725 |
+
'meta_hover_tab',
|
726 |
+
[
|
727 |
+
'label' => __( 'Hover', 'happy-elementor-addons' ),
|
728 |
+
]
|
729 |
+
);
|
730 |
+
|
731 |
+
$this->add_control(
|
732 |
+
'meta_hvr_color',
|
733 |
+
[
|
734 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
735 |
+
'type' => Controls_Manager::COLOR,
|
736 |
+
'selectors' => [
|
737 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-meta span:hover' => 'color: {{VALUE}};',
|
738 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-meta span:hover a' => 'color: {{VALUE}};',
|
739 |
+
],
|
740 |
+
]
|
741 |
+
);
|
742 |
+
$this->end_controls_tab();
|
743 |
+
$this->end_controls_tabs();
|
744 |
+
|
745 |
+
$this->add_responsive_control(
|
746 |
+
'meta__margin',
|
747 |
+
[
|
748 |
+
'label' => __( 'Margin', 'happy-elementor-addons' ),
|
749 |
+
'type' => Controls_Manager::DIMENSIONS,
|
750 |
+
'size_units' => [ 'px', '%' ],
|
751 |
+
'selectors' => [
|
752 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-meta span' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
753 |
+
]
|
754 |
+
]
|
755 |
+
);
|
756 |
+
|
757 |
+
$this->add_responsive_control(
|
758 |
+
'post_content_excerpt',
|
759 |
+
[
|
760 |
+
'label' => __( 'Excerpt', 'happy-elementor-addons' ),
|
761 |
+
'type' => Controls_Manager::HEADING,
|
762 |
+
'separator' => 'before',
|
763 |
+
'condition' => [
|
764 |
+
'excerpt' => 'yes',
|
765 |
+
],
|
766 |
+
]
|
767 |
+
);
|
768 |
+
|
769 |
+
$this->add_group_control(
|
770 |
+
Group_Control_Typography::get_type(),
|
771 |
+
[
|
772 |
+
'name' => 'excerpt_typography',
|
773 |
+
'label' => __( 'Typography', 'happy-elementor-addons' ),
|
774 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
775 |
+
'selector' => '{{WRAPPER}} .ha-post-tab .ha-post-tab-excerpt p',
|
776 |
+
'condition' => [
|
777 |
+
'excerpt' => 'yes',
|
778 |
+
],
|
779 |
+
]
|
780 |
+
);
|
781 |
+
|
782 |
+
$this->add_control(
|
783 |
+
'excerpt_color',
|
784 |
+
[
|
785 |
+
'label' => __( 'Color', 'happy-elementor-addons' ),
|
786 |
+
'type' => Controls_Manager::COLOR,
|
787 |
+
'selectors' => [
|
788 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-excerpt p' => 'color: {{VALUE}};',
|
789 |
+
],
|
790 |
+
'condition' => [
|
791 |
+
'excerpt' => 'yes',
|
792 |
+
],
|
793 |
+
]
|
794 |
+
);
|
795 |
+
|
796 |
+
$this->add_responsive_control(
|
797 |
+
'excerpt_margin_top',
|
798 |
+
[
|
799 |
+
'label' => __( 'Margin Top', 'happy-elementor-addons' ),
|
800 |
+
'type' => Controls_Manager::SLIDER,
|
801 |
+
'default' => [
|
802 |
+
'unit' => 'px',
|
803 |
+
'size' => 15,
|
804 |
+
],
|
805 |
+
'selectors' => [
|
806 |
+
'{{WRAPPER}} .ha-post-tab .ha-post-tab-excerpt' => 'margin-top: {{SIZE}}{{UNIT}};',
|
807 |
+
],
|
808 |
+
'condition' => [
|
809 |
+
'excerpt' => 'yes',
|
810 |
+
],
|
811 |
+
]
|
812 |
+
);
|
813 |
+
|
814 |
+
$this->end_controls_section();
|
815 |
+
}
|
816 |
+
|
817 |
+
protected function render () {
|
818 |
+
|
819 |
+
$settings = $this->get_settings_for_display();
|
820 |
+
if ( ! $settings['post_type'] )
|
821 |
+
return;
|
822 |
+
|
823 |
+
$taxonomy = $settings['tax_type_' . $settings['post_type']];
|
824 |
+
$terms_ids = $settings['tax_ids_' . $taxonomy];
|
825 |
+
$terms_args = [
|
826 |
+
'taxonomy' => $taxonomy,
|
827 |
+
'hide_empty' => true,
|
828 |
+
'include' => $terms_ids,
|
829 |
+
'orderby' => 'term_id',
|
830 |
+
];
|
831 |
+
$filter_list = get_terms( $terms_args );
|
832 |
+
|
833 |
+
$post_args = [
|
834 |
+
'post_status' => 'publish',
|
835 |
+
'post_type' => $settings['post_type'],
|
836 |
+
'posts_per_page' => $settings['item_limit'],
|
837 |
+
'tax_query' => array(
|
838 |
+
array(
|
839 |
+
'taxonomy' => $taxonomy,
|
840 |
+
'field' => 'term_id',
|
841 |
+
'terms' => $terms_ids ? $filter_list[0]->term_id : '',
|
842 |
+
),
|
843 |
+
),
|
844 |
+
];
|
845 |
+
$posts = get_posts( $post_args );
|
846 |
+
|
847 |
+
$query_settings = [
|
848 |
+
'post_type' => $settings['post_type'],
|
849 |
+
'taxonomy' => $taxonomy,
|
850 |
+
'item_limit' => $settings['item_limit'],
|
851 |
+
'excerpt' => $settings['excerpt'] ? $settings['excerpt'] : 'no',
|
852 |
+
];
|
853 |
+
$query_settings = json_encode( $query_settings, true );
|
854 |
+
|
855 |
+
$event = 'click';
|
856 |
+
if ( 'hover' === $settings['event'] ) {
|
857 |
+
$event = 'hover touchstart';
|
858 |
+
}
|
859 |
+
$wrapper_class = [
|
860 |
+
'ha-post-tab',
|
861 |
+
'ha-post-tab-' . $settings['filter_pos'],
|
862 |
+
'ha-post-tab-grid-' . $settings['column'],
|
863 |
+
'ha-post-tab-grid-tablet-' . $settings['column_tablet'],
|
864 |
+
'ha-post-tab-grid-mobile-' . $settings['column_mobile'],
|
865 |
+
];
|
866 |
+
$this->add_render_attribute( 'wrapper', 'class', $wrapper_class );
|
867 |
+
$this->add_render_attribute( 'wrapper', 'data-query-args', $query_settings );
|
868 |
+
$this->add_render_attribute( 'wrapper', 'data-event', $event );
|
869 |
+
$this->add_render_attribute( 'tab-filter', 'class', [ 'ha-post-tab-filter ha-text--center' ] );
|
870 |
+
$this->add_render_attribute( 'tab-body', 'class', [ 'ha-post-tab-content' ] );
|
871 |
+
$this->add_render_attribute( 'tab-item-wrapper', 'class', [ 'ha-post-tab-item-wrapper active' ] );
|
872 |
+
$this->add_render_attribute( 'item', 'class', [ 'ha-post-list-item' ] );
|
873 |
+
$i = 1;
|
874 |
+
if ( !empty($terms_ids) && count( $posts ) !== 0 ) :?>
|
875 |
+
<div <?php $this->print_render_attribute_string( 'wrapper' ); ?>>
|
876 |
+
<ul <?php $this->print_render_attribute_string( 'tab-filter' ); ?>>
|
877 |
+
<?php foreach ( $filter_list as $list ): ?>
|
878 |
+
<?php if ( $i === 1 ): $i++; ?>
|
879 |
+
<li class="active"
|
880 |
+
data-term="<?php echo esc_attr( $list->term_id ); ?>"><?php echo esc_html( $list->name ); ?></li>
|
881 |
+
<?php else: ?>
|
882 |
+
<li data-term="<?php echo esc_attr( $list->term_id ); ?>"><?php echo esc_html( $list->name ); ?></li>
|
883 |
+
<?php endif; ?>
|
884 |
+
<?php endforeach; ?>
|
885 |
+
</ul>
|
886 |
+
<div <?php $this->print_render_attribute_string( 'tab-body' ); ?>>
|
887 |
+
<div <?php $this->print_render_attribute_string( 'tab-item-wrapper' ); ?>
|
888 |
+
data-term="<?php echo esc_attr( $terms_ids[0] ); ?>">
|
889 |
+
<?php foreach ( $posts as $post ): ?>
|
890 |
+
<div class="ha-post-tab-item">
|
891 |
+
<div class="ha-post-tab-item-inner">
|
892 |
+
<?php if ( has_post_thumbnail( $post->ID ) ): ?>
|
893 |
+
<a href="<?php echo esc_url( get_the_permalink( $post->ID ) ); ?>"
|
894 |
+
class="ha-post-tab-thumb">
|
895 |
+
<?php echo get_the_post_thumbnail( $post->ID, 'full' ); ?>
|
896 |
+
</a>
|
897 |
+
<?php endif; ?>
|
898 |
+
<h2 class="ha-post-tab-title">
|
899 |
+
<a href="<?php echo esc_url( get_the_permalink( $post->ID ) ); ?>"> <?php echo esc_html( $post->post_title ); ?></a>
|
900 |
+
</h2>
|
901 |
+
<div class="ha-post-tab-meta">
|
902 |
+
<span class="ha-post-tab-meta-author">
|
903 |
+
<i class="fa fa-user-o"></i>
|
904 |
+
<a href="<?php echo esc_url( get_author_posts_url( $post->post_author ) ); ?>"><?php echo esc_html( get_the_author_meta( 'display_name', $post->post_author ) ); ?></a>
|
905 |
+
</span>
|
906 |
+
<?php
|
907 |
+
$archive_year = get_the_time( 'Y', $post->ID );
|
908 |
+
$archive_month = get_the_time( 'm', $post->ID );
|
909 |
+
$archive_day = get_the_time( 'd', $post->ID );
|
910 |
+
?>
|
911 |
+
<span class="ha-post-tab-meta-date">
|
912 |
+
<i class="fa fa-calendar-o"></i>
|
913 |
+
<a href="<?php echo esc_url( get_day_link( $archive_year, $archive_month, $archive_day ) ); ?>"><?php echo get_the_date( "M d, Y", $post->ID ); ?></a>
|
914 |
+
</span>
|
915 |
+
</div>
|
916 |
+
<?php if( 'yes' === $settings['excerpt'] && !empty($post->post_excerpt) ): ?>
|
917 |
+
<div class="ha-post-tab-excerpt">
|
918 |
+
<p><?php echo esc_html($post->post_excerpt);?></p>
|
919 |
+
</div>
|
920 |
+
<?php endif;?>
|
921 |
+
</div>
|
922 |
+
</div>
|
923 |
+
<?php
|
924 |
+
endforeach; ?>
|
925 |
+
</div>
|
926 |
+
</div>
|
927 |
+
</div>
|
928 |
+
<?php
|
929 |
+
else:
|
930 |
+
printf( '%1$s',
|
931 |
+
__( 'No Posts Found', 'happy-elementor-addons' )
|
932 |
+
);
|
933 |
+
endif;
|
934 |
+
}
|
935 |
+
}
|