Version Description
- Tweak: Added
Portuguese
translation. - Tweak:
WPML Compatibility
for Carousel widget. - Tweak: Use
transform
instead ofabsolute
position to enhance Carousel widget transitions. - Fixed: Grid widget images don't fill container height for some themes.
Download this release
Release Info
Developer | leap13 |
Plugin | Premium Addons for Elementor |
Version | 3.2.4 |
Comparing to | |
See all releases |
Code changes from version 3.2.3 to 3.2.4
- admin/includes/notices.php +6 -3
- admin/settings/version-control.php +1 -1
- assets/css/premium-addons.css +1 -0
- assets/js/lib/scrollify.js +853 -0
- assets/js/premium-addons.js +1 -1
- assets/js/premium-vscroll.js +238 -7
- includes/class-addons-integration.php +8 -0
- includes/compatibility/class-premium-addons-wpml.php +23 -3
- includes/compatibility/widgets/carousel.php +66 -0
- premium-addons-for-elementor.php +7 -4
- readme.txt +8 -1
- widgets/premium-progressbar.php +3 -1
admin/includes/notices.php
CHANGED
@@ -18,14 +18,17 @@ class Premium_Admin_Notices {
|
|
18 |
* Constructor for the class
|
19 |
*/
|
20 |
public function __construct() {
|
|
|
21 |
add_action('admin_init', array( $this, 'init') );
|
22 |
-
|
|
|
|
|
23 |
}
|
24 |
|
25 |
/**
|
26 |
* init required functions
|
27 |
*/
|
28 |
-
public function init(){
|
29 |
$this->handle_review_notice();
|
30 |
//$this->handle_pbg_notice();
|
31 |
// $this->handle_image_scroll_notice();
|
@@ -34,7 +37,7 @@ class Premium_Admin_Notices {
|
|
34 |
/**
|
35 |
* init notices check functions
|
36 |
*/
|
37 |
-
public function
|
38 |
$this->required_plugins_check();
|
39 |
|
40 |
$cache_key = 'premium_notice_' . PREMIUM_ADDONS_VERSION;
|
18 |
* Constructor for the class
|
19 |
*/
|
20 |
public function __construct() {
|
21 |
+
|
22 |
add_action('admin_init', array( $this, 'init') );
|
23 |
+
|
24 |
+
add_action('admin_notices', array( $this, 'admin_notices' ) );
|
25 |
+
|
26 |
}
|
27 |
|
28 |
/**
|
29 |
* init required functions
|
30 |
*/
|
31 |
+
public function init() {
|
32 |
$this->handle_review_notice();
|
33 |
//$this->handle_pbg_notice();
|
34 |
// $this->handle_image_scroll_notice();
|
37 |
/**
|
38 |
* init notices check functions
|
39 |
*/
|
40 |
+
public function admin_notices() {
|
41 |
$this->required_plugins_check();
|
42 |
|
43 |
$cache_key = 'premium_notice_' . PREMIUM_ADDONS_VERSION;
|
admin/settings/version-control.php
CHANGED
@@ -79,7 +79,7 @@ class PA_Version_Control {
|
|
79 |
<tr class="pa-roll-row">
|
80 |
<th>Rollback Version</th>
|
81 |
<td>
|
82 |
-
<div><?php echo sprintf( '<a target="_blank" href="%s" class="button pa-btn pa-rollback-button elementor-button-spinner">Reinstall Version 3.2.
|
83 |
<p class="pa-roll-desc"><span>Warning: Please backup your database before making the rollback.</span></p>
|
84 |
</td>
|
85 |
</tr>
|
79 |
<tr class="pa-roll-row">
|
80 |
<th>Rollback Version</th>
|
81 |
<td>
|
82 |
+
<div><?php echo sprintf( '<a target="_blank" href="%s" class="button pa-btn pa-rollback-button elementor-button-spinner">Reinstall Version 3.2.3</a>', wp_nonce_url( admin_url( 'admin-post.php?action=premium_addons_rollback' ), 'premium_addons_rollback' ) ); ?> </div>
|
83 |
<p class="pa-roll-desc"><span>Warning: Please backup your database before making the rollback.</span></p>
|
84 |
</td>
|
85 |
</tr>
|
assets/css/premium-addons.css
CHANGED
@@ -3162,6 +3162,7 @@ button.premium-modal-box-modal-close {
|
|
3162 |
-moz-transform: translate3d(0, 0, 0);
|
3163 |
}
|
3164 |
.pa-gallery-img-container img {
|
|
|
3165 |
-webkit-transition: all 0.3s ease-in-out;
|
3166 |
-moz-transition: all 0.3s ease-in-out;
|
3167 |
-ms-transition: all 0.3s ease-in-out;
|
3162 |
-moz-transform: translate3d(0, 0, 0);
|
3163 |
}
|
3164 |
.pa-gallery-img-container img {
|
3165 |
+
display: block;
|
3166 |
-webkit-transition: all 0.3s ease-in-out;
|
3167 |
-moz-transition: all 0.3s ease-in-out;
|
3168 |
-ms-transition: all 0.3s ease-in-out;
|
assets/js/lib/scrollify.js
ADDED
@@ -0,0 +1,853 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* jQuery Scrollify
|
3 |
+
* Version 1.0.20
|
4 |
+
*
|
5 |
+
* Requires:
|
6 |
+
* - jQuery 1.7 or higher
|
7 |
+
*
|
8 |
+
* https://github.com/lukehaas/Scrollify
|
9 |
+
*
|
10 |
+
* Copyright 2016, Luke Haas
|
11 |
+
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
12 |
+
* this software and associated documentation files (the "Software"), to deal in
|
13 |
+
* the Software without restriction, including without limitation the rights to
|
14 |
+
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
15 |
+
* the Software, and to permit persons to whom the Software is furnished to do so,
|
16 |
+
* subject to the following conditions:
|
17 |
+
*
|
18 |
+
* The above copyright notice and this permission notice shall be included in all
|
19 |
+
* copies or substantial portions of the Software.
|
20 |
+
*
|
21 |
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
22 |
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
23 |
+
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
24 |
+
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
25 |
+
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
26 |
+
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
27 |
+
|
28 |
+
|
29 |
+
|
30 |
+
if touchScroll is false - update index
|
31 |
+
|
32 |
+
*/
|
33 |
+
(function (global,factory) {
|
34 |
+
"use strict";
|
35 |
+
if (typeof define === 'function' && define.amd) {
|
36 |
+
// AMD. Register as an anonymous module.
|
37 |
+
define(['jquery'], function($) {
|
38 |
+
return factory($, global, global.document);
|
39 |
+
});
|
40 |
+
} else if (typeof module === 'object' && module.exports) {
|
41 |
+
// Node/CommonJS
|
42 |
+
module.exports = factory(require('jquery'), global, global.document);
|
43 |
+
} else {
|
44 |
+
// Browser globals
|
45 |
+
factory(jQuery, global, global.document);
|
46 |
+
}
|
47 |
+
}(typeof window !== 'undefined' ? window : this, function ($, window, document, undefined) {
|
48 |
+
"use strict";
|
49 |
+
var heights = [],
|
50 |
+
names = [],
|
51 |
+
elements = [],
|
52 |
+
overflow = [],
|
53 |
+
index = 0,
|
54 |
+
currentIndex = 0,
|
55 |
+
interstitialIndex = 1,
|
56 |
+
hasLocation = false,
|
57 |
+
timeoutId,
|
58 |
+
timeoutId2,
|
59 |
+
$window = $(window),
|
60 |
+
portHeight,
|
61 |
+
top = $window.scrollTop(),
|
62 |
+
scrollable = false,
|
63 |
+
locked = false,
|
64 |
+
scrolled = false,
|
65 |
+
manualScroll,
|
66 |
+
swipeScroll,
|
67 |
+
util,
|
68 |
+
disabled = false,
|
69 |
+
scrollSamples = [],
|
70 |
+
scrollTime = new Date().getTime(),
|
71 |
+
firstLoad = true,
|
72 |
+
initialised = false,
|
73 |
+
destination = 0,
|
74 |
+
wheelEvent = 'onwheel' in document ? 'wheel' : document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll',
|
75 |
+
settings = {
|
76 |
+
//section should be an identifier that is the same for each section
|
77 |
+
section: ".section",
|
78 |
+
sectionName: "section-name",
|
79 |
+
interstitialSection: "",
|
80 |
+
easing: "easeOutExpo",
|
81 |
+
scrollSpeed: 1100,
|
82 |
+
offset: 0,
|
83 |
+
scrollbars: true,
|
84 |
+
target:"html,body",
|
85 |
+
standardScrollElements: false,
|
86 |
+
setHeights: true,
|
87 |
+
overflowScroll:true,
|
88 |
+
updateHash: true,
|
89 |
+
touchScroll:true,
|
90 |
+
before:function() {},
|
91 |
+
after:function() {},
|
92 |
+
afterResize:function() {},
|
93 |
+
afterRender:function() {}
|
94 |
+
};
|
95 |
+
function getportHeight() {
|
96 |
+
return ($window.height() + settings.offset);
|
97 |
+
}
|
98 |
+
function animateScroll(index,instant,callbacks,toTop) {
|
99 |
+
if(currentIndex===index) {
|
100 |
+
callbacks = false;
|
101 |
+
}
|
102 |
+
if(disabled===true) {
|
103 |
+
return true;
|
104 |
+
}
|
105 |
+
if(names[index]) {
|
106 |
+
scrollable = false;
|
107 |
+
if(firstLoad===true) {
|
108 |
+
firstLoad = false;
|
109 |
+
settings.afterRender();
|
110 |
+
}
|
111 |
+
if(callbacks) {
|
112 |
+
if( typeof settings.before == 'function' && settings.before(index,elements) === false ){
|
113 |
+
return true;
|
114 |
+
}
|
115 |
+
}
|
116 |
+
interstitialIndex = 1;
|
117 |
+
destination = (!index) ? 0 : heights[index];
|
118 |
+
if(firstLoad===false && currentIndex>index && toTop===false) {
|
119 |
+
//We're going backwards
|
120 |
+
if(overflow[index]) {
|
121 |
+
portHeight = getportHeight();
|
122 |
+
|
123 |
+
interstitialIndex = parseInt(elements[index].outerHeight()/portHeight);
|
124 |
+
|
125 |
+
destination = parseInt(heights[index])+(elements[index].outerHeight()-portHeight);
|
126 |
+
}
|
127 |
+
}
|
128 |
+
|
129 |
+
|
130 |
+
if(settings.updateHash && settings.sectionName && !(firstLoad===true && index===0)) {
|
131 |
+
if(history.pushState) {
|
132 |
+
try {
|
133 |
+
history.replaceState(null, null, names[index]);
|
134 |
+
} catch (e) {
|
135 |
+
if(window.console) {
|
136 |
+
console.warn("Scrollify warning: Page must be hosted to manipulate the hash value.");
|
137 |
+
}
|
138 |
+
}
|
139 |
+
|
140 |
+
} else {
|
141 |
+
window.location.hash = names[index];
|
142 |
+
}
|
143 |
+
}
|
144 |
+
|
145 |
+
currentIndex = index;
|
146 |
+
if(instant) {
|
147 |
+
$(settings.target).stop().scrollTop(destination);
|
148 |
+
if(callbacks) {
|
149 |
+
settings.after(index,elements);
|
150 |
+
}
|
151 |
+
} else {
|
152 |
+
locked = true;
|
153 |
+
if( $().velocity ) {
|
154 |
+
$(settings.target).stop().velocity('scroll', {
|
155 |
+
duration: settings.scrollSpeed,
|
156 |
+
easing: settings.easing,
|
157 |
+
offset: destination,
|
158 |
+
mobileHA: false
|
159 |
+
});
|
160 |
+
} else {
|
161 |
+
$(settings.target).stop().animate({
|
162 |
+
scrollTop: destination
|
163 |
+
}, settings.scrollSpeed,settings.easing);
|
164 |
+
}
|
165 |
+
|
166 |
+
if(window.location.hash.length && settings.sectionName && window.console) {
|
167 |
+
try {
|
168 |
+
if($(window.location.hash).length) {
|
169 |
+
console.warn("Scrollify warning: ID matches hash value - this will cause the page to anchor.");
|
170 |
+
}
|
171 |
+
} catch (e) {}
|
172 |
+
}
|
173 |
+
$(settings.target).promise().done(function(){
|
174 |
+
locked = false;
|
175 |
+
firstLoad = false;
|
176 |
+
if(callbacks) {
|
177 |
+
settings.after(index,elements);
|
178 |
+
}
|
179 |
+
});
|
180 |
+
}
|
181 |
+
|
182 |
+
}
|
183 |
+
}
|
184 |
+
|
185 |
+
function isAccelerating(samples) {
|
186 |
+
function average(num) {
|
187 |
+
var sum = 0;
|
188 |
+
|
189 |
+
var lastElements = samples.slice(Math.max(samples.length - num, 1));
|
190 |
+
|
191 |
+
for(var i = 0; i < lastElements.length; i++){
|
192 |
+
sum += lastElements[i];
|
193 |
+
}
|
194 |
+
|
195 |
+
return Math.ceil(sum/num);
|
196 |
+
}
|
197 |
+
|
198 |
+
var avEnd = average(10);
|
199 |
+
var avMiddle = average(70);
|
200 |
+
|
201 |
+
if(avEnd >= avMiddle) {
|
202 |
+
return true;
|
203 |
+
} else {
|
204 |
+
return false;
|
205 |
+
}
|
206 |
+
}
|
207 |
+
var scrollify = function(options) {
|
208 |
+
initialised = true;
|
209 |
+
$.easing['easeOutExpo'] = function(x, t, b, c, d) {
|
210 |
+
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
|
211 |
+
};
|
212 |
+
|
213 |
+
manualScroll = {
|
214 |
+
handleMousedown:function() {
|
215 |
+
if(disabled===true) {
|
216 |
+
return true;
|
217 |
+
}
|
218 |
+
scrollable = false;
|
219 |
+
scrolled = false;
|
220 |
+
},
|
221 |
+
handleMouseup:function() {
|
222 |
+
if(disabled===true) {
|
223 |
+
return true;
|
224 |
+
}
|
225 |
+
scrollable = true;
|
226 |
+
if(scrolled) {
|
227 |
+
//instant,callbacks
|
228 |
+
manualScroll.calculateNearest(false,true);
|
229 |
+
}
|
230 |
+
},
|
231 |
+
handleScroll:function() {
|
232 |
+
if(disabled===true) {
|
233 |
+
return true;
|
234 |
+
}
|
235 |
+
if(timeoutId){
|
236 |
+
clearTimeout(timeoutId);
|
237 |
+
}
|
238 |
+
|
239 |
+
timeoutId = setTimeout(function(){
|
240 |
+
scrolled = true;
|
241 |
+
if(scrollable===false) {
|
242 |
+
return false;
|
243 |
+
}
|
244 |
+
scrollable = false;
|
245 |
+
//instant,callbacks
|
246 |
+
manualScroll.calculateNearest(false,true);
|
247 |
+
}, 200);
|
248 |
+
},
|
249 |
+
calculateNearest:function(instant,callbacks) {
|
250 |
+
top = $window.scrollTop();
|
251 |
+
var i =1,
|
252 |
+
max = heights.length,
|
253 |
+
closest = 0,
|
254 |
+
prev = Math.abs(heights[0] - top),
|
255 |
+
diff;
|
256 |
+
for(;i<max;i++) {
|
257 |
+
diff = Math.abs(heights[i] - top);
|
258 |
+
|
259 |
+
if(diff < prev) {
|
260 |
+
prev = diff;
|
261 |
+
closest = i;
|
262 |
+
}
|
263 |
+
}
|
264 |
+
if((atBottom() && closest>index) || atTop()) {
|
265 |
+
index = closest;
|
266 |
+
//index, instant, callbacks, toTop
|
267 |
+
animateScroll(closest,instant,callbacks,false);
|
268 |
+
}
|
269 |
+
},
|
270 |
+
wheelHandler:function(e) {
|
271 |
+
if(disabled===true) {
|
272 |
+
return true;
|
273 |
+
} else if(settings.standardScrollElements) {
|
274 |
+
if($(e.target).is(settings.standardScrollElements) || $(e.target).closest(settings.standardScrollElements).length) {
|
275 |
+
return true;
|
276 |
+
}
|
277 |
+
}
|
278 |
+
if(!overflow[index]) {
|
279 |
+
e.preventDefault();
|
280 |
+
}
|
281 |
+
var currentScrollTime = new Date().getTime();
|
282 |
+
|
283 |
+
|
284 |
+
e = e || window.event;
|
285 |
+
var value;
|
286 |
+
if (e.originalEvent) {
|
287 |
+
value = e.originalEvent.wheelDelta || -e.originalEvent.deltaY || -e.originalEvent.detail;
|
288 |
+
} else {
|
289 |
+
value = e.wheelDelta || -e.deltaY || -e.detail;
|
290 |
+
}
|
291 |
+
var delta = Math.max(-1, Math.min(1, value));
|
292 |
+
|
293 |
+
//delta = delta || -e.originalEvent.detail / 3 || e.originalEvent.wheelDelta / 120;
|
294 |
+
|
295 |
+
if(scrollSamples.length > 149){
|
296 |
+
scrollSamples.shift();
|
297 |
+
}
|
298 |
+
//scrollSamples.push(Math.abs(delta*10));
|
299 |
+
scrollSamples.push(Math.abs(value));
|
300 |
+
|
301 |
+
if((currentScrollTime-scrollTime) > 200){
|
302 |
+
scrollSamples = [];
|
303 |
+
}
|
304 |
+
scrollTime = currentScrollTime;
|
305 |
+
|
306 |
+
|
307 |
+
if(locked) {
|
308 |
+
return false;
|
309 |
+
}
|
310 |
+
if(delta<0) {
|
311 |
+
if(index<heights.length-1) {
|
312 |
+
if(atBottom()) {
|
313 |
+
if(isAccelerating(scrollSamples)) {
|
314 |
+
e.preventDefault();
|
315 |
+
index++;
|
316 |
+
locked = true;
|
317 |
+
//index, instant, callbacks, toTop
|
318 |
+
animateScroll(index,false,true, false);
|
319 |
+
} else {
|
320 |
+
return false;
|
321 |
+
}
|
322 |
+
}
|
323 |
+
}
|
324 |
+
} else if(delta>0) {
|
325 |
+
if(index>0) {
|
326 |
+
if(atTop()) {
|
327 |
+
if(isAccelerating(scrollSamples)) {
|
328 |
+
e.preventDefault();
|
329 |
+
index--;
|
330 |
+
locked = true;
|
331 |
+
//index, instant, callbacks, toTop
|
332 |
+
animateScroll(index,false,true, false);
|
333 |
+
} else {
|
334 |
+
return false
|
335 |
+
}
|
336 |
+
}
|
337 |
+
}
|
338 |
+
}
|
339 |
+
|
340 |
+
},
|
341 |
+
keyHandler:function(e) {
|
342 |
+
if(disabled===true || document.activeElement.readOnly===false) {
|
343 |
+
return true;
|
344 |
+
} else if(settings.standardScrollElements) {
|
345 |
+
if($(e.target).is(settings.standardScrollElements) || $(e.target).closest(settings.standardScrollElements).length) {
|
346 |
+
return true;
|
347 |
+
}
|
348 |
+
}
|
349 |
+
if(locked===true) {
|
350 |
+
return false;
|
351 |
+
}
|
352 |
+
if(e.keyCode==38 || e.keyCode==33) {
|
353 |
+
if(index>0) {
|
354 |
+
if(atTop()) {
|
355 |
+
e.preventDefault();
|
356 |
+
index--;
|
357 |
+
//index, instant, callbacks, toTop
|
358 |
+
animateScroll(index,false,true,false);
|
359 |
+
}
|
360 |
+
}
|
361 |
+
} else if(e.keyCode==40 || e.keyCode==34) {
|
362 |
+
if(index<heights.length-1) {
|
363 |
+
if(atBottom()) {
|
364 |
+
e.preventDefault();
|
365 |
+
index++;
|
366 |
+
//index, instant, callbacks, toTop
|
367 |
+
animateScroll(index,false,true,false);
|
368 |
+
}
|
369 |
+
}
|
370 |
+
}
|
371 |
+
},
|
372 |
+
init:function() {
|
373 |
+
if(settings.scrollbars) {
|
374 |
+
$window.on('mousedown', manualScroll.handleMousedown);
|
375 |
+
$window.on('mouseup', manualScroll.handleMouseup);
|
376 |
+
$window.on('scroll', manualScroll.handleScroll);
|
377 |
+
} else {
|
378 |
+
$("body").css({"overflow":"hidden"});
|
379 |
+
}
|
380 |
+
window.addEventListener(wheelEvent, manualScroll.wheelHandler, { passive: false });
|
381 |
+
//$(document).bind(wheelEvent,manualScroll.wheelHandler);
|
382 |
+
$window.on('keydown', manualScroll.keyHandler);
|
383 |
+
}
|
384 |
+
};
|
385 |
+
|
386 |
+
swipeScroll = {
|
387 |
+
touches : {
|
388 |
+
"touchstart": {"y":-1,"x":-1},
|
389 |
+
"touchmove" : {"y":-1,"x":-1},
|
390 |
+
"touchend" : false,
|
391 |
+
"direction" : "undetermined"
|
392 |
+
},
|
393 |
+
options:{
|
394 |
+
"distance" : 30,
|
395 |
+
"timeGap" : 800,
|
396 |
+
"timeStamp" : new Date().getTime()
|
397 |
+
},
|
398 |
+
touchHandler: function(event) {
|
399 |
+
if(disabled===true) {
|
400 |
+
return true;
|
401 |
+
} else if(settings.standardScrollElements) {
|
402 |
+
if($(event.target).is(settings.standardScrollElements) || $(event.target).closest(settings.standardScrollElements).length) {
|
403 |
+
return true;
|
404 |
+
}
|
405 |
+
}
|
406 |
+
var touch;
|
407 |
+
if (typeof event !== 'undefined'){
|
408 |
+
if (typeof event.touches !== 'undefined') {
|
409 |
+
touch = event.touches[0];
|
410 |
+
switch (event.type) {
|
411 |
+
case 'touchstart':
|
412 |
+
swipeScroll.touches.touchstart.y = touch.pageY;
|
413 |
+
swipeScroll.touches.touchmove.y = -1;
|
414 |
+
|
415 |
+
swipeScroll.touches.touchstart.x = touch.pageX;
|
416 |
+
swipeScroll.touches.touchmove.x = -1;
|
417 |
+
|
418 |
+
swipeScroll.options.timeStamp = new Date().getTime();
|
419 |
+
swipeScroll.touches.touchend = false;
|
420 |
+
case 'touchmove':
|
421 |
+
swipeScroll.touches.touchmove.y = touch.pageY;
|
422 |
+
swipeScroll.touches.touchmove.x = touch.pageX;
|
423 |
+
if(swipeScroll.touches.touchstart.y!==swipeScroll.touches.touchmove.y && (Math.abs(swipeScroll.touches.touchstart.y-swipeScroll.touches.touchmove.y)>Math.abs(swipeScroll.touches.touchstart.x-swipeScroll.touches.touchmove.x))) {
|
424 |
+
//if(!overflow[index]) {
|
425 |
+
event.preventDefault();
|
426 |
+
//}
|
427 |
+
swipeScroll.touches.direction = "y";
|
428 |
+
if((swipeScroll.options.timeStamp+swipeScroll.options.timeGap)<(new Date().getTime()) && swipeScroll.touches.touchend == false) {
|
429 |
+
|
430 |
+
swipeScroll.touches.touchend = true;
|
431 |
+
if (swipeScroll.touches.touchstart.y > -1) {
|
432 |
+
|
433 |
+
if(Math.abs(swipeScroll.touches.touchmove.y-swipeScroll.touches.touchstart.y)>swipeScroll.options.distance) {
|
434 |
+
if(swipeScroll.touches.touchstart.y < swipeScroll.touches.touchmove.y) {
|
435 |
+
|
436 |
+
swipeScroll.up();
|
437 |
+
|
438 |
+
} else {
|
439 |
+
swipeScroll.down();
|
440 |
+
|
441 |
+
}
|
442 |
+
}
|
443 |
+
}
|
444 |
+
}
|
445 |
+
}
|
446 |
+
break;
|
447 |
+
case 'touchend':
|
448 |
+
if(swipeScroll.touches[event.type]===false) {
|
449 |
+
swipeScroll.touches[event.type] = true;
|
450 |
+
if (swipeScroll.touches.touchstart.y > -1 && swipeScroll.touches.touchmove.y > -1 && swipeScroll.touches.direction==="y") {
|
451 |
+
|
452 |
+
if(Math.abs(swipeScroll.touches.touchmove.y-swipeScroll.touches.touchstart.y)>swipeScroll.options.distance) {
|
453 |
+
if(swipeScroll.touches.touchstart.y < swipeScroll.touches.touchmove.y) {
|
454 |
+
swipeScroll.up();
|
455 |
+
|
456 |
+
} else {
|
457 |
+
swipeScroll.down();
|
458 |
+
|
459 |
+
}
|
460 |
+
}
|
461 |
+
swipeScroll.touches.touchstart.y = -1;
|
462 |
+
swipeScroll.touches.touchstart.x = -1;
|
463 |
+
swipeScroll.touches.direction = "undetermined";
|
464 |
+
}
|
465 |
+
}
|
466 |
+
default:
|
467 |
+
break;
|
468 |
+
}
|
469 |
+
}
|
470 |
+
}
|
471 |
+
},
|
472 |
+
down: function() {
|
473 |
+
|
474 |
+
if(index<heights.length) {
|
475 |
+
|
476 |
+
if(atBottom() && index<heights.length-1) {
|
477 |
+
|
478 |
+
index++;
|
479 |
+
//index, instant, callbacks, toTop
|
480 |
+
animateScroll(index,false,true,false);
|
481 |
+
} else {
|
482 |
+
portHeight = getportHeight();
|
483 |
+
if(Math.floor(elements[index].height()/portHeight)>interstitialIndex) {
|
484 |
+
|
485 |
+
interstitialScroll(parseInt(heights[index])+(portHeight*interstitialIndex));
|
486 |
+
interstitialIndex += 1;
|
487 |
+
|
488 |
+
} else {
|
489 |
+
interstitialScroll(parseInt(heights[index])+(elements[index].outerHeight()-portHeight));
|
490 |
+
}
|
491 |
+
|
492 |
+
}
|
493 |
+
}
|
494 |
+
},
|
495 |
+
up: function() {
|
496 |
+
if(index>=0) {
|
497 |
+
if(atTop() && index>0) {
|
498 |
+
|
499 |
+
index--;
|
500 |
+
//index, instant, callbacks, toTop
|
501 |
+
animateScroll(index,false,true,false);
|
502 |
+
} else {
|
503 |
+
|
504 |
+
if(interstitialIndex>2) {
|
505 |
+
portHeight = getportHeight();
|
506 |
+
|
507 |
+
interstitialIndex -= 1;
|
508 |
+
interstitialScroll(parseInt(heights[index])+(portHeight*interstitialIndex));
|
509 |
+
|
510 |
+
} else {
|
511 |
+
|
512 |
+
interstitialIndex = 1;
|
513 |
+
interstitialScroll(parseInt(heights[index]));
|
514 |
+
}
|
515 |
+
}
|
516 |
+
|
517 |
+
}
|
518 |
+
},
|
519 |
+
init: function() {
|
520 |
+
if (document.addEventListener && settings.touchScroll) {
|
521 |
+
var eventListenerOptions = {
|
522 |
+
passive: false
|
523 |
+
};
|
524 |
+
document.addEventListener('touchstart', swipeScroll.touchHandler, eventListenerOptions);
|
525 |
+
document.addEventListener('touchmove', swipeScroll.touchHandler, eventListenerOptions);
|
526 |
+
document.addEventListener('touchend', swipeScroll.touchHandler, eventListenerOptions);
|
527 |
+
}
|
528 |
+
}
|
529 |
+
};
|
530 |
+
|
531 |
+
|
532 |
+
util = {
|
533 |
+
refresh:function(withCallback,scroll) {
|
534 |
+
clearTimeout(timeoutId2);
|
535 |
+
timeoutId2 = setTimeout(function() {
|
536 |
+
//retain position
|
537 |
+
sizePanels(true);
|
538 |
+
//scroll, firstLoad
|
539 |
+
calculatePositions(scroll,false);
|
540 |
+
if(withCallback) {
|
541 |
+
settings.afterResize();
|
542 |
+
}
|
543 |
+
},400);
|
544 |
+
},
|
545 |
+
handleUpdate:function() {
|
546 |
+
//callbacks, scroll
|
547 |
+
//changed from false,true to false,false
|
548 |
+
util.refresh(false,false);
|
549 |
+
},
|
550 |
+
handleResize:function() {
|
551 |
+
//callbacks, scroll
|
552 |
+
util.refresh(true,false);
|
553 |
+
},
|
554 |
+
handleOrientation:function() {
|
555 |
+
//callbacks, scroll
|
556 |
+
util.refresh(true,true);
|
557 |
+
}
|
558 |
+
};
|
559 |
+
settings = $.extend(settings, options);
|
560 |
+
|
561 |
+
//retain position
|
562 |
+
sizePanels(false);
|
563 |
+
|
564 |
+
calculatePositions(false,true);
|
565 |
+
|
566 |
+
if(true===hasLocation) {
|
567 |
+
//index, instant, callbacks, toTop
|
568 |
+
animateScroll(index,false,true,true);
|
569 |
+
} else {
|
570 |
+
setTimeout(function() {
|
571 |
+
//instant,callbacks
|
572 |
+
manualScroll.calculateNearest(true,false);
|
573 |
+
},200);
|
574 |
+
}
|
575 |
+
if(heights.length) {
|
576 |
+
manualScroll.init();
|
577 |
+
swipeScroll.init();
|
578 |
+
|
579 |
+
$window.on("resize",util.handleResize);
|
580 |
+
if (document.addEventListener) {
|
581 |
+
window.addEventListener("orientationchange", util.handleOrientation, false);
|
582 |
+
}
|
583 |
+
}
|
584 |
+
function interstitialScroll(pos) {
|
585 |
+
if( $().velocity ) {
|
586 |
+
$(settings.target).stop().velocity('scroll', {
|
587 |
+
duration: settings.scrollSpeed,
|
588 |
+
easing: settings.easing,
|
589 |
+
offset: pos,
|
590 |
+
mobileHA: false
|
591 |
+
});
|
592 |
+
} else {
|
593 |
+
$(settings.target).stop().animate({
|
594 |
+
scrollTop: pos
|
595 |
+
}, settings.scrollSpeed,settings.easing);
|
596 |
+
}
|
597 |
+
}
|
598 |
+
|
599 |
+
function sizePanels(keepPosition) {
|
600 |
+
if(keepPosition) {
|
601 |
+
top = $window.scrollTop();
|
602 |
+
}
|
603 |
+
|
604 |
+
var selector = settings.section;
|
605 |
+
overflow = [];
|
606 |
+
if(settings.interstitialSection.length) {
|
607 |
+
selector += "," + settings.interstitialSection;
|
608 |
+
}
|
609 |
+
if(settings.scrollbars===false) {
|
610 |
+
settings.overflowScroll = false;
|
611 |
+
}
|
612 |
+
portHeight = getportHeight();
|
613 |
+
$(selector).each(function(i) {
|
614 |
+
var $this = $(this);
|
615 |
+
|
616 |
+
if(settings.setHeights) {
|
617 |
+
if($this.is(settings.interstitialSection)) {
|
618 |
+
overflow[i] = false;
|
619 |
+
} else {
|
620 |
+
if(($this.css("height","auto").outerHeight()<portHeight) || $this.css("overflow")==="hidden") {
|
621 |
+
$this.css({"height":portHeight});
|
622 |
+
|
623 |
+
overflow[i] = false;
|
624 |
+
} else {
|
625 |
+
|
626 |
+
$this.css({"height":$this.outerHeight()});
|
627 |
+
|
628 |
+
if(settings.overflowScroll) {
|
629 |
+
overflow[i] = true;
|
630 |
+
} else {
|
631 |
+
overflow[i] = false;
|
632 |
+
}
|
633 |
+
}
|
634 |
+
|
635 |
+
}
|
636 |
+
|
637 |
+
} else {
|
638 |
+
|
639 |
+
if(($this.outerHeight()<portHeight) || (settings.overflowScroll===false)) {
|
640 |
+
overflow[i] = false;
|
641 |
+
} else {
|
642 |
+
overflow[i] = true;
|
643 |
+
}
|
644 |
+
}
|
645 |
+
});
|
646 |
+
if(keepPosition) {
|
647 |
+
$window.scrollTop(top);
|
648 |
+
}
|
649 |
+
}
|
650 |
+
function calculatePositions(scroll,firstLoad) {
|
651 |
+
var selector = settings.section;
|
652 |
+
if(settings.interstitialSection.length) {
|
653 |
+
selector += "," + settings.interstitialSection;
|
654 |
+
}
|
655 |
+
heights = [];
|
656 |
+
names = [];
|
657 |
+
elements = [];
|
658 |
+
$(selector).each(function(i){
|
659 |
+
var $this = $(this);
|
660 |
+
if(i>0) {
|
661 |
+
heights[i] = parseInt($this.offset().top) + settings.offset;
|
662 |
+
} else {
|
663 |
+
heights[i] = parseInt($this.offset().top);
|
664 |
+
}
|
665 |
+
if(settings.sectionName && $this.data(settings.sectionName)) {
|
666 |
+
names[i] = "#" + $this.data(settings.sectionName).toString().replace(/ /g,"-");
|
667 |
+
} else {
|
668 |
+
if($this.is(settings.interstitialSection)===false) {
|
669 |
+
names[i] = "#" + (i + 1);
|
670 |
+
} else {
|
671 |
+
names[i] = "#";
|
672 |
+
if(i===$(selector).length-1 && i>1) {
|
673 |
+
heights[i] = heights[i-1] + (parseInt($($(selector)[i-1]).outerHeight()) - parseInt($(window).height())) + parseInt($this.outerHeight());
|
674 |
+
}
|
675 |
+
}
|
676 |
+
}
|
677 |
+
elements[i] = $this;
|
678 |
+
try {
|
679 |
+
if($(names[i]).length && window.console) {
|
680 |
+
console.warn("Scrollify warning: Section names can't match IDs - this will cause the browser to anchor.");
|
681 |
+
}
|
682 |
+
} catch (e) {}
|
683 |
+
|
684 |
+
if(window.location.hash===names[i]) {
|
685 |
+
index = i;
|
686 |
+
hasLocation = true;
|
687 |
+
}
|
688 |
+
|
689 |
+
});
|
690 |
+
|
691 |
+
if(true===scroll) {
|
692 |
+
//index, instant, callbacks, toTop
|
693 |
+
animateScroll(index,false,false,false);
|
694 |
+
}
|
695 |
+
}
|
696 |
+
|
697 |
+
function atTop() {
|
698 |
+
if(!overflow[index]) {
|
699 |
+
return true;
|
700 |
+
}
|
701 |
+
top = $window.scrollTop();
|
702 |
+
if(top>parseInt(heights[index])) {
|
703 |
+
return false;
|
704 |
+
} else {
|
705 |
+
return true;
|
706 |
+
}
|
707 |
+
}
|
708 |
+
function atBottom() {
|
709 |
+
if(!overflow[index]) {
|
710 |
+
return true;
|
711 |
+
}
|
712 |
+
top = $window.scrollTop();
|
713 |
+
portHeight = getportHeight();
|
714 |
+
|
715 |
+
if(top<parseInt(heights[index])+(elements[index].outerHeight()-portHeight)-28) {
|
716 |
+
|
717 |
+
return false;
|
718 |
+
|
719 |
+
} else {
|
720 |
+
return true;
|
721 |
+
}
|
722 |
+
}
|
723 |
+
}
|
724 |
+
|
725 |
+
function move(panel,instant) {
|
726 |
+
var z = names.length;
|
727 |
+
for(;z>=0;z--) {
|
728 |
+
if(typeof panel === 'string') {
|
729 |
+
if (names[z]===panel) {
|
730 |
+
index = z;
|
731 |
+
//index, instant, callbacks, toTop
|
732 |
+
animateScroll(z,instant,true,true);
|
733 |
+
}
|
734 |
+
} else {
|
735 |
+
if(z===panel) {
|
736 |
+
index = z;
|
737 |
+
//index, instant, callbacks, toTop
|
738 |
+
animateScroll(z,instant,true,true);
|
739 |
+
}
|
740 |
+
}
|
741 |
+
}
|
742 |
+
}
|
743 |
+
scrollify.move = function(panel) {
|
744 |
+
if(panel===undefined) {
|
745 |
+
return false;
|
746 |
+
}
|
747 |
+
if(panel.originalEvent) {
|
748 |
+
panel = $(this).attr("href");
|
749 |
+
}
|
750 |
+
move(panel,false);
|
751 |
+
};
|
752 |
+
scrollify.instantMove = function(panel) {
|
753 |
+
if(panel===undefined) {
|
754 |
+
return false;
|
755 |
+
}
|
756 |
+
move(panel,true);
|
757 |
+
};
|
758 |
+
scrollify.next = function() {
|
759 |
+
if(index<names.length) {
|
760 |
+
index += 1;
|
761 |
+
//index, instant, callbacks, toTop
|
762 |
+
animateScroll(index,false,true,true);
|
763 |
+
}
|
764 |
+
};
|
765 |
+
scrollify.previous = function() {
|
766 |
+
if(index>0) {
|
767 |
+
index -= 1;
|
768 |
+
//index, instant, callbacks, toTop
|
769 |
+
animateScroll(index,false,true,true);
|
770 |
+
}
|
771 |
+
};
|
772 |
+
scrollify.instantNext = function() {
|
773 |
+
if(index<names.length) {
|
774 |
+
index += 1;
|
775 |
+
//index, instant, callbacks, toTop
|
776 |
+
animateScroll(index,true,true,true);
|
777 |
+
}
|
778 |
+
};
|
779 |
+
scrollify.instantPrevious = function() {
|
780 |
+
if(index>0) {
|
781 |
+
index -= 1;
|
782 |
+
//index, instant, callbacks, toTop
|
783 |
+
animateScroll(index,true,true,true);
|
784 |
+
}
|
785 |
+
};
|
786 |
+
scrollify.destroy = function() {
|
787 |
+
if(!initialised) {
|
788 |
+
return false;
|
789 |
+
}
|
790 |
+
if(settings.setHeights) {
|
791 |
+
$(settings.section).each(function() {
|
792 |
+
$(this).css("height","auto");
|
793 |
+
});
|
794 |
+
}
|
795 |
+
$window.off("resize",util.handleResize);
|
796 |
+
if(settings.scrollbars) {
|
797 |
+
$window.off('mousedown', manualScroll.handleMousedown);
|
798 |
+
$window.off('mouseup', manualScroll.handleMouseup);
|
799 |
+
$window.off('scroll', manualScroll.handleScroll);
|
800 |
+
}
|
801 |
+
// $window.off(wheelEvent,manualScroll.wheelHandler);
|
802 |
+
window.removeEventListener(wheelEvent,manualScroll.wheelHandler);
|
803 |
+
$window.off('keydown', manualScroll.keyHandler);
|
804 |
+
|
805 |
+
if (document.addEventListener && settings.touchScroll) {
|
806 |
+
document.removeEventListener('touchstart', swipeScroll.touchHandler, false);
|
807 |
+
document.removeEventListener('touchmove', swipeScroll.touchHandler, false);
|
808 |
+
document.removeEventListener('touchend', swipeScroll.touchHandler, false);
|
809 |
+
}
|
810 |
+
heights = [];
|
811 |
+
names = [];
|
812 |
+
elements = [];
|
813 |
+
overflow = [];
|
814 |
+
};
|
815 |
+
scrollify.update = function() {
|
816 |
+
if(!initialised) {
|
817 |
+
return false;
|
818 |
+
}
|
819 |
+
util.handleUpdate();
|
820 |
+
};
|
821 |
+
scrollify.current = function() {
|
822 |
+
return elements[index];
|
823 |
+
};
|
824 |
+
scrollify.currentIndex = function() {
|
825 |
+
return index;
|
826 |
+
};
|
827 |
+
scrollify.disable = function() {
|
828 |
+
disabled = true;
|
829 |
+
};
|
830 |
+
scrollify.enable = function() {
|
831 |
+
disabled = false;
|
832 |
+
if (initialised) {
|
833 |
+
//instant,callbacks
|
834 |
+
manualScroll.calculateNearest(false,false);
|
835 |
+
}
|
836 |
+
};
|
837 |
+
scrollify.isDisabled = function() {
|
838 |
+
return disabled;
|
839 |
+
};
|
840 |
+
scrollify.setOptions = function(updatedOptions) {
|
841 |
+
if(!initialised) {
|
842 |
+
return false;
|
843 |
+
}
|
844 |
+
if(typeof updatedOptions === "object") {
|
845 |
+
settings = $.extend(settings, updatedOptions);
|
846 |
+
util.handleUpdate();
|
847 |
+
} else if(window.console) {
|
848 |
+
console.warn("Scrollify warning: setOptions expects an object.");
|
849 |
+
}
|
850 |
+
};
|
851 |
+
$.scrollify = scrollify;
|
852 |
+
return scrollify;
|
853 |
+
}));
|
assets/js/premium-addons.js
CHANGED
@@ -355,7 +355,7 @@
|
|
355 |
draggable: carouselSettings["draggable"],
|
356 |
touchMove: carouselSettings["touchMove"],
|
357 |
rtl: carouselSettings["rtl"],
|
358 |
-
useTransform:
|
359 |
adaptiveHeight: carouselSettings["adaptiveHeight"],
|
360 |
pauseOnHover: carouselSettings["pauseOnHover"],
|
361 |
centerMode: carouselSettings["centerMode"],
|
355 |
draggable: carouselSettings["draggable"],
|
356 |
touchMove: carouselSettings["touchMove"],
|
357 |
rtl: carouselSettings["rtl"],
|
358 |
+
useTransform: true,
|
359 |
adaptiveHeight: carouselSettings["adaptiveHeight"],
|
360 |
pauseOnHover: carouselSettings["pauseOnHover"],
|
361 |
centerMode: carouselSettings["centerMode"],
|
assets/js/premium-vscroll.js
CHANGED
@@ -1,12 +1,243 @@
|
|
1 |
-
|
|
|
|
|
|
|
2 |
/****** Premium Vertical Scroll Handler ******/
|
3 |
var PremiumVerticalScrollHandler = function($scope, $) {
|
4 |
-
|
5 |
-
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
-
|
9 |
-
|
10 |
};
|
11 |
|
12 |
window.premiumVerticalScroll = function($selector, settings) {
|
@@ -482,4 +713,4 @@
|
|
482 |
PremiumVerticalScrollHandler
|
483 |
);
|
484 |
});
|
485 |
-
})(jQuery);
|
1 |
+
// Works on mobile but needs enhancements
|
2 |
+
|
3 |
+
( function( $ ) {
|
4 |
+
|
5 |
/****** Premium Vertical Scroll Handler ******/
|
6 |
var PremiumVerticalScrollHandler = function($scope, $) {
|
7 |
+
|
8 |
+
var vScrollElem = $scope.find( ".premium-vscroll-wrap" ),
|
9 |
+
instance = null,
|
10 |
+
vScrollSettings = vScrollElem.data( "settings" );
|
11 |
+
|
12 |
+
// var touch = vScrollSettings.touch;
|
13 |
+
|
14 |
+
instance = new premiumVerticalScroll( vScrollElem, vScrollSettings );
|
15 |
+
instance.init();
|
16 |
+
|
17 |
+
// var isTouchDevice = navigator.userAgent.match(/(iPhone|iPod|iPad|Android|playbook|silk|BlackBerry|BB10|Windows Phone|Tizen|Bada|webOS|IEMobile|Opera Mini)/);
|
18 |
+
// var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0) || (navigator.maxTouchPoints));
|
19 |
+
//
|
20 |
+
//
|
21 |
+
// if( touch ) {
|
22 |
+
// instance = new premiumVerticalScroll2( vScrollElem, vScrollSettings );
|
23 |
+
// instance.init();
|
24 |
+
// } else {
|
25 |
+
// if ( isTouchDevice || isTouch ) {
|
26 |
+
// instance = new premiumVerticalScroll( vScrollElem, vScrollSettings );
|
27 |
+
// instance.init();
|
28 |
+
// } else {
|
29 |
+
// instance = new premiumVerticalScroll2( vScrollElem, vScrollSettings );
|
30 |
+
// instance.init();
|
31 |
+
// }
|
32 |
+
// }
|
33 |
+
|
34 |
+
|
35 |
+
};
|
36 |
+
|
37 |
+
|
38 |
+
window.premiumVerticalScroll2 = function( $selector, settings ) {
|
39 |
+
|
40 |
+
var self = this,
|
41 |
+
$instance = $selector,
|
42 |
+
$window = $( window ),
|
43 |
+
$htmlBody = $("html, body"),
|
44 |
+
checkTemps = $selector.find( ".premium-vscroll-sections-wrap" ).length,
|
45 |
+
deviceType = $("body").data("elementor-device-mode"),
|
46 |
+
$itemsList = $(".premium-vscroll-dot-item", $instance),
|
47 |
+
$menuItems = $(".premium-vscroll-nav-item", $instance),
|
48 |
+
animated = 0;
|
49 |
+
|
50 |
+
|
51 |
+
var $lastItem = $itemsList.last(),
|
52 |
+
lastSectionId = $lastItem.data("menuanchor"),
|
53 |
+
lastOffset = Math.round( $( "#" + lastSectionId ).offset().top );
|
54 |
+
|
55 |
+
self.init = function() {
|
56 |
+
|
57 |
+
self.setSectionsData();
|
58 |
+
|
59 |
+
$itemsList.on("click.premiumVerticalScroll", self.onNavDotChange);
|
60 |
+
$menuItems.on("click.premiumVerticalScroll", self.onNavDotChange);
|
61 |
+
|
62 |
+
$itemsList.on( "mouseenter.premiumVerticalScroll", self.onNavDotEnter );
|
63 |
+
|
64 |
+
$itemsList.on( "mouseleave.premiumVerticalScroll", self.onNavDotLeave );
|
65 |
+
|
66 |
+
$.scrollify({
|
67 |
+
section: ".premium-vscroll-section",
|
68 |
+
updateHash: false,
|
69 |
+
standardScrollElements: "#" + lastSectionId,
|
70 |
+
scrollSpeed: settings.speed,
|
71 |
+
overflowScroll: settings.overflow,
|
72 |
+
setHeights: settings.setHeight,
|
73 |
+
before: function( index ) {
|
74 |
+
|
75 |
+
$menuItems.removeClass("active");
|
76 |
+
$itemsList.removeClass("active");
|
77 |
+
|
78 |
+
$( $itemsList[ index ] ).addClass( "active" );
|
79 |
+
$( $menuItems[ index ] ).addClass( "active" );
|
80 |
+
|
81 |
+
},
|
82 |
+
after: function( index ) {
|
83 |
+
|
84 |
+
if ( index === $lastItem.index() ) {
|
85 |
+
// $.scrollify.disable();
|
86 |
+
}
|
87 |
+
|
88 |
+
},
|
89 |
+
afterRender: function() {
|
90 |
+
|
91 |
+
$( $itemsList[ 0 ] ).addClass( "active" );
|
92 |
+
$( $menuItems[ 0 ] ).addClass( "active" );
|
93 |
+
|
94 |
+
}
|
95 |
+
});
|
96 |
+
|
97 |
+
if ( deviceType === "desktop" ) {
|
98 |
+
|
99 |
+
$window.on( "scroll.premiumVerticalScroll2", self.onWheel );
|
100 |
+
|
101 |
+
}
|
102 |
+
|
103 |
+
if ( settings.fullSection ) {
|
104 |
+
|
105 |
+
var vSection = document.getElementById( $instance.attr("id") );
|
106 |
+
|
107 |
+
if ( checkTemps ) {
|
108 |
+
|
109 |
+
document.addEventListener
|
110 |
+
? vSection.addEventListener("wheel", self.onWheel, !1)
|
111 |
+
: vSection.attachEvent("onmousewheel", self.onWheel);
|
112 |
+
|
113 |
+
} else {
|
114 |
+
|
115 |
+
document.addEventListener
|
116 |
+
? document.addEventListener("wheel", self.onWheel, !1)
|
117 |
+
: document.attachEvent("onmousewheel", self.onWheel);
|
118 |
+
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
};
|
123 |
+
|
124 |
+
self.onWheel = function( event ) {
|
125 |
+
|
126 |
+
var $target = $( event.target ),
|
127 |
+
sectionSelector = checkTemps ? ".premium-vscroll-temp" : ".elementor-top-section",
|
128 |
+
$section = $target.closest( sectionSelector ),
|
129 |
+
sectionId = $section.attr( "id" ),
|
130 |
+
$currentSection = $.scrollify.current();
|
131 |
+
|
132 |
+
//re-enable Scrollify
|
133 |
+
if ( sectionId !== lastSectionId && $section.hasClass("premium-vscroll-section") && $.scrollify.isDisabled() ) {
|
134 |
+
|
135 |
+
$(".premium-vscroll-dots, .premium-vscroll-nav-menu").removeClass(
|
136 |
+
"premium-vscroll-dots-hide"
|
137 |
+
);
|
138 |
+
|
139 |
+
$.scrollify.enable();
|
140 |
+
|
141 |
+
}
|
142 |
+
|
143 |
+
if ( ! $section.hasClass("premium-vscroll-section") && $.scrollify.isDisabled() ) {
|
144 |
+
|
145 |
+
$(".premium-vscroll-tooltip").hide();
|
146 |
+
|
147 |
+
$(".premium-vscroll-dots, .premium-vscroll-nav-menu").addClass(
|
148 |
+
"premium-vscroll-dots-hide"
|
149 |
+
);
|
150 |
+
|
151 |
+
}
|
152 |
+
|
153 |
+
|
154 |
+
|
155 |
+
};
|
156 |
+
|
157 |
+
self.moveSectionDown = function() {
|
158 |
+
$.scrollify.next();
|
159 |
+
}
|
160 |
+
|
161 |
+
self.moveSectionUp = function() {
|
162 |
+
$.scrollify.previous();
|
163 |
+
}
|
164 |
+
|
165 |
+
self.moveToSection = function( index ) {
|
166 |
+
|
167 |
+
$.scrollify.move( index );
|
168 |
+
}
|
169 |
+
|
170 |
+
self.setSectionsData = function() {
|
171 |
+
|
172 |
+
$itemsList.each( function() {
|
173 |
+
|
174 |
+
var $this = $( this ),
|
175 |
+
sectionId = $this.data( "menuanchor" ),
|
176 |
+
$section = $( "#" + sectionId );
|
177 |
+
|
178 |
+
$section.addClass( "premium-vscroll-section" );
|
179 |
+
|
180 |
+
});
|
181 |
+
|
182 |
+
};
|
183 |
+
|
184 |
+
self.onNavDotChange = function( event ) {
|
185 |
+
|
186 |
+
var $this = $( this ),
|
187 |
+
index = $this.index(),
|
188 |
+
sectionId = $this.data("menuanchor");
|
189 |
+
|
190 |
+
// if ( ! isScrolling ) {
|
191 |
+
|
192 |
+
if ( $.scrollify.isDisabled() ) {
|
193 |
+
|
194 |
+
$.scrollify.enable();
|
195 |
+
|
196 |
+
}
|
197 |
+
|
198 |
+
$menuItems.removeClass("active");
|
199 |
+
$itemsList.removeClass("active");
|
200 |
+
|
201 |
+
if ( $this.hasClass( "premium-vscroll-nav-item") ) {
|
202 |
+
|
203 |
+
$( $itemsList[ index ] ).addClass( "active" );
|
204 |
+
|
205 |
+
} else {
|
206 |
+
|
207 |
+
$( $menuItems[ index ] ).addClass( "active" );
|
208 |
+
}
|
209 |
+
|
210 |
+
$this.addClass( "active" );
|
211 |
+
|
212 |
+
self.moveToSection( index );
|
213 |
+
|
214 |
+
// }
|
215 |
+
};
|
216 |
+
|
217 |
+
self.onNavDotEnter = function() {
|
218 |
+
|
219 |
+
var $this = $( this ),
|
220 |
+
index = $this.data("index");
|
221 |
+
|
222 |
+
if ( settings.tooltips ) {
|
223 |
+
|
224 |
+
$('<div class="premium-vscroll-tooltip"><span>' + settings.dotsText[index] + "</span></div>" ).hide().appendTo( $this ).fadeIn( 200 );
|
225 |
+
}
|
226 |
+
|
227 |
+
};
|
228 |
+
|
229 |
+
self.onNavDotLeave = function() {
|
230 |
+
|
231 |
+
$( ".premium-vscroll-tooltip" ).fadeOut( 200, function() {
|
232 |
+
|
233 |
+
$( this ).remove();
|
234 |
+
|
235 |
+
});
|
236 |
+
|
237 |
+
};
|
238 |
|
239 |
+
|
240 |
+
|
241 |
};
|
242 |
|
243 |
window.premiumVerticalScroll = function($selector, settings) {
|
713 |
PremiumVerticalScrollHandler
|
714 |
);
|
715 |
});
|
716 |
+
})( jQuery );
|
includes/class-addons-integration.php
CHANGED
@@ -213,6 +213,14 @@ class Premium_Addons_Integration {
|
|
213 |
true
|
214 |
);
|
215 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
216 |
}
|
217 |
|
218 |
/*
|
213 |
true
|
214 |
);
|
215 |
|
216 |
+
// wp_register_script(
|
217 |
+
// 'scrollify-js',
|
218 |
+
// PREMIUM_ADDONS_URL . 'assets/js/lib/scrollify.js',
|
219 |
+
// array('jquery'),
|
220 |
+
// PREMIUM_ADDONS_VERSION,
|
221 |
+
// true
|
222 |
+
// );
|
223 |
+
|
224 |
}
|
225 |
|
226 |
/*
|
includes/compatibility/class-premium-addons-wpml.php
CHANGED
@@ -34,21 +34,36 @@ if ( ! class_exists ('Premium_Addons_Wpml') ) {
|
|
34 |
}
|
35 |
}
|
36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
public static function is_wpml_active() {
|
38 |
|
39 |
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
40 |
|
41 |
-
|
42 |
|
43 |
}
|
44 |
|
45 |
/**
|
|
|
|
|
|
|
46 |
* Integrations class for widgets with complex controls.
|
47 |
*
|
48 |
* @since 3.1.9
|
49 |
*/
|
50 |
public function includes() {
|
51 |
|
|
|
52 |
include_once( 'widgets/fancy-text.php' );
|
53 |
include_once( 'widgets/grid.php' );
|
54 |
include_once( 'widgets/maps.php' );
|
@@ -253,6 +268,11 @@ if ( ! class_exists ('Premium_Addons_Wpml') ) {
|
|
253 |
]
|
254 |
];
|
255 |
|
|
|
|
|
|
|
|
|
|
|
256 |
$widgets['premium-addon-fancy-text'] = [
|
257 |
'conditions' => [ 'widgetType' => 'premium-addon-fancy-text' ],
|
258 |
'fields' => [
|
@@ -562,8 +582,8 @@ if( ! function_exists('premium_addons_wpml') ) {
|
|
562 |
|
563 |
/**
|
564 |
* Triggers `get_instance` method
|
565 |
-
* @since 0.0.1
|
566 |
-
|
567 |
* return object
|
568 |
*/
|
569 |
function premium_addons_wpml() {
|
34 |
}
|
35 |
}
|
36 |
|
37 |
+
|
38 |
+
/*
|
39 |
+
* Is WPML Active
|
40 |
+
*
|
41 |
+
* Check if WPML String Translation active
|
42 |
+
*
|
43 |
+
* @since 3.1.9
|
44 |
+
* @access private
|
45 |
+
*
|
46 |
+
* @return boolean is WPML String Translation
|
47 |
+
*/
|
48 |
public static function is_wpml_active() {
|
49 |
|
50 |
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
51 |
|
52 |
+
return is_plugin_active( 'wpml-string-translation/plugin.php' );
|
53 |
|
54 |
}
|
55 |
|
56 |
/**
|
57 |
+
*
|
58 |
+
* Includes
|
59 |
+
*
|
60 |
* Integrations class for widgets with complex controls.
|
61 |
*
|
62 |
* @since 3.1.9
|
63 |
*/
|
64 |
public function includes() {
|
65 |
|
66 |
+
include_once( 'widgets/carousel.php' );
|
67 |
include_once( 'widgets/fancy-text.php' );
|
68 |
include_once( 'widgets/grid.php' );
|
69 |
include_once( 'widgets/maps.php' );
|
268 |
]
|
269 |
];
|
270 |
|
271 |
+
$widgets['premium-carousel-widget'] = [
|
272 |
+
'conditions' => [ 'widgetType' => 'premium-carousel-widget' ],
|
273 |
+
'integration-class' => 'PremiumAddons\Compatibility\WPML\Widgets\Carousel',
|
274 |
+
];
|
275 |
+
|
276 |
$widgets['premium-addon-fancy-text'] = [
|
277 |
'conditions' => [ 'widgetType' => 'premium-addon-fancy-text' ],
|
278 |
'fields' => [
|
582 |
|
583 |
/**
|
584 |
* Triggers `get_instance` method
|
585 |
+
* @since 0.0.1
|
586 |
+
* @access public
|
587 |
* return object
|
588 |
*/
|
589 |
function premium_addons_wpml() {
|
includes/compatibility/widgets/carousel.php
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace PremiumAddons\Compatibility\WPML\Widgets;
|
4 |
+
|
5 |
+
use WPML_Elementor_Module_With_Items;
|
6 |
+
|
7 |
+
if ( ! defined('ABSPATH') ) exit; // No access of directly access
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Carousel
|
11 |
+
*
|
12 |
+
* Registers translatable widget with items.
|
13 |
+
*
|
14 |
+
* @since 3.2.4
|
15 |
+
*/
|
16 |
+
class Carousel extends WPML_Elementor_Module_With_Items {
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Retrieve the field name.
|
20 |
+
*
|
21 |
+
* @since 3.2.4
|
22 |
+
* @return string
|
23 |
+
*/
|
24 |
+
public function get_items_field() {
|
25 |
+
return 'premium_carousel_templates_repeater';
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Retrieve the fields inside the repeater.
|
30 |
+
*
|
31 |
+
* @since 3.2.4
|
32 |
+
*
|
33 |
+
* @return array
|
34 |
+
*/
|
35 |
+
public function get_fields() {
|
36 |
+
return array(
|
37 |
+
'premium_carousel_repeater_item',
|
38 |
+
);
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Get the title for each repeater string
|
43 |
+
*
|
44 |
+
* @since 3.2.4
|
45 |
+
*
|
46 |
+
* @return string
|
47 |
+
*/
|
48 |
+
protected function get_title( $field ) {
|
49 |
+
|
50 |
+
return __( 'Carousel : Template', 'premium-addons-for-elementor' );
|
51 |
+
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Get `editor_type` for each repeater string
|
56 |
+
*
|
57 |
+
* @since 3.2.4
|
58 |
+
*
|
59 |
+
* @return string
|
60 |
+
*/
|
61 |
+
protected function get_editor_type( $field ) {
|
62 |
+
|
63 |
+
return 'LINE';
|
64 |
+
}
|
65 |
+
|
66 |
+
}
|
premium-addons-for-elementor.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Premium Addons for Elementor
|
4 |
Description: Premium Addons Plugin Includes 22+ premium widgets for Elementor Page Builder.
|
5 |
Plugin URI: https://premiumaddons.com
|
6 |
-
Version: 3.2.
|
7 |
Author: Leap13
|
8 |
Author URI: http://leap13.com/
|
9 |
Text Domain: premium-addons-for-elementor
|
@@ -14,12 +14,12 @@ License: GNU General Public License v3.0
|
|
14 |
if ( ! defined('ABSPATH') ) exit; // No access of directly access
|
15 |
|
16 |
// Define Constants
|
17 |
-
define('PREMIUM_ADDONS_VERSION', '3.2.
|
18 |
define('PREMIUM_ADDONS_URL', plugins_url('/', __FILE__));
|
19 |
define('PREMIUM_ADDONS_PATH', plugin_dir_path(__FILE__));
|
20 |
define('PREMIUM_ADDONS_FILE', __FILE__);
|
21 |
define('PREMIUM_ADDONS_BASENAME', plugin_basename(PREMIUM_ADDONS_FILE));
|
22 |
-
define('PREMIUM_ADDONS_STABLE_VERSION', '3.2.
|
23 |
|
24 |
if( ! class_exists('Premium_Addons_Elementor') ) {
|
25 |
/*
|
@@ -56,6 +56,7 @@ if( ! class_exists('Premium_Addons_Elementor') ) {
|
|
56 |
* @return void
|
57 |
*/
|
58 |
public function premium_addons_elementor_setup() {
|
|
|
59 |
$this->load_domain();
|
60 |
|
61 |
$this->init_files();
|
@@ -111,7 +112,9 @@ if( ! class_exists('Premium_Addons_Elementor') ) {
|
|
111 |
* @return void
|
112 |
*/
|
113 |
public function load_domain() {
|
114 |
-
|
|
|
|
|
115 |
}
|
116 |
|
117 |
/**
|
3 |
Plugin Name: Premium Addons for Elementor
|
4 |
Description: Premium Addons Plugin Includes 22+ premium widgets for Elementor Page Builder.
|
5 |
Plugin URI: https://premiumaddons.com
|
6 |
+
Version: 3.2.4
|
7 |
Author: Leap13
|
8 |
Author URI: http://leap13.com/
|
9 |
Text Domain: premium-addons-for-elementor
|
14 |
if ( ! defined('ABSPATH') ) exit; // No access of directly access
|
15 |
|
16 |
// Define Constants
|
17 |
+
define('PREMIUM_ADDONS_VERSION', '3.2.4');
|
18 |
define('PREMIUM_ADDONS_URL', plugins_url('/', __FILE__));
|
19 |
define('PREMIUM_ADDONS_PATH', plugin_dir_path(__FILE__));
|
20 |
define('PREMIUM_ADDONS_FILE', __FILE__);
|
21 |
define('PREMIUM_ADDONS_BASENAME', plugin_basename(PREMIUM_ADDONS_FILE));
|
22 |
+
define('PREMIUM_ADDONS_STABLE_VERSION', '3.2.3');
|
23 |
|
24 |
if( ! class_exists('Premium_Addons_Elementor') ) {
|
25 |
/*
|
56 |
* @return void
|
57 |
*/
|
58 |
public function premium_addons_elementor_setup() {
|
59 |
+
|
60 |
$this->load_domain();
|
61 |
|
62 |
$this->init_files();
|
112 |
* @return void
|
113 |
*/
|
114 |
public function load_domain() {
|
115 |
+
|
116 |
+
load_plugin_textdomain( 'premium-addons-for-elementor' );
|
117 |
+
|
118 |
}
|
119 |
|
120 |
/**
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Donate link: http://premiumaddons.com
|
|
5 |
Requires at least: 4.5
|
6 |
Tested up to: 5.1.1
|
7 |
Requires PHP: 5.4
|
8 |
-
Stable tag: 3.2.
|
9 |
License: GPL v3.0
|
10 |
License URI: https://opensource.org/licenses/GPL-3.0
|
11 |
|
@@ -139,6 +139,13 @@ Premium Addons for Elementor is 100% Ads Free, Ads can only be detected from You
|
|
139 |
|
140 |
== Changelog ==
|
141 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
= 3.2.3 =
|
143 |
|
144 |
- Tweak: Added `Dynamic Content` support for Progress Bar value.
|
5 |
Requires at least: 4.5
|
6 |
Tested up to: 5.1.1
|
7 |
Requires PHP: 5.4
|
8 |
+
Stable tag: 3.2.4
|
9 |
License: GPL v3.0
|
10 |
License URI: https://opensource.org/licenses/GPL-3.0
|
11 |
|
139 |
|
140 |
== Changelog ==
|
141 |
|
142 |
+
= 3.2.4 =
|
143 |
+
|
144 |
+
- Tweak: Added `Portuguese` translation.
|
145 |
+
- Tweak: `WPML Compatibility` for Carousel widget.
|
146 |
+
- Tweak: Use `transform` instead of `absolute` position to enhance Carousel widget transitions.
|
147 |
+
- Fixed: Grid widget images don't fill container height for some themes.
|
148 |
+
|
149 |
= 3.2.3 =
|
150 |
|
151 |
- Tweak: Added `Dynamic Content` support for Progress Bar value.
|
widgets/premium-progressbar.php
CHANGED
@@ -584,8 +584,10 @@ class Premium_Progressbar extends Widget_Base {
|
|
584 |
$this->add_inline_editing_attributes('premium_progressbar_left_label');
|
585 |
$this->add_inline_editing_attributes('premium_progressbar_right_label');
|
586 |
|
|
|
|
|
587 |
$progressbar_settings = [
|
588 |
-
'progress_length' => $
|
589 |
'speed' => !empty( $settings['premium_progressbar_speed'] ) ? $settings['premium_progressbar_speed'] : 1000
|
590 |
];
|
591 |
?>
|
584 |
$this->add_inline_editing_attributes('premium_progressbar_left_label');
|
585 |
$this->add_inline_editing_attributes('premium_progressbar_right_label');
|
586 |
|
587 |
+
$length = isset ( $settings['premium_progressbar_progress_percentage']['size'] ) ? $settings['premium_progressbar_progress_percentage']['size'] : $settings['premium_progressbar_progress_percentage'];
|
588 |
+
|
589 |
$progressbar_settings = [
|
590 |
+
'progress_length' => $length,
|
591 |
'speed' => !empty( $settings['premium_progressbar_speed'] ) ? $settings['premium_progressbar_speed'] : 1000
|
592 |
];
|
593 |
?>
|