Version Description
- Added Compatibility with Elementor and Elementor PRO 2.
- Added - Dynamic field connections for most widgets supported by Elementor 2.
- Updated - Removed Livemesh prefix from all elements. For example, Livemesh Services is now named Services, Livemesh Tabs is now Tabs, Livemesh Grid is now Posts Grid etc.
- Added - Ability to specify client name in HTML for additional formatting.
- Updated - Waypoints script with new API for handling events on scroll
- Fixed - Some themes can break animations and report script errors for elements like piecharts, odometers, progress bars etc.
Download this release
Release Info
Developer | livemesh |
Plugin | Addons for Elementor |
Version | 1.6 |
Comparing to | |
See all releases |
Code changes from version 1.5.4 to 1.6
- admin/views/documentation.php +9 -0
- assets/js/jquery.waypoints.js +637 -477
- assets/js/jquery.waypoints.min.js +7 -1
- assets/js/lae-widgets.js +6 -6
- assets/js/lae-widgets.min.js +1 -1
- includes/widgets/carousel.php +5 -2
- includes/widgets/clients.php +13 -4
- includes/widgets/heading.php +11 -2
- includes/widgets/odometers.php +22 -3
- includes/widgets/piecharts.php +6 -2
- includes/widgets/portfolio.php +8 -5
- includes/widgets/posts-carousel.php +2 -2
- includes/widgets/pricing-table.php +24 -3
- includes/widgets/services.php +11 -2
- includes/widgets/stats-bars.php +5 -2
- includes/widgets/team-members.php +66 -2
- includes/widgets/testimonials-slider.php +14 -2
- includes/widgets/testimonials.php +14 -2
- livemesh-elementor-addons.php +5 -5
- readme.txt +9 -1
admin/views/documentation.php
CHANGED
@@ -1123,6 +1123,15 @@ else {
|
|
1123 |
|
1124 |
<!-- Updates panel -->
|
1125 |
<div id="updates-panel" class="panel-left">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1126 |
<h3>1.5.4</h3>
|
1127 |
<ul>
|
1128 |
<li>Fixed – Livemesh Grid columns can break in certain resolutions in FireFox.</li>
|
1123 |
|
1124 |
<!-- Updates panel -->
|
1125 |
<div id="updates-panel" class="panel-left">
|
1126 |
+
<h3>1.6</h3>
|
1127 |
+
<ul>
|
1128 |
+
<li>Added – Compatibility with Elementor and Elementor PRO 2.</li>
|
1129 |
+
<li>Added - Dynamic field connections for most widgets supported by Elementor 2.</li>
|
1130 |
+
<li>Updated - Removed Livemesh prefix from all elements. For example, Livemesh Services is now named Services, Livemesh Tabs is now Tabs, Livemesh Grid is now Posts Grid etc.</li>
|
1131 |
+
<li>Added - Ability to specify client name in HTML for additional formatting.</li>
|
1132 |
+
<li>Updated - Waypoints script with new API for handling events on scroll</li>
|
1133 |
+
<li>Fixed - Some themes can break animations and report script errors for elements like piecharts, odometers, progress bars etc.</li>
|
1134 |
+
</ul>
|
1135 |
<h3>1.5.4</h3>
|
1136 |
<ul>
|
1137 |
<li>Fixed – Livemesh Grid columns can break in certain resolutions in FireFox.</li>
|
assets/js/jquery.waypoints.js
CHANGED
@@ -1,502 +1,662 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
Dual licensed under the MIT license and GPL license.
|
7 |
-
https://github.com/imakewebthings/jquery-waypoints/blob/master/licenses.txt
|
8 |
*/
|
|
|
|
|
9 |
|
|
|
|
|
10 |
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
if (
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
}
|
|
|
|
|
82 |
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
oldScroll: this.oldScroll.y,
|
96 |
-
forward: 'down',
|
97 |
-
backward: 'up'
|
98 |
-
}
|
99 |
-
};
|
100 |
-
if (isTouch && (!axes.vertical.oldScroll || !axes.vertical.newScroll)) {
|
101 |
-
$[wps]('refresh');
|
102 |
-
}
|
103 |
-
$.each(axes, function(aKey, axis) {
|
104 |
-
var direction, isForward, triggered;
|
105 |
-
triggered = [];
|
106 |
-
isForward = axis.newScroll > axis.oldScroll;
|
107 |
-
direction = isForward ? axis.forward : axis.backward;
|
108 |
-
$.each(_this.waypoints[aKey], function(wKey, waypoint) {
|
109 |
-
var _ref, _ref1;
|
110 |
-
if ((axis.oldScroll < (_ref = waypoint.offset) && _ref <= axis.newScroll)) {
|
111 |
-
return triggered.push(waypoint);
|
112 |
-
} else if ((axis.newScroll < (_ref1 = waypoint.offset) && _ref1 <= axis.oldScroll)) {
|
113 |
-
return triggered.push(waypoint);
|
114 |
-
}
|
115 |
-
});
|
116 |
-
triggered.sort(function(a, b) {
|
117 |
-
return a.offset - b.offset;
|
118 |
-
});
|
119 |
-
if (!isForward) {
|
120 |
-
triggered.reverse();
|
121 |
-
}
|
122 |
-
return $.each(triggered, function(i, waypoint) {
|
123 |
-
if (waypoint.options.continuous || i === triggered.length - 1) {
|
124 |
-
return waypoint.trigger([direction]);
|
125 |
-
}
|
126 |
-
});
|
127 |
-
});
|
128 |
-
return this.oldScroll = {
|
129 |
-
x: axes.horizontal.newScroll,
|
130 |
-
y: axes.vertical.newScroll
|
131 |
-
};
|
132 |
-
};
|
133 |
-
|
134 |
-
Context.prototype.refresh = function() {
|
135 |
-
var axes, cOffset, isWin,
|
136 |
-
_this = this;
|
137 |
-
isWin = $.isWindow(this.element);
|
138 |
-
cOffset = this.$element.offset();
|
139 |
-
this.doScroll();
|
140 |
-
axes = {
|
141 |
-
horizontal: {
|
142 |
-
contextOffset: isWin ? 0 : cOffset.left,
|
143 |
-
contextScroll: isWin ? 0 : this.oldScroll.x,
|
144 |
-
contextDimension: this.$element.width(),
|
145 |
-
oldScroll: this.oldScroll.x,
|
146 |
-
forward: 'right',
|
147 |
-
backward: 'left',
|
148 |
-
offsetProp: 'left'
|
149 |
-
},
|
150 |
-
vertical: {
|
151 |
-
contextOffset: isWin ? 0 : cOffset.top,
|
152 |
-
contextScroll: isWin ? 0 : this.oldScroll.y,
|
153 |
-
contextDimension: isWin ? $[wps]('viewportHeight') : this.$element.height(),
|
154 |
-
oldScroll: this.oldScroll.y,
|
155 |
-
forward: 'down',
|
156 |
-
backward: 'up',
|
157 |
-
offsetProp: 'top'
|
158 |
-
}
|
159 |
-
};
|
160 |
-
return $.each(axes, function(aKey, axis) {
|
161 |
-
return $.each(_this.waypoints[aKey], function(i, waypoint) {
|
162 |
-
var adjustment, elementOffset, oldOffset, _ref, _ref1;
|
163 |
-
adjustment = waypoint.options.offset;
|
164 |
-
oldOffset = waypoint.offset;
|
165 |
-
elementOffset = $.isWindow(waypoint.element) ? 0 : waypoint.$element.offset()[axis.offsetProp];
|
166 |
-
if ($.isFunction(adjustment)) {
|
167 |
-
adjustment = adjustment.apply(waypoint.element);
|
168 |
-
} else if (typeof adjustment === 'string') {
|
169 |
-
adjustment = parseFloat(adjustment);
|
170 |
-
if (waypoint.options.offset.indexOf('%') > -1) {
|
171 |
-
adjustment = Math.ceil(axis.contextDimension * adjustment / 100);
|
172 |
-
}
|
173 |
-
}
|
174 |
-
waypoint.offset = elementOffset - axis.contextOffset + axis.contextScroll - adjustment;
|
175 |
-
if ((waypoint.options.onlyOnScroll && (oldOffset != null)) || !waypoint.enabled) {
|
176 |
-
return;
|
177 |
-
}
|
178 |
-
if (oldOffset !== null && (oldOffset < (_ref = axis.oldScroll) && _ref <= waypoint.offset)) {
|
179 |
-
return waypoint.trigger([axis.backward]);
|
180 |
-
} else if (oldOffset !== null && (oldOffset > (_ref1 = axis.oldScroll) && _ref1 >= waypoint.offset)) {
|
181 |
-
return waypoint.trigger([axis.forward]);
|
182 |
-
} else if (oldOffset === null && axis.oldScroll >= waypoint.offset) {
|
183 |
-
return waypoint.trigger([axis.forward]);
|
184 |
-
}
|
185 |
-
});
|
186 |
-
});
|
187 |
-
};
|
188 |
-
|
189 |
-
Context.prototype.checkEmpty = function() {
|
190 |
-
if ($.isEmptyObject(this.waypoints.horizontal) && $.isEmptyObject(this.waypoints.vertical)) {
|
191 |
-
this.$element.unbind([resizeEvent, scrollEvent].join(' '));
|
192 |
-
return delete contexts[this.id];
|
193 |
-
}
|
194 |
-
};
|
195 |
-
|
196 |
-
return Context;
|
197 |
-
|
198 |
-
})();
|
199 |
-
Waypoint = (function() {
|
200 |
-
|
201 |
-
function Waypoint($element, context, options) {
|
202 |
-
var idList, _ref;
|
203 |
-
options = $.extend({}, $.fn[wp].defaults, options);
|
204 |
-
if (options.offset === 'bottom-in-view') {
|
205 |
-
options.offset = function() {
|
206 |
-
var contextHeight;
|
207 |
-
contextHeight = $[wps]('viewportHeight');
|
208 |
-
if (!$.isWindow(context.element)) {
|
209 |
-
contextHeight = context.$element.height();
|
210 |
-
}
|
211 |
-
return contextHeight - $(this).outerHeight();
|
212 |
-
};
|
213 |
-
}
|
214 |
-
this.$element = $element;
|
215 |
-
this.element = $element[0];
|
216 |
-
this.axis = options.horizontal ? 'horizontal' : 'vertical';
|
217 |
-
this.callback = options.handler;
|
218 |
-
this.context = context;
|
219 |
-
this.enabled = options.enabled;
|
220 |
-
this.id = 'waypoints' + waypointCounter++;
|
221 |
-
this.offset = null;
|
222 |
-
this.options = options;
|
223 |
-
context.waypoints[this.axis][this.id] = this;
|
224 |
-
allWaypoints[this.axis][this.id] = this;
|
225 |
-
idList = (_ref = $element.data(waypointKey)) != null ? _ref : [];
|
226 |
-
idList.push(this.id);
|
227 |
-
$element.data(waypointKey, idList);
|
228 |
}
|
|
|
|
|
229 |
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
};
|
245 |
-
|
246 |
-
Waypoint.prototype.enable = function() {
|
247 |
-
this.context.refresh();
|
248 |
-
return this.enabled = true;
|
249 |
-
};
|
250 |
-
|
251 |
-
Waypoint.prototype.destroy = function() {
|
252 |
-
delete allWaypoints[this.axis][this.id];
|
253 |
-
delete this.context.waypoints[this.axis][this.id];
|
254 |
-
return this.context.checkEmpty();
|
255 |
-
};
|
256 |
-
|
257 |
-
Waypoint.getWaypointsByElement = function(element) {
|
258 |
-
var all, ids;
|
259 |
-
ids = $(element).data(waypointKey);
|
260 |
-
if (!ids) {
|
261 |
-
return [];
|
262 |
-
}
|
263 |
-
all = $.extend({}, allWaypoints.horizontal, allWaypoints.vertical);
|
264 |
-
return $.map(ids, function(id) {
|
265 |
-
return all[id];
|
266 |
-
});
|
267 |
-
};
|
268 |
-
|
269 |
-
return Waypoint;
|
270 |
-
|
271 |
-
})();
|
272 |
-
methods = {
|
273 |
-
init: function(f, options) {
|
274 |
-
var _ref;
|
275 |
-
if (options == null) {
|
276 |
-
options = {};
|
277 |
-
}
|
278 |
-
if ((_ref = options.handler) == null) {
|
279 |
-
options.handler = f;
|
280 |
-
}
|
281 |
-
this.each(function() {
|
282 |
-
var $this, context, contextElement, _ref1;
|
283 |
-
$this = $(this);
|
284 |
-
contextElement = (_ref1 = options.context) != null ? _ref1 : $.fn[wp].defaults.context;
|
285 |
-
if (!$.isWindow(contextElement)) {
|
286 |
-
contextElement = $this.closest(contextElement);
|
287 |
-
}
|
288 |
-
contextElement = $(contextElement);
|
289 |
-
context = contexts[contextElement.data(contextKey)];
|
290 |
-
if (!context) {
|
291 |
-
context = new Context(contextElement);
|
292 |
-
}
|
293 |
-
return new Waypoint($this, context, options);
|
294 |
-
});
|
295 |
-
$[wps]('refresh');
|
296 |
-
return this;
|
297 |
-
},
|
298 |
-
disable: function() {
|
299 |
-
return methods._invoke(this, 'disable');
|
300 |
-
},
|
301 |
-
enable: function() {
|
302 |
-
return methods._invoke(this, 'enable');
|
303 |
-
},
|
304 |
-
destroy: function() {
|
305 |
-
return methods._invoke(this, 'destroy');
|
306 |
-
},
|
307 |
-
prev: function(axis, selector) {
|
308 |
-
return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) {
|
309 |
-
if (index > 0) {
|
310 |
-
return stack.push(waypoints[index - 1]);
|
311 |
-
}
|
312 |
-
});
|
313 |
-
},
|
314 |
-
next: function(axis, selector) {
|
315 |
-
return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) {
|
316 |
-
if (index < waypoints.length - 1) {
|
317 |
-
return stack.push(waypoints[index + 1]);
|
318 |
-
}
|
319 |
-
});
|
320 |
},
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
325 |
}
|
326 |
-
|
327 |
-
|
|
|
|
|
|
|
|
|
|
|
328 |
}
|
329 |
-
waypoints = jQMethods.aggregate(selector);
|
330 |
-
stack = [];
|
331 |
-
this.each(function() {
|
332 |
-
var index;
|
333 |
-
index = $.inArray(this, waypoints[axis]);
|
334 |
-
return push(stack, index, waypoints[axis]);
|
335 |
-
});
|
336 |
-
return this.pushStack(stack);
|
337 |
-
},
|
338 |
-
_invoke: function($elements, method) {
|
339 |
-
$elements.each(function() {
|
340 |
-
var waypoints;
|
341 |
-
waypoints = Waypoint.getWaypointsByElement(this);
|
342 |
-
return $.each(waypoints, function(i, waypoint) {
|
343 |
-
waypoint[method]();
|
344 |
-
return true;
|
345 |
-
});
|
346 |
-
});
|
347 |
-
return this;
|
348 |
}
|
349 |
-
}
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
363 |
}
|
364 |
-
}
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
382 |
},
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
388 |
}
|
389 |
-
|
390 |
-
|
|
|
391 |
}
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
$.each(collection[axis], function(key, waypoint) {
|
398 |
-
return arr.push(waypoint);
|
399 |
-
});
|
400 |
-
arr.sort(function(a, b) {
|
401 |
-
return a.offset - b.offset;
|
402 |
-
});
|
403 |
-
waypoints[axis] = $.map(arr, function(waypoint) {
|
404 |
-
return waypoint.element;
|
405 |
-
});
|
406 |
-
return waypoints[axis] = $.unique(waypoints[axis]);
|
407 |
-
});
|
408 |
-
return waypoints;
|
409 |
-
},
|
410 |
-
above: function(contextSelector) {
|
411 |
-
if (contextSelector == null) {
|
412 |
-
contextSelector = window;
|
413 |
}
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
|
|
|
|
|
|
|
|
421 |
}
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
},
|
426 |
-
left: function(contextSelector) {
|
427 |
-
if (contextSelector == null) {
|
428 |
-
contextSelector = window;
|
429 |
}
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
},
|
434 |
-
right: function(contextSelector) {
|
435 |
-
if (contextSelector == null) {
|
436 |
-
contextSelector = window;
|
437 |
}
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
}
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
467 |
}
|
468 |
-
waypoints = [];
|
469 |
-
$.each(context.waypoints[axis], function(i, waypoint) {
|
470 |
-
if (test(context, waypoint)) {
|
471 |
-
return waypoints.push(waypoint);
|
472 |
-
}
|
473 |
-
});
|
474 |
-
waypoints.sort(function(a, b) {
|
475 |
-
return a.offset - b.offset;
|
476 |
-
});
|
477 |
-
return $.map(waypoints, function(waypoint) {
|
478 |
-
return waypoint.element;
|
479 |
-
});
|
480 |
}
|
481 |
-
}
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
489 |
}
|
490 |
-
};
|
491 |
-
$[wps].settings = {
|
492 |
-
resizeThrottle: 100,
|
493 |
-
scrollThrottle: 30
|
494 |
-
};
|
495 |
-
return $w.load(function() {
|
496 |
-
return $[wps]('refresh');
|
497 |
-
});
|
498 |
-
});
|
499 |
|
500 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
501 |
|
|
|
|
|
|
|
502 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
Waypoints - 4.0.1
|
3 |
+
Copyright © 2011-2016 Caleb Troughton
|
4 |
+
Licensed under the MIT license.
|
5 |
+
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
|
|
|
|
|
6 |
*/
|
7 |
+
(function() {
|
8 |
+
'use strict'
|
9 |
|
10 |
+
var keyCounter = 0
|
11 |
+
var allWaypoints = {}
|
12 |
|
13 |
+
/* http://imakewebthings.com/waypoints/api/waypoint */
|
14 |
+
function Waypoint(options) {
|
15 |
+
if (!options) {
|
16 |
+
throw new Error('No options passed to Waypoint constructor')
|
17 |
+
}
|
18 |
+
if (!options.element) {
|
19 |
+
throw new Error('No element option passed to Waypoint constructor')
|
20 |
+
}
|
21 |
+
if (!options.handler) {
|
22 |
+
throw new Error('No handler option passed to Waypoint constructor')
|
23 |
+
}
|
24 |
+
|
25 |
+
this.key = 'waypoint-' + keyCounter
|
26 |
+
this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options)
|
27 |
+
this.element = this.options.element
|
28 |
+
this.adapter = new Waypoint.Adapter(this.element)
|
29 |
+
this.callback = options.handler
|
30 |
+
this.axis = this.options.horizontal ? 'horizontal' : 'vertical'
|
31 |
+
this.enabled = this.options.enabled
|
32 |
+
this.triggerPoint = null
|
33 |
+
this.group = Waypoint.Group.findOrCreate({
|
34 |
+
name: this.options.group,
|
35 |
+
axis: this.axis
|
36 |
+
})
|
37 |
+
this.context = Waypoint.Context.findOrCreateByElement(this.options.context)
|
38 |
+
|
39 |
+
if (Waypoint.offsetAliases[this.options.offset]) {
|
40 |
+
this.options.offset = Waypoint.offsetAliases[this.options.offset]
|
41 |
+
}
|
42 |
+
this.group.add(this)
|
43 |
+
this.context.add(this)
|
44 |
+
allWaypoints[this.key] = this
|
45 |
+
keyCounter += 1
|
46 |
+
}
|
47 |
+
|
48 |
+
/* Private */
|
49 |
+
Waypoint.prototype.queueTrigger = function(direction) {
|
50 |
+
this.group.queueTrigger(this, direction)
|
51 |
+
}
|
52 |
+
|
53 |
+
/* Private */
|
54 |
+
Waypoint.prototype.trigger = function(args) {
|
55 |
+
if (!this.enabled) {
|
56 |
+
return
|
57 |
+
}
|
58 |
+
if (this.callback) {
|
59 |
+
this.callback.apply(this, args)
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
/* Public */
|
64 |
+
/* http://imakewebthings.com/waypoints/api/destroy */
|
65 |
+
Waypoint.prototype.destroy = function() {
|
66 |
+
this.context.remove(this)
|
67 |
+
this.group.remove(this)
|
68 |
+
delete allWaypoints[this.key]
|
69 |
+
}
|
70 |
+
|
71 |
+
/* Public */
|
72 |
+
/* http://imakewebthings.com/waypoints/api/disable */
|
73 |
+
Waypoint.prototype.disable = function() {
|
74 |
+
this.enabled = false
|
75 |
+
return this
|
76 |
+
}
|
77 |
+
|
78 |
+
/* Public */
|
79 |
+
/* http://imakewebthings.com/waypoints/api/enable */
|
80 |
+
Waypoint.prototype.enable = function() {
|
81 |
+
this.context.refresh()
|
82 |
+
this.enabled = true
|
83 |
+
return this
|
84 |
+
}
|
85 |
+
|
86 |
+
/* Public */
|
87 |
+
/* http://imakewebthings.com/waypoints/api/next */
|
88 |
+
Waypoint.prototype.next = function() {
|
89 |
+
return this.group.next(this)
|
90 |
+
}
|
91 |
+
|
92 |
+
/* Public */
|
93 |
+
/* http://imakewebthings.com/waypoints/api/previous */
|
94 |
+
Waypoint.prototype.previous = function() {
|
95 |
+
return this.group.previous(this)
|
96 |
+
}
|
97 |
+
|
98 |
+
/* Private */
|
99 |
+
Waypoint.invokeAll = function(method) {
|
100 |
+
var allWaypointsArray = []
|
101 |
+
for (var waypointKey in allWaypoints) {
|
102 |
+
allWaypointsArray.push(allWaypoints[waypointKey])
|
103 |
+
}
|
104 |
+
for (var i = 0, end = allWaypointsArray.length; i < end; i++) {
|
105 |
+
allWaypointsArray[i][method]()
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
/* Public */
|
110 |
+
/* http://imakewebthings.com/waypoints/api/destroy-all */
|
111 |
+
Waypoint.destroyAll = function() {
|
112 |
+
Waypoint.invokeAll('destroy')
|
113 |
+
}
|
114 |
+
|
115 |
+
/* Public */
|
116 |
+
/* http://imakewebthings.com/waypoints/api/disable-all */
|
117 |
+
Waypoint.disableAll = function() {
|
118 |
+
Waypoint.invokeAll('disable')
|
119 |
+
}
|
120 |
+
|
121 |
+
/* Public */
|
122 |
+
/* http://imakewebthings.com/waypoints/api/enable-all */
|
123 |
+
Waypoint.enableAll = function() {
|
124 |
+
Waypoint.Context.refreshAll()
|
125 |
+
for (var waypointKey in allWaypoints) {
|
126 |
+
allWaypoints[waypointKey].enabled = true
|
127 |
+
}
|
128 |
+
return this
|
129 |
+
}
|
130 |
+
|
131 |
+
/* Public */
|
132 |
+
/* http://imakewebthings.com/waypoints/api/refresh-all */
|
133 |
+
Waypoint.refreshAll = function() {
|
134 |
+
Waypoint.Context.refreshAll()
|
135 |
+
}
|
136 |
+
|
137 |
+
/* Public */
|
138 |
+
/* http://imakewebthings.com/waypoints/api/viewport-height */
|
139 |
+
Waypoint.viewportHeight = function() {
|
140 |
+
return window.innerHeight || document.documentElement.clientHeight
|
141 |
+
}
|
142 |
+
|
143 |
+
/* Public */
|
144 |
+
/* http://imakewebthings.com/waypoints/api/viewport-width */
|
145 |
+
Waypoint.viewportWidth = function() {
|
146 |
+
return document.documentElement.clientWidth
|
147 |
+
}
|
148 |
+
|
149 |
+
Waypoint.adapters = []
|
150 |
+
|
151 |
+
Waypoint.defaults = {
|
152 |
+
context: window,
|
153 |
+
continuous: true,
|
154 |
+
enabled: true,
|
155 |
+
group: 'default',
|
156 |
+
horizontal: false,
|
157 |
+
offset: 0
|
158 |
+
}
|
159 |
+
|
160 |
+
Waypoint.offsetAliases = {
|
161 |
+
'bottom-in-view': function() {
|
162 |
+
return this.context.innerHeight() - this.adapter.outerHeight()
|
163 |
+
},
|
164 |
+
'right-in-view': function() {
|
165 |
+
return this.context.innerWidth() - this.adapter.outerWidth()
|
166 |
+
}
|
167 |
+
}
|
168 |
+
|
169 |
+
window.Waypoint = Waypoint
|
170 |
+
}())
|
171 |
+
;(function() {
|
172 |
+
'use strict'
|
173 |
+
|
174 |
+
function requestAnimationFrameShim(callback) {
|
175 |
+
window.setTimeout(callback, 1000 / 60)
|
176 |
+
}
|
177 |
+
|
178 |
+
var keyCounter = 0
|
179 |
+
var contexts = {}
|
180 |
+
var Waypoint = window.Waypoint
|
181 |
+
var oldWindowLoad = window.onload
|
182 |
+
|
183 |
+
/* http://imakewebthings.com/waypoints/api/context */
|
184 |
+
function Context(element) {
|
185 |
+
this.element = element
|
186 |
+
this.Adapter = Waypoint.Adapter
|
187 |
+
this.adapter = new this.Adapter(element)
|
188 |
+
this.key = 'waypoint-context-' + keyCounter
|
189 |
+
this.didScroll = false
|
190 |
+
this.didResize = false
|
191 |
+
this.oldScroll = {
|
192 |
+
x: this.adapter.scrollLeft(),
|
193 |
+
y: this.adapter.scrollTop()
|
194 |
+
}
|
195 |
+
this.waypoints = {
|
196 |
+
vertical: {},
|
197 |
+
horizontal: {}
|
198 |
+
}
|
199 |
+
|
200 |
+
element.waypointContextKey = this.key
|
201 |
+
contexts[element.waypointContextKey] = this
|
202 |
+
keyCounter += 1
|
203 |
+
if (!Waypoint.windowContext) {
|
204 |
+
Waypoint.windowContext = true
|
205 |
+
Waypoint.windowContext = new Context(window)
|
206 |
+
}
|
207 |
+
|
208 |
+
this.createThrottledScrollHandler()
|
209 |
+
this.createThrottledResizeHandler()
|
210 |
+
}
|
211 |
+
|
212 |
+
/* Private */
|
213 |
+
Context.prototype.add = function(waypoint) {
|
214 |
+
var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical'
|
215 |
+
this.waypoints[axis][waypoint.key] = waypoint
|
216 |
+
this.refresh()
|
217 |
+
}
|
218 |
+
|
219 |
+
/* Private */
|
220 |
+
Context.prototype.checkEmpty = function() {
|
221 |
+
var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal)
|
222 |
+
var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical)
|
223 |
+
var isWindow = this.element == this.element.window
|
224 |
+
if (horizontalEmpty && verticalEmpty && !isWindow) {
|
225 |
+
this.adapter.off('.waypoints')
|
226 |
+
delete contexts[this.key]
|
227 |
+
}
|
228 |
+
}
|
229 |
+
|
230 |
+
/* Private */
|
231 |
+
Context.prototype.createThrottledResizeHandler = function() {
|
232 |
+
var self = this
|
233 |
+
|
234 |
+
function resizeHandler() {
|
235 |
+
self.handleResize()
|
236 |
+
self.didResize = false
|
237 |
+
}
|
238 |
+
|
239 |
+
this.adapter.on('resize.waypoints', function() {
|
240 |
+
if (!self.didResize) {
|
241 |
+
self.didResize = true
|
242 |
+
Waypoint.requestAnimationFrame(resizeHandler)
|
243 |
}
|
244 |
+
})
|
245 |
+
}
|
246 |
|
247 |
+
/* Private */
|
248 |
+
Context.prototype.createThrottledScrollHandler = function() {
|
249 |
+
var self = this
|
250 |
+
function scrollHandler() {
|
251 |
+
self.handleScroll()
|
252 |
+
self.didScroll = false
|
253 |
+
}
|
254 |
+
|
255 |
+
this.adapter.on('scroll.waypoints', function() {
|
256 |
+
if (!self.didScroll || Waypoint.isTouch) {
|
257 |
+
self.didScroll = true
|
258 |
+
Waypoint.requestAnimationFrame(scrollHandler)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
259 |
}
|
260 |
+
})
|
261 |
+
}
|
262 |
|
263 |
+
/* Private */
|
264 |
+
Context.prototype.handleResize = function() {
|
265 |
+
Waypoint.Context.refreshAll()
|
266 |
+
}
|
267 |
+
|
268 |
+
/* Private */
|
269 |
+
Context.prototype.handleScroll = function() {
|
270 |
+
var triggeredGroups = {}
|
271 |
+
var axes = {
|
272 |
+
horizontal: {
|
273 |
+
newScroll: this.adapter.scrollLeft(),
|
274 |
+
oldScroll: this.oldScroll.x,
|
275 |
+
forward: 'right',
|
276 |
+
backward: 'left'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
277 |
},
|
278 |
+
vertical: {
|
279 |
+
newScroll: this.adapter.scrollTop(),
|
280 |
+
oldScroll: this.oldScroll.y,
|
281 |
+
forward: 'down',
|
282 |
+
backward: 'up'
|
283 |
+
}
|
284 |
+
}
|
285 |
+
|
286 |
+
for (var axisKey in axes) {
|
287 |
+
var axis = axes[axisKey]
|
288 |
+
var isForward = axis.newScroll > axis.oldScroll
|
289 |
+
var direction = isForward ? axis.forward : axis.backward
|
290 |
+
|
291 |
+
for (var waypointKey in this.waypoints[axisKey]) {
|
292 |
+
var waypoint = this.waypoints[axisKey][waypointKey]
|
293 |
+
if (waypoint.triggerPoint === null) {
|
294 |
+
continue
|
295 |
}
|
296 |
+
var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint
|
297 |
+
var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint
|
298 |
+
var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint
|
299 |
+
var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint
|
300 |
+
if (crossedForward || crossedBackward) {
|
301 |
+
waypoint.queueTrigger(direction)
|
302 |
+
triggeredGroups[waypoint.group.id] = waypoint.group
|
303 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
304 |
}
|
305 |
+
}
|
306 |
+
|
307 |
+
for (var groupKey in triggeredGroups) {
|
308 |
+
triggeredGroups[groupKey].flushTriggers()
|
309 |
+
}
|
310 |
+
|
311 |
+
this.oldScroll = {
|
312 |
+
x: axes.horizontal.newScroll,
|
313 |
+
y: axes.vertical.newScroll
|
314 |
+
}
|
315 |
+
}
|
316 |
+
|
317 |
+
/* Private */
|
318 |
+
Context.prototype.innerHeight = function() {
|
319 |
+
/*eslint-disable eqeqeq */
|
320 |
+
if (this.element == this.element.window) {
|
321 |
+
return Waypoint.viewportHeight()
|
322 |
+
}
|
323 |
+
/*eslint-enable eqeqeq */
|
324 |
+
return this.adapter.innerHeight()
|
325 |
+
}
|
326 |
+
|
327 |
+
/* Private */
|
328 |
+
Context.prototype.remove = function(waypoint) {
|
329 |
+
delete this.waypoints[waypoint.axis][waypoint.key]
|
330 |
+
this.checkEmpty()
|
331 |
+
}
|
332 |
+
|
333 |
+
/* Private */
|
334 |
+
Context.prototype.innerWidth = function() {
|
335 |
+
/*eslint-disable eqeqeq */
|
336 |
+
if (this.element == this.element.window) {
|
337 |
+
return Waypoint.viewportWidth()
|
338 |
+
}
|
339 |
+
/*eslint-enable eqeqeq */
|
340 |
+
return this.adapter.innerWidth()
|
341 |
+
}
|
342 |
+
|
343 |
+
/* Public */
|
344 |
+
/* http://imakewebthings.com/waypoints/api/context-destroy */
|
345 |
+
Context.prototype.destroy = function() {
|
346 |
+
var allWaypoints = []
|
347 |
+
for (var axis in this.waypoints) {
|
348 |
+
for (var waypointKey in this.waypoints[axis]) {
|
349 |
+
allWaypoints.push(this.waypoints[axis][waypointKey])
|
350 |
}
|
351 |
+
}
|
352 |
+
for (var i = 0, end = allWaypoints.length; i < end; i++) {
|
353 |
+
allWaypoints[i].destroy()
|
354 |
+
}
|
355 |
+
}
|
356 |
+
|
357 |
+
/* Public */
|
358 |
+
/* http://imakewebthings.com/waypoints/api/context-refresh */
|
359 |
+
Context.prototype.refresh = function() {
|
360 |
+
/*eslint-disable eqeqeq */
|
361 |
+
var isWindow = this.element == this.element.window
|
362 |
+
/*eslint-enable eqeqeq */
|
363 |
+
var contextOffset = isWindow ? undefined : this.adapter.offset()
|
364 |
+
var triggeredGroups = {}
|
365 |
+
var axes
|
366 |
+
|
367 |
+
this.handleScroll()
|
368 |
+
axes = {
|
369 |
+
horizontal: {
|
370 |
+
contextOffset: isWindow ? 0 : contextOffset.left,
|
371 |
+
contextScroll: isWindow ? 0 : this.oldScroll.x,
|
372 |
+
contextDimension: this.innerWidth(),
|
373 |
+
oldScroll: this.oldScroll.x,
|
374 |
+
forward: 'right',
|
375 |
+
backward: 'left',
|
376 |
+
offsetProp: 'left'
|
377 |
},
|
378 |
+
vertical: {
|
379 |
+
contextOffset: isWindow ? 0 : contextOffset.top,
|
380 |
+
contextScroll: isWindow ? 0 : this.oldScroll.y,
|
381 |
+
contextDimension: this.innerHeight(),
|
382 |
+
oldScroll: this.oldScroll.y,
|
383 |
+
forward: 'down',
|
384 |
+
backward: 'up',
|
385 |
+
offsetProp: 'top'
|
386 |
+
}
|
387 |
+
}
|
388 |
+
|
389 |
+
for (var axisKey in axes) {
|
390 |
+
var axis = axes[axisKey]
|
391 |
+
for (var waypointKey in this.waypoints[axisKey]) {
|
392 |
+
var waypoint = this.waypoints[axisKey][waypointKey]
|
393 |
+
var adjustment = waypoint.options.offset
|
394 |
+
var oldTriggerPoint = waypoint.triggerPoint
|
395 |
+
var elementOffset = 0
|
396 |
+
var freshWaypoint = oldTriggerPoint == null
|
397 |
+
var contextModifier, wasBeforeScroll, nowAfterScroll
|
398 |
+
var triggeredBackward, triggeredForward
|
399 |
+
|
400 |
+
if (waypoint.element !== waypoint.element.window) {
|
401 |
+
elementOffset = waypoint.adapter.offset()[axis.offsetProp]
|
402 |
}
|
403 |
+
|
404 |
+
if (typeof adjustment === 'function') {
|
405 |
+
adjustment = adjustment.apply(waypoint)
|
406 |
}
|
407 |
+
else if (typeof adjustment === 'string') {
|
408 |
+
adjustment = parseFloat(adjustment)
|
409 |
+
if (waypoint.options.offset.indexOf('%') > - 1) {
|
410 |
+
adjustment = Math.ceil(axis.contextDimension * adjustment / 100)
|
411 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
412 |
}
|
413 |
+
|
414 |
+
contextModifier = axis.contextScroll - axis.contextOffset
|
415 |
+
waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment)
|
416 |
+
wasBeforeScroll = oldTriggerPoint < axis.oldScroll
|
417 |
+
nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll
|
418 |
+
triggeredBackward = wasBeforeScroll && nowAfterScroll
|
419 |
+
triggeredForward = !wasBeforeScroll && !nowAfterScroll
|
420 |
+
|
421 |
+
if (!freshWaypoint && triggeredBackward) {
|
422 |
+
waypoint.queueTrigger(axis.backward)
|
423 |
+
triggeredGroups[waypoint.group.id] = waypoint.group
|
424 |
}
|
425 |
+
else if (!freshWaypoint && triggeredForward) {
|
426 |
+
waypoint.queueTrigger(axis.forward)
|
427 |
+
triggeredGroups[waypoint.group.id] = waypoint.group
|
|
|
|
|
|
|
|
|
428 |
}
|
429 |
+
else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) {
|
430 |
+
waypoint.queueTrigger(axis.forward)
|
431 |
+
triggeredGroups[waypoint.group.id] = waypoint.group
|
|
|
|
|
|
|
|
|
432 |
}
|
433 |
+
}
|
434 |
+
}
|
435 |
+
|
436 |
+
Waypoint.requestAnimationFrame(function() {
|
437 |
+
for (var groupKey in triggeredGroups) {
|
438 |
+
triggeredGroups[groupKey].flushTriggers()
|
439 |
+
}
|
440 |
+
})
|
441 |
+
|
442 |
+
return this
|
443 |
+
}
|
444 |
+
|
445 |
+
/* Private */
|
446 |
+
Context.findOrCreateByElement = function(element) {
|
447 |
+
return Context.findByElement(element) || new Context(element)
|
448 |
+
}
|
449 |
+
|
450 |
+
/* Private */
|
451 |
+
Context.refreshAll = function() {
|
452 |
+
for (var contextId in contexts) {
|
453 |
+
contexts[contextId].refresh()
|
454 |
+
}
|
455 |
+
}
|
456 |
+
|
457 |
+
/* Public */
|
458 |
+
/* http://imakewebthings.com/waypoints/api/context-find-by-element */
|
459 |
+
Context.findByElement = function(element) {
|
460 |
+
return contexts[element.waypointContextKey]
|
461 |
+
}
|
462 |
+
|
463 |
+
window.onload = function() {
|
464 |
+
if (oldWindowLoad) {
|
465 |
+
oldWindowLoad()
|
466 |
+
}
|
467 |
+
Context.refreshAll()
|
468 |
+
}
|
469 |
+
|
470 |
+
|
471 |
+
Waypoint.requestAnimationFrame = function(callback) {
|
472 |
+
var requestFn = window.requestAnimationFrame ||
|
473 |
+
window.mozRequestAnimationFrame ||
|
474 |
+
window.webkitRequestAnimationFrame ||
|
475 |
+
requestAnimationFrameShim
|
476 |
+
requestFn.call(window, callback)
|
477 |
+
}
|
478 |
+
Waypoint.Context = Context
|
479 |
+
}())
|
480 |
+
;(function() {
|
481 |
+
'use strict'
|
482 |
+
|
483 |
+
function byTriggerPoint(a, b) {
|
484 |
+
return a.triggerPoint - b.triggerPoint
|
485 |
+
}
|
486 |
+
|
487 |
+
function byReverseTriggerPoint(a, b) {
|
488 |
+
return b.triggerPoint - a.triggerPoint
|
489 |
+
}
|
490 |
+
|
491 |
+
var groups = {
|
492 |
+
vertical: {},
|
493 |
+
horizontal: {}
|
494 |
+
}
|
495 |
+
var Waypoint = window.Waypoint
|
496 |
+
|
497 |
+
/* http://imakewebthings.com/waypoints/api/group */
|
498 |
+
function Group(options) {
|
499 |
+
this.name = options.name
|
500 |
+
this.axis = options.axis
|
501 |
+
this.id = this.name + '-' + this.axis
|
502 |
+
this.waypoints = []
|
503 |
+
this.clearTriggerQueues()
|
504 |
+
groups[this.axis][this.name] = this
|
505 |
+
}
|
506 |
+
|
507 |
+
/* Private */
|
508 |
+
Group.prototype.add = function(waypoint) {
|
509 |
+
this.waypoints.push(waypoint)
|
510 |
+
}
|
511 |
+
|
512 |
+
/* Private */
|
513 |
+
Group.prototype.clearTriggerQueues = function() {
|
514 |
+
this.triggerQueues = {
|
515 |
+
up: [],
|
516 |
+
down: [],
|
517 |
+
left: [],
|
518 |
+
right: []
|
519 |
+
}
|
520 |
+
}
|
521 |
+
|
522 |
+
/* Private */
|
523 |
+
Group.prototype.flushTriggers = function() {
|
524 |
+
for (var direction in this.triggerQueues) {
|
525 |
+
var waypoints = this.triggerQueues[direction]
|
526 |
+
var reverse = direction === 'up' || direction === 'left'
|
527 |
+
waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint)
|
528 |
+
for (var i = 0, end = waypoints.length; i < end; i += 1) {
|
529 |
+
var waypoint = waypoints[i]
|
530 |
+
if (waypoint.options.continuous || i === waypoints.length - 1) {
|
531 |
+
waypoint.trigger([direction])
|
532 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
533 |
}
|
534 |
+
}
|
535 |
+
this.clearTriggerQueues()
|
536 |
+
}
|
537 |
+
|
538 |
+
/* Private */
|
539 |
+
Group.prototype.next = function(waypoint) {
|
540 |
+
this.waypoints.sort(byTriggerPoint)
|
541 |
+
var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
|
542 |
+
var isLast = index === this.waypoints.length - 1
|
543 |
+
return isLast ? null : this.waypoints[index + 1]
|
544 |
+
}
|
545 |
+
|
546 |
+
/* Private */
|
547 |
+
Group.prototype.previous = function(waypoint) {
|
548 |
+
this.waypoints.sort(byTriggerPoint)
|
549 |
+
var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
|
550 |
+
return index ? this.waypoints[index - 1] : null
|
551 |
+
}
|
552 |
+
|
553 |
+
/* Private */
|
554 |
+
Group.prototype.queueTrigger = function(waypoint, direction) {
|
555 |
+
this.triggerQueues[direction].push(waypoint)
|
556 |
+
}
|
557 |
+
|
558 |
+
/* Private */
|
559 |
+
Group.prototype.remove = function(waypoint) {
|
560 |
+
var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
|
561 |
+
if (index > -1) {
|
562 |
+
this.waypoints.splice(index, 1)
|
563 |
+
}
|
564 |
+
}
|
565 |
+
|
566 |
+
/* Public */
|
567 |
+
/* http://imakewebthings.com/waypoints/api/first */
|
568 |
+
Group.prototype.first = function() {
|
569 |
+
return this.waypoints[0]
|
570 |
+
}
|
571 |
+
|
572 |
+
/* Public */
|
573 |
+
/* http://imakewebthings.com/waypoints/api/last */
|
574 |
+
Group.prototype.last = function() {
|
575 |
+
return this.waypoints[this.waypoints.length - 1]
|
576 |
+
}
|
577 |
+
|
578 |
+
/* Private */
|
579 |
+
Group.findOrCreate = function(options) {
|
580 |
+
return groups[options.axis][options.name] || new Group(options)
|
581 |
+
}
|
582 |
+
|
583 |
+
Waypoint.Group = Group
|
584 |
+
}())
|
585 |
+
;(function() {
|
586 |
+
'use strict'
|
587 |
+
|
588 |
+
var $ = window.jQuery
|
589 |
+
var Waypoint = window.Waypoint
|
590 |
+
|
591 |
+
function JQueryAdapter(element) {
|
592 |
+
this.$element = $(element)
|
593 |
+
}
|
594 |
+
|
595 |
+
$.each([
|
596 |
+
'innerHeight',
|
597 |
+
'innerWidth',
|
598 |
+
'off',
|
599 |
+
'offset',
|
600 |
+
'on',
|
601 |
+
'outerHeight',
|
602 |
+
'outerWidth',
|
603 |
+
'scrollLeft',
|
604 |
+
'scrollTop'
|
605 |
+
], function(i, method) {
|
606 |
+
JQueryAdapter.prototype[method] = function() {
|
607 |
+
var args = Array.prototype.slice.call(arguments)
|
608 |
+
return this.$element[method].apply(this.$element, args)
|
609 |
+
}
|
610 |
+
})
|
611 |
+
|
612 |
+
$.each([
|
613 |
+
'extend',
|
614 |
+
'inArray',
|
615 |
+
'isEmptyObject'
|
616 |
+
], function(i, method) {
|
617 |
+
JQueryAdapter[method] = $[method]
|
618 |
+
})
|
619 |
+
|
620 |
+
Waypoint.adapters.push({
|
621 |
+
name: 'jquery',
|
622 |
+
Adapter: JQueryAdapter
|
623 |
+
})
|
624 |
+
Waypoint.Adapter = JQueryAdapter
|
625 |
+
}())
|
626 |
+
;(function() {
|
627 |
+
'use strict'
|
628 |
+
|
629 |
+
var Waypoint = window.Waypoint
|
630 |
+
|
631 |
+
function createExtension(framework) {
|
632 |
+
return function() {
|
633 |
+
var waypoints = []
|
634 |
+
var overrides = arguments[0]
|
635 |
+
|
636 |
+
if (framework.isFunction(arguments[0])) {
|
637 |
+
overrides = framework.extend({}, arguments[1])
|
638 |
+
overrides.handler = arguments[0]
|
639 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
640 |
|
641 |
+
this.each(function() {
|
642 |
+
var options = framework.extend({}, overrides, {
|
643 |
+
element: this
|
644 |
+
})
|
645 |
+
if (typeof options.context === 'string') {
|
646 |
+
options.context = framework(this).closest(options.context)[0]
|
647 |
+
}
|
648 |
+
waypoints.push(new Waypoint(options))
|
649 |
+
})
|
650 |
|
651 |
+
return waypoints
|
652 |
+
}
|
653 |
+
}
|
654 |
|
655 |
+
if (window.jQuery) {
|
656 |
+
window.jQuery.fn.waypoint = createExtension(window.jQuery)
|
657 |
+
}
|
658 |
+
if (window.Zepto) {
|
659 |
+
window.Zepto.fn.waypoint = createExtension(window.Zepto)
|
660 |
+
}
|
661 |
+
}())
|
662 |
+
;
|
assets/js/jquery.waypoints.min.js
CHANGED
@@ -1 +1,7 @@
|
|
1 |
-
(function(){var __indexOf=[].indexOf||function(item){for(var i=0,l=this.length;i<l;i++){if(i in this&&this[i]===item)return i}return-1},__slice=[].slice;(function(root,factory){if(typeof define==="function"&&define.amd){return define("waypoints",["jquery"],function($){return factory($,root)})}else{return factory(root.jQuery,root)}})(this,function($,window){var $w,Context,Waypoint,allWaypoints,contextCounter,contextKey,contexts,isTouch,jQMethods,methods,resizeEvent,scrollEvent,waypointCounter,waypointKey,wp,wps;$w=$(window);isTouch=__indexOf.call(window,"ontouchstart")>=0;allWaypoints={horizontal:{},vertical:{}};contextCounter=1;contexts={};contextKey="waypoints-context-id";resizeEvent="resize.waypoints";scrollEvent="scroll.waypoints";waypointCounter=1;waypointKey="waypoints-waypoint-ids";wp="waypoint";wps="waypoints";Context=function(){function Context($element){var _this=this;this.$element=$element;this.element=$element[0];this.didResize=false;this.didScroll=false;this.id="context"+contextCounter++;this.oldScroll={x:$element.scrollLeft(),y:$element.scrollTop()};this.waypoints={horizontal:{},vertical:{}};$element.data(contextKey,this.id);contexts[this.id]=this;$element.bind(scrollEvent,function(){var scrollHandler;if(!(_this.didScroll||isTouch)){_this.didScroll=true;scrollHandler=function(){_this.doScroll();return _this.didScroll=false};return window.setTimeout(scrollHandler,$[wps].settings.scrollThrottle)}});$element.bind(resizeEvent,function(){var resizeHandler;if(!_this.didResize){_this.didResize=true;resizeHandler=function(){$[wps]("refresh");return _this.didResize=false};return window.setTimeout(resizeHandler,$[wps].settings.resizeThrottle)}})}Context.prototype.doScroll=function(){var axes,_this=this;axes={horizontal:{newScroll:this.$element.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.$element.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};if(isTouch&&(!axes.vertical.oldScroll||!axes.vertical.newScroll)){$[wps]("refresh")}$.each(axes,function(aKey,axis){var direction,isForward,triggered;triggered=[];isForward=axis.newScroll>axis.oldScroll;direction=isForward?axis.forward:axis.backward;$.each(_this.waypoints[aKey],function(wKey,waypoint){var _ref,_ref1;if(axis.oldScroll<(_ref=waypoint.offset)&&_ref<=axis.newScroll){return triggered.push(waypoint)}else if(axis.newScroll<(_ref1=waypoint.offset)&&_ref1<=axis.oldScroll){return triggered.push(waypoint)}});triggered.sort(function(a,b){return a.offset-b.offset});if(!isForward){triggered.reverse()}return $.each(triggered,function(i,waypoint){if(waypoint.options.continuous||i===triggered.length-1){return waypoint.trigger([direction])}})});return this.oldScroll={x:axes.horizontal.newScroll,y:axes.vertical.newScroll}};Context.prototype.refresh=function(){var axes,cOffset,isWin,_this=this;isWin=$.isWindow(this.element);cOffset=this.$element.offset();this.doScroll();axes={horizontal:{contextOffset:isWin?0:cOffset.left,contextScroll:isWin?0:this.oldScroll.x,contextDimension:this.$element.width(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:isWin?0:cOffset.top,contextScroll:isWin?0:this.oldScroll.y,contextDimension:isWin?$[wps]("viewportHeight"):this.$element.height(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};return $.each(axes,function(aKey,axis){return $.each(_this.waypoints[aKey],function(i,waypoint){var adjustment,elementOffset,oldOffset,_ref,_ref1;adjustment=waypoint.options.offset;oldOffset=waypoint.offset;elementOffset=$.isWindow(waypoint.element)?0:waypoint.$element.offset()[axis.offsetProp];if($.isFunction(adjustment)){adjustment=adjustment.apply(waypoint.element)}else if(typeof adjustment==="string"){adjustment=parseFloat(adjustment);if(waypoint.options.offset.indexOf("%")>-1){adjustment=Math.ceil(axis.contextDimension*adjustment/100)}}waypoint.offset=elementOffset-axis.contextOffset+axis.contextScroll-adjustment;if(waypoint.options.onlyOnScroll&&oldOffset!=null||!waypoint.enabled){return}if(oldOffset!==null&&(oldOffset<(_ref=axis.oldScroll)&&_ref<=waypoint.offset)){return waypoint.trigger([axis.backward])}else if(oldOffset!==null&&(oldOffset>(_ref1=axis.oldScroll)&&_ref1>=waypoint.offset)){return waypoint.trigger([axis.forward])}else if(oldOffset===null&&axis.oldScroll>=waypoint.offset){return waypoint.trigger([axis.forward])}})})};Context.prototype.checkEmpty=function(){if($.isEmptyObject(this.waypoints.horizontal)&&$.isEmptyObject(this.waypoints.vertical)){this.$element.unbind([resizeEvent,scrollEvent].join(" "));return delete contexts[this.id]}};return Context}();Waypoint=function(){function Waypoint($element,context,options){var idList,_ref;options=$.extend({},$.fn[wp].defaults,options);if(options.offset==="bottom-in-view"){options.offset=function(){var contextHeight;contextHeight=$[wps]("viewportHeight");if(!$.isWindow(context.element)){contextHeight=context.$element.height()}return contextHeight-$(this).outerHeight()}}this.$element=$element;this.element=$element[0];this.axis=options.horizontal?"horizontal":"vertical";this.callback=options.handler;this.context=context;this.enabled=options.enabled;this.id="waypoints"+waypointCounter++;this.offset=null;this.options=options;context.waypoints[this.axis][this.id]=this;allWaypoints[this.axis][this.id]=this;idList=(_ref=$element.data(waypointKey))!=null?_ref:[];idList.push(this.id);$element.data(waypointKey,idList)}Waypoint.prototype.trigger=function(args){if(!this.enabled){return}if(this.callback!=null){this.callback.apply(this.element,args)}if(this.options.triggerOnce){return this.destroy()}};Waypoint.prototype.disable=function(){return this.enabled=false};Waypoint.prototype.enable=function(){this.context.refresh();return this.enabled=true};Waypoint.prototype.destroy=function(){delete allWaypoints[this.axis][this.id];delete this.context.waypoints[this.axis][this.id];return this.context.checkEmpty()};Waypoint.getWaypointsByElement=function(element){var all,ids;ids=$(element).data(waypointKey);if(!ids){return[]}all=$.extend({},allWaypoints.horizontal,allWaypoints.vertical);return $.map(ids,function(id){return all[id]})};return Waypoint}();methods={init:function(f,options){var _ref;if(options==null){options={}}if((_ref=options.handler)==null){options.handler=f}this.each(function(){var $this,context,contextElement,_ref1;$this=$(this);contextElement=(_ref1=options.context)!=null?_ref1:$.fn[wp].defaults.context;if(!$.isWindow(contextElement)){contextElement=$this.closest(contextElement)}contextElement=$(contextElement);context=contexts[contextElement.data(contextKey)];if(!context){context=new Context(contextElement)}return new Waypoint($this,context,options)});$[wps]("refresh");return this},disable:function(){return methods._invoke(this,"disable")},enable:function(){return methods._invoke(this,"enable")},destroy:function(){return methods._invoke(this,"destroy")},prev:function(axis,selector){return methods._traverse.call(this,axis,selector,function(stack,index,waypoints){if(index>0){return stack.push(waypoints[index-1])}})},next:function(axis,selector){return methods._traverse.call(this,axis,selector,function(stack,index,waypoints){if(index<waypoints.length-1){return stack.push(waypoints[index+1])}})},_traverse:function(axis,selector,push){var stack,waypoints;if(axis==null){axis="vertical"}if(selector==null){selector=window}waypoints=jQMethods.aggregate(selector);stack=[];this.each(function(){var index;index=$.inArray(this,waypoints[axis]);return push(stack,index,waypoints[axis])});return this.pushStack(stack)},_invoke:function($elements,method){$elements.each(function(){var waypoints;waypoints=Waypoint.getWaypointsByElement(this);return $.each(waypoints,function(i,waypoint){waypoint[method]();return true})});return this}};$.fn[wp]=function(){var args,method;method=arguments[0],args=2<=arguments.length?__slice.call(arguments,1):[];if(methods[method]){return methods[method].apply(this,args)}else if($.isFunction(method)){return methods.init.apply(this,arguments)}else if($.isPlainObject(method)){return methods.init.apply(this,[null,method])}else if(!method){return $.error("jQuery Waypoints needs a callback function or handler option.")}else{return $.error("The "+method+" method does not exist in jQuery Waypoints.")}};$.fn[wp].defaults={context:window,continuous:true,enabled:true,horizontal:false,offset:0,triggerOnce:false};jQMethods={refresh:function(){return $.each(contexts,function(i,context){return context.refresh()})},viewportHeight:function(){var _ref;return(_ref=window.innerHeight)!=null?_ref:$w.height()},aggregate:function(contextSelector){var collection,waypoints,_ref;collection=allWaypoints;if(contextSelector){collection=(_ref=contexts[$(contextSelector).data(contextKey)])!=null?_ref.waypoints:void 0}if(!collection){return[]}waypoints={horizontal:[],vertical:[]};$.each(waypoints,function(axis,arr){$.each(collection[axis],function(key,waypoint){return arr.push(waypoint)});arr.sort(function(a,b){return a.offset-b.offset});waypoints[axis]=$.map(arr,function(waypoint){return waypoint.element});return waypoints[axis]=$.unique(waypoints[axis])});return waypoints},above:function(contextSelector){if(contextSelector==null){contextSelector=window}return jQMethods._filter(contextSelector,"vertical",function(context,waypoint){return waypoint.offset<=context.oldScroll.y})},below:function(contextSelector){if(contextSelector==null){contextSelector=window}return jQMethods._filter(contextSelector,"vertical",function(context,waypoint){return waypoint.offset>context.oldScroll.y})},left:function(contextSelector){if(contextSelector==null){contextSelector=window}return jQMethods._filter(contextSelector,"horizontal",function(context,waypoint){return waypoint.offset<=context.oldScroll.x})},right:function(contextSelector){if(contextSelector==null){contextSelector=window}return jQMethods._filter(contextSelector,"horizontal",function(context,waypoint){return waypoint.offset>context.oldScroll.x})},enable:function(){return jQMethods._invoke("enable")},disable:function(){return jQMethods._invoke("disable")},destroy:function(){return jQMethods._invoke("destroy")},extendFn:function(methodName,f){return methods[methodName]=f},_invoke:function(method){var waypoints;waypoints=$.extend({},allWaypoints.vertical,allWaypoints.horizontal);return $.each(waypoints,function(key,waypoint){waypoint[method]();return true})},_filter:function(selector,axis,test){var context,waypoints;context=contexts[$(selector).data(contextKey)];if(!context){return[]}waypoints=[];$.each(context.waypoints[axis],function(i,waypoint){if(test(context,waypoint)){return waypoints.push(waypoint)}});waypoints.sort(function(a,b){return a.offset-b.offset});return $.map(waypoints,function(waypoint){return waypoint.element})}};$[wps]=function(){var args,method;method=arguments[0],args=2<=arguments.length?__slice.call(arguments,1):[];if(jQMethods[method]){return jQMethods[method].apply(null,args)}else{return jQMethods.aggregate.call(null,method)}};$[wps].settings={resizeThrottle:100,scrollThrottle:30};return $w.load(function(){return $[wps]("refresh")})})}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
Waypoints - 4.0.1
|
3 |
+
Copyright © 2011-2016 Caleb Troughton
|
4 |
+
Licensed under the MIT license.
|
5 |
+
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
|
6 |
+
*/
|
7 |
+
!function(){"use strict";function t(o){if(!o)throw new Error("No options passed to Waypoint constructor");if(!o.element)throw new Error("No element option passed to Waypoint constructor");if(!o.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,o),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=o.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var o in i)e.push(i[o]);for(var n=0,r=e.length;r>n;n++)e[n][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.Context.refreshAll();for(var e in i)i[e].enabled=!0;return this},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=n.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,o[t.waypointContextKey]=this,i+=1,n.windowContext||(n.windowContext=!0,n.windowContext=new e(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,o={},n=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical),i=this.element==this.element.window;t&&e&&!i&&(this.adapter.off(".waypoints"),delete o[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,n.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||n.isTouch)&&(e.didScroll=!0,n.requestAnimationFrame(t))})},e.prototype.handleResize=function(){n.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var o=e[i],n=o.newScroll>o.oldScroll,r=n?o.forward:o.backward;for(var s in this.waypoints[i]){var a=this.waypoints[i][s];if(null!==a.triggerPoint){var l=o.oldScroll<a.triggerPoint,h=o.newScroll>=a.triggerPoint,p=l&&h,u=!l&&!h;(p||u)&&(a.queueTrigger(r),t[a.group.id]=a.group)}}}for(var c in t)t[c].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?n.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?n.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var o=0,n=t.length;n>o;o++)t[o].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),o={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var r in t){var s=t[r];for(var a in this.waypoints[r]){var l,h,p,u,c,d=this.waypoints[r][a],f=d.options.offset,w=d.triggerPoint,y=0,g=null==w;d.element!==d.element.window&&(y=d.adapter.offset()[s.offsetProp]),"function"==typeof f?f=f.apply(d):"string"==typeof f&&(f=parseFloat(f),d.options.offset.indexOf("%")>-1&&(f=Math.ceil(s.contextDimension*f/100))),l=s.contextScroll-s.contextOffset,d.triggerPoint=Math.floor(y+l-f),h=w<s.oldScroll,p=d.triggerPoint>=s.oldScroll,u=h&&p,c=!h&&!p,!g&&u?(d.queueTrigger(s.backward),o[d.group.id]=d.group):!g&&c?(d.queueTrigger(s.forward),o[d.group.id]=d.group):g&&s.oldScroll>=d.triggerPoint&&(d.queueTrigger(s.forward),o[d.group.id]=d.group)}}return n.requestAnimationFrame(function(){for(var t in o)o[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in o)o[t].refresh()},e.findByElement=function(t){return o[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},n.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},n.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),o[this.axis][this.name]=this}var o={vertical:{},horizontal:{}},n=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var o=this.triggerQueues[i],n="up"===i||"left"===i;o.sort(n?e:t);for(var r=0,s=o.length;s>r;r+=1){var a=o[r];(a.options.continuous||r===o.length-1)&&a.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints),o=i===this.waypoints.length-1;return o?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=n.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return o[t.axis][t.name]||new i(t)},n.Group=i}(),function(){"use strict";function t(t){this.$element=e(t)}var e=window.jQuery,i=window.Waypoint;e.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(e,i){t.prototype[i]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[i].apply(this.$element,t)}}),e.each(["extend","inArray","isEmptyObject"],function(i,o){t[o]=e[o]}),i.adapters.push({name:"jquery",Adapter:t}),i.Adapter=t}(),function(){"use strict";function t(t){return function(){var i=[],o=arguments[0];return t.isFunction(arguments[0])&&(o=t.extend({},arguments[1]),o.handler=arguments[0]),this.each(function(){var n=t.extend({},o,{element:this});"string"==typeof n.context&&(n.context=t(this).closest(n.context)[0]),i.push(new e(n))}),i}}var e=window.Waypoint;window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}();
|
assets/js/lae-widgets.js
CHANGED
@@ -45,10 +45,10 @@
|
|
45 |
|
46 |
$scope.waypoint(function (direction) {
|
47 |
|
48 |
-
WidgetLAEStatsBarHandler($(this), $);
|
49 |
|
50 |
}, {
|
51 |
-
offset:
|
52 |
triggerOnce: true
|
53 |
});
|
54 |
|
@@ -80,10 +80,10 @@
|
|
80 |
|
81 |
$scope.waypoint(function (direction) {
|
82 |
|
83 |
-
WidgetLAEPiechartsHandler($(this), $);
|
84 |
|
85 |
}, {
|
86 |
-
offset:
|
87 |
triggerOnce: true
|
88 |
});
|
89 |
|
@@ -109,10 +109,10 @@
|
|
109 |
|
110 |
$scope.waypoint(function (direction) {
|
111 |
|
112 |
-
WidgetLAEOdometersHandler($(this), $);
|
113 |
|
114 |
}, {
|
115 |
-
offset:
|
116 |
triggerOnce: true
|
117 |
});
|
118 |
};
|
45 |
|
46 |
$scope.waypoint(function (direction) {
|
47 |
|
48 |
+
WidgetLAEStatsBarHandler($(this.element), $);
|
49 |
|
50 |
}, {
|
51 |
+
offset: Waypoint.viewportHeight() - 150,
|
52 |
triggerOnce: true
|
53 |
});
|
54 |
|
80 |
|
81 |
$scope.waypoint(function (direction) {
|
82 |
|
83 |
+
WidgetLAEPiechartsHandler($(this.element), $);
|
84 |
|
85 |
}, {
|
86 |
+
offset: Waypoint.viewportHeight() - 100,
|
87 |
triggerOnce: true
|
88 |
});
|
89 |
|
109 |
|
110 |
$scope.waypoint(function (direction) {
|
111 |
|
112 |
+
WidgetLAEOdometersHandler($(this.element), $);
|
113 |
|
114 |
}, {
|
115 |
+
offset: Waypoint.viewportHeight() - 100,
|
116 |
triggerOnce: true
|
117 |
});
|
118 |
};
|
assets/js/lae-widgets.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
(function($){var WidgetLAETestimonialsSliderHandler=function($scope,$){var slider_elem=$scope.find(".lae-testimonials-slider").eq(0);var settings=slider_elem.data("settings");slider_elem.flexslider({selector:".lae-slides > .lae-slide",animation:settings["slide_animation"],direction:settings["direction"],slideshowSpeed:settings["slideshow_speed"],animationSpeed:settings["animation_speed"],namespace:"lae-flex-",pauseOnAction:settings["pause_on_action"],pauseOnHover:settings["pause_on_hover"],controlNav:settings["control_nav"],directionNav:settings["direction_nav"],prevText:"Previous<span></span>",nextText:"Next<span></span>",smoothHeight:false,animationLoop:true,slideshow:true,easing:"swing",controlsContainer:"lae-testimonials-slider"})};var WidgetLAEStatsBarHandler=function($scope,$){$scope.find(".lae-stats-bar-content").each(function(){var dataperc=$(this).data("perc");$(this).animate({width:dataperc+"%"},dataperc*20)})};var WidgetLAEStatsBarHandlerOnScroll=function($scope,$){$scope.waypoint(function(direction){WidgetLAEStatsBarHandler($(this),$)},{offset
|
1 |
+
(function($){var WidgetLAETestimonialsSliderHandler=function($scope,$){var slider_elem=$scope.find(".lae-testimonials-slider").eq(0);var settings=slider_elem.data("settings");slider_elem.flexslider({selector:".lae-slides > .lae-slide",animation:settings["slide_animation"],direction:settings["direction"],slideshowSpeed:settings["slideshow_speed"],animationSpeed:settings["animation_speed"],namespace:"lae-flex-",pauseOnAction:settings["pause_on_action"],pauseOnHover:settings["pause_on_hover"],controlNav:settings["control_nav"],directionNav:settings["direction_nav"],prevText:"Previous<span></span>",nextText:"Next<span></span>",smoothHeight:false,animationLoop:true,slideshow:true,easing:"swing",controlsContainer:"lae-testimonials-slider"})};var WidgetLAEStatsBarHandler=function($scope,$){$scope.find(".lae-stats-bar-content").each(function(){var dataperc=$(this).data("perc");$(this).animate({width:dataperc+"%"},dataperc*20)})};var WidgetLAEStatsBarHandlerOnScroll=function($scope,$){$scope.waypoint(function(direction){WidgetLAEStatsBarHandler($(this.element),$)},{offset:Waypoint.viewportHeight()-150,triggerOnce:true})};var WidgetLAEPiechartsHandler=function($scope,$){$scope.find(".lae-piechart .lae-percentage").each(function(){var track_color=$(this).data("track-color");var bar_color=$(this).data("bar-color");$(this).easyPieChart({animate:2e3,lineWidth:10,barColor:bar_color,trackColor:track_color,scaleColor:false,lineCap:"square",size:220})})};var WidgetLAEPiechartsHandlerOnScroll=function($scope,$){$scope.waypoint(function(direction){WidgetLAEPiechartsHandler($(this.element),$)},{offset:Waypoint.viewportHeight()-100,triggerOnce:true})};var WidgetLAEOdometersHandler=function($scope,$){$scope.find(".lae-odometer .lae-number").each(function(){var odometer=$(this);setTimeout(function(){var data_stop=odometer.attr("data-stop");$(odometer).text(data_stop)},100)})};var WidgetLAEOdometersHandlerOnScroll=function($scope,$){$scope.waypoint(function(direction){WidgetLAEOdometersHandler($(this.element),$)},{offset:Waypoint.viewportHeight()-100,triggerOnce:true})};var WidgetLAESliderHandler=function($scope,$){var slider_elem=$scope.find(".lae-slider").eq(0);var settings=slider_elem.data("settings");var $slider=slider_elem.find(".lae-flexslider");$slider.flexslider({selector:".lae-slides > .lae-slide",animation:settings["slide_animation"],direction:settings["direction"],slideshowSpeed:settings["slideshow_speed"],animationSpeed:settings["animation_speed"],namespace:"lae-flex-",pauseOnAction:settings["pause_on_action"],pauseOnHover:settings["pause_on_hover"],controlNav:settings["control_nav"],directionNav:settings["direction_nav"],prevText:"Previous<span></span>",nextText:"Next<span></span>",smoothHeight:false,animationLoop:true,slideshow:settings["slideshow"],easing:"swing",randomize:settings["randomize"],animationLoop:settings["loop"],controlsContainer:"lae-slider"})};var WidgetLAEPortfolioHandler=function($scope,$){if($().isotope===undefined){return}var container=$scope.find(".lae-portfolio");if(container.length===0){return}var htmlContent=$scope.find(".js-isotope");var isotopeOptions=htmlContent.data("isotope-options");htmlContent.isotope({itemSelector:isotopeOptions["itemSelector"],layoutMode:isotopeOptions["layoutMode"]});htmlContent.imagesLoaded(function(){htmlContent.isotope("layout")});$scope.find(".lae-taxonomy-filter .lae-filter-item a").on("click",function(e){e.preventDefault();var selector=$(this).attr("data-value");container.isotope({filter:selector});$(this).closest(".lae-taxonomy-filter").children().removeClass("lae-active");$(this).closest(".lae-filter-item").addClass("lae-active");return false})};var WidgetLAECarouselHandler=function($scope,$){var carousel_elem=$scope.find(".lae-carousel, .lae-posts-carousel").eq(0);if(carousel_elem.length>0){var settings=carousel_elem.data("settings");var arrows=settings["arrows"];var dots=settings["dots"];var autoplay=settings["autoplay"];var autoplay_speed=parseInt(settings["autoplay_speed"])||3e3;var animation_speed=parseInt(settings["animation_speed"])||300;var fade=settings["fade"];var pause_on_hover=settings["pause_on_hover"];var display_columns=parseInt(settings["display_columns"])||4;var scroll_columns=parseInt(settings["scroll_columns"])||4;var tablet_width=parseInt(settings["tablet_width"])||800;var tablet_display_columns=parseInt(settings["tablet_display_columns"])||2;var tablet_scroll_columns=parseInt(settings["tablet_scroll_columns"])||2;var mobile_width=parseInt(settings["mobile_width"])||480;var mobile_display_columns=parseInt(settings["mobile_display_columns"])||1;var mobile_scroll_columns=parseInt(settings["mobile_scroll_columns"])||1;carousel_elem.slick({arrows:arrows,dots:dots,infinite:true,autoplay:autoplay,autoplaySpeed:autoplay_speed,speed:animation_speed,fade:false,pauseOnHover:pause_on_hover,slidesToShow:display_columns,slidesToScroll:scroll_columns,responsive:[{breakpoint:tablet_width,settings:{slidesToShow:tablet_display_columns,slidesToScroll:tablet_scroll_columns}},{breakpoint:mobile_width,settings:{slidesToShow:mobile_display_columns,slidesToScroll:mobile_scroll_columns}}]})}};$(window).on("elementor/frontend/init",function(){elementorFrontend.hooks.addAction("frontend/element_ready/lae-testimonials-slider.default",WidgetLAETestimonialsSliderHandler);if(elementorFrontend.isEditMode()){elementorFrontend.hooks.addAction("frontend/element_ready/lae-stats-bars.default",WidgetLAEStatsBarHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-piecharts.default",WidgetLAEPiechartsHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-odometers.default",WidgetLAEOdometersHandler)}else{elementorFrontend.hooks.addAction("frontend/element_ready/lae-stats-bars.default",WidgetLAEStatsBarHandlerOnScroll);elementorFrontend.hooks.addAction("frontend/element_ready/lae-piecharts.default",WidgetLAEPiechartsHandlerOnScroll);elementorFrontend.hooks.addAction("frontend/element_ready/lae-odometers.default",WidgetLAEOdometersHandlerOnScroll)}elementorFrontend.hooks.addAction("frontend/element_ready/lae-slider.default",WidgetLAESliderHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-portfolio.default",WidgetLAEPortfolioHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-carousel.default",WidgetLAECarouselHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-posts-carousel.default",WidgetLAECarouselHandler)})})(jQuery);
|
includes/widgets/carousel.php
CHANGED
@@ -26,7 +26,7 @@ class LAE_Carousel_Widget extends Widget_Base {
|
|
26 |
}
|
27 |
|
28 |
public function get_title() {
|
29 |
-
return __('
|
30 |
}
|
31 |
|
32 |
public function get_icon() {
|
@@ -123,6 +123,9 @@ Fusce risus nisl, viverra et, tempor et, pretium in, sapien. Vestibulum turpis s
|
|
123 |
'type' => Controls_Manager::WYSIWYG,
|
124 |
'default' => __('The HTML content for the element', 'livemesh-el-addons'),
|
125 |
'show_label' => false,
|
|
|
|
|
|
|
126 |
],
|
127 |
|
128 |
],
|
@@ -480,7 +483,7 @@ Fusce risus nisl, viverra et, tempor et, pretium in, sapien. Vestibulum turpis s
|
|
480 |
|
481 |
protected function render() {
|
482 |
|
483 |
-
$settings = $this->
|
484 |
|
485 |
$elements = $settings['elements'];
|
486 |
|
26 |
}
|
27 |
|
28 |
public function get_title() {
|
29 |
+
return __('Carousel', 'livemesh-el-addons');
|
30 |
}
|
31 |
|
32 |
public function get_icon() {
|
123 |
'type' => Controls_Manager::WYSIWYG,
|
124 |
'default' => __('The HTML content for the element', 'livemesh-el-addons'),
|
125 |
'show_label' => false,
|
126 |
+
'dynamic' => [
|
127 |
+
'active' => true,
|
128 |
+
],
|
129 |
],
|
130 |
|
131 |
],
|
483 |
|
484 |
protected function render() {
|
485 |
|
486 |
+
$settings = $this->get_settings_for_display();
|
487 |
|
488 |
$elements = $settings['elements'];
|
489 |
|
includes/widgets/clients.php
CHANGED
@@ -27,7 +27,7 @@ class LAE_Clients_Widget extends Widget_Base {
|
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
-
return __('
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
@@ -79,6 +79,9 @@ class LAE_Clients_Widget extends Widget_Base {
|
|
79 |
'label' => __('Client Name', 'livemesh-el-addons'),
|
80 |
'label_block' => true,
|
81 |
'description' => __('The name of the client/customer.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
82 |
],
|
83 |
|
84 |
[
|
@@ -92,6 +95,9 @@ class LAE_Clients_Widget extends Widget_Base {
|
|
92 |
'is_external' => 'true',
|
93 |
],
|
94 |
'placeholder' => __('http://client-link.com', 'livemesh-el-addons'),
|
|
|
|
|
|
|
95 |
],
|
96 |
|
97 |
[
|
@@ -103,6 +109,9 @@ class LAE_Clients_Widget extends Widget_Base {
|
|
103 |
'url' => Utils::get_placeholder_image_src(),
|
104 |
],
|
105 |
'label_block' => true,
|
|
|
|
|
|
|
106 |
],
|
107 |
|
108 |
],
|
@@ -235,7 +244,7 @@ class LAE_Clients_Widget extends Widget_Base {
|
|
235 |
|
236 |
protected function render() {
|
237 |
|
238 |
-
$settings = $this->
|
239 |
?>
|
240 |
|
241 |
<?php $num_of_columns = intval($settings['per_line']); ?>
|
@@ -264,12 +273,12 @@ class LAE_Clients_Widget extends Widget_Base {
|
|
264 |
|
265 |
<a href="<?php echo esc_url($client['client_link']['url']); ?>"
|
266 |
title="<?php echo esc_html($client['client_name']); ?>"
|
267 |
-
<?php echo $target; ?>><?php echo
|
268 |
</div>
|
269 |
|
270 |
<?php else: ?>
|
271 |
|
272 |
-
<div class="lae-client-name"><?php echo
|
273 |
|
274 |
<?php endif; ?>
|
275 |
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
+
return __('Clients', 'livemesh-el-addons');
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
79 |
'label' => __('Client Name', 'livemesh-el-addons'),
|
80 |
'label_block' => true,
|
81 |
'description' => __('The name of the client/customer.', 'livemesh-el-addons'),
|
82 |
+
'dynamic' => [
|
83 |
+
'active' => true,
|
84 |
+
],
|
85 |
],
|
86 |
|
87 |
[
|
95 |
'is_external' => 'true',
|
96 |
],
|
97 |
'placeholder' => __('http://client-link.com', 'livemesh-el-addons'),
|
98 |
+
'dynamic' => [
|
99 |
+
'active' => true,
|
100 |
+
],
|
101 |
],
|
102 |
|
103 |
[
|
109 |
'url' => Utils::get_placeholder_image_src(),
|
110 |
],
|
111 |
'label_block' => true,
|
112 |
+
'dynamic' => [
|
113 |
+
'active' => true,
|
114 |
+
],
|
115 |
],
|
116 |
|
117 |
],
|
244 |
|
245 |
protected function render() {
|
246 |
|
247 |
+
$settings = $this->get_settings_for_display();
|
248 |
?>
|
249 |
|
250 |
<?php $num_of_columns = intval($settings['per_line']); ?>
|
273 |
|
274 |
<a href="<?php echo esc_url($client['client_link']['url']); ?>"
|
275 |
title="<?php echo esc_html($client['client_name']); ?>"
|
276 |
+
<?php echo $target; ?>><?php echo wp_kses_post($client['client_name']); ?></a>
|
277 |
</div>
|
278 |
|
279 |
<?php else: ?>
|
280 |
|
281 |
+
<div class="lae-client-name"><?php echo wp_kses_post($client['client_name']); ?></div>
|
282 |
|
283 |
<?php endif; ?>
|
284 |
|
includes/widgets/heading.php
CHANGED
@@ -26,7 +26,7 @@ class LAE_Heading_Widget extends Widget_Base {
|
|
26 |
}
|
27 |
|
28 |
public function get_title() {
|
29 |
-
return __('
|
30 |
}
|
31 |
|
32 |
public function get_icon() {
|
@@ -77,6 +77,9 @@ class LAE_Heading_Widget extends Widget_Base {
|
|
77 |
'label_block' => true,
|
78 |
'separator' => 'before',
|
79 |
'default' => __('Heading Title', 'livemesh-el-addons'),
|
|
|
|
|
|
|
80 |
]
|
81 |
);
|
82 |
|
@@ -90,6 +93,9 @@ class LAE_Heading_Widget extends Widget_Base {
|
|
90 |
'condition' => [
|
91 |
'style' => 'style2',
|
92 |
],
|
|
|
|
|
|
|
93 |
]
|
94 |
);
|
95 |
|
@@ -102,6 +108,9 @@ class LAE_Heading_Widget extends Widget_Base {
|
|
102 |
'condition' => [
|
103 |
'style' => ['style1', 'style2']
|
104 |
],
|
|
|
|
|
|
|
105 |
]
|
106 |
);
|
107 |
|
@@ -256,7 +265,7 @@ class LAE_Heading_Widget extends Widget_Base {
|
|
256 |
|
257 |
protected function render() {
|
258 |
|
259 |
-
$settings = $this->
|
260 |
|
261 |
?>
|
262 |
|
26 |
}
|
27 |
|
28 |
public function get_title() {
|
29 |
+
return __('Heading', 'livemesh-el-addons');
|
30 |
}
|
31 |
|
32 |
public function get_icon() {
|
77 |
'label_block' => true,
|
78 |
'separator' => 'before',
|
79 |
'default' => __('Heading Title', 'livemesh-el-addons'),
|
80 |
+
'dynamic' => [
|
81 |
+
'active' => true,
|
82 |
+
],
|
83 |
]
|
84 |
);
|
85 |
|
93 |
'condition' => [
|
94 |
'style' => 'style2',
|
95 |
],
|
96 |
+
'dynamic' => [
|
97 |
+
'active' => true,
|
98 |
+
],
|
99 |
]
|
100 |
);
|
101 |
|
108 |
'condition' => [
|
109 |
'style' => ['style1', 'style2']
|
110 |
],
|
111 |
+
'dynamic' => [
|
112 |
+
'active' => true,
|
113 |
+
],
|
114 |
]
|
115 |
);
|
116 |
|
265 |
|
266 |
protected function render() {
|
267 |
|
268 |
+
$settings = $this->get_settings_for_display();
|
269 |
|
270 |
?>
|
271 |
|
includes/widgets/odometers.php
CHANGED
@@ -15,6 +15,7 @@ use Elementor\Utils;
|
|
15 |
use Elementor\Scheme_Color;
|
16 |
use Elementor\Group_Control_Typography;
|
17 |
use Elementor\Scheme_Typography;
|
|
|
18 |
|
19 |
if (!defined('ABSPATH'))
|
20 |
exit; // Exit if accessed directly
|
@@ -27,7 +28,7 @@ class LAE_Odometers_Widget extends Widget_Base {
|
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
-
return __('
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
@@ -109,6 +110,9 @@ class LAE_Odometers_Widget extends Widget_Base {
|
|
109 |
'label' => __('Stats Title', 'livemesh-el-addons'),
|
110 |
'type' => Controls_Manager::TEXT,
|
111 |
'label_block' => true,
|
|
|
|
|
|
|
112 |
],
|
113 |
[
|
114 |
'name' => 'start_value',
|
@@ -145,6 +149,9 @@ class LAE_Odometers_Widget extends Widget_Base {
|
|
145 |
'condition' => [
|
146 |
'icon_type' => 'icon_image',
|
147 |
],
|
|
|
|
|
|
|
148 |
],
|
149 |
|
150 |
[
|
@@ -163,6 +170,12 @@ class LAE_Odometers_Widget extends Widget_Base {
|
|
163 |
'label' => __('Prefix', 'livemesh-el-addons'),
|
164 |
'type' => Controls_Manager::TEXT,
|
165 |
'description' => __('The prefix string like currency symbols like $ to indicate a monetary value.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
],
|
167 |
|
168 |
[
|
@@ -170,6 +183,12 @@ class LAE_Odometers_Widget extends Widget_Base {
|
|
170 |
'label' => __('Suffix', 'livemesh-el-addons'),
|
171 |
'type' => Controls_Manager::TEXT,
|
172 |
'description' => __('The suffix string like hr for hours or m for million.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
|
|
|
|
|
|
173 |
],
|
174 |
|
175 |
],
|
@@ -202,7 +221,7 @@ class LAE_Odometers_Widget extends Widget_Base {
|
|
202 |
Group_Control_Typography::get_type(),
|
203 |
[
|
204 |
'name' => 'stats_number_typography',
|
205 |
-
'selector' => '{{WRAPPER}} .lae-odometers .lae-odometer .lae-number',
|
206 |
]
|
207 |
);
|
208 |
|
@@ -331,7 +350,7 @@ class LAE_Odometers_Widget extends Widget_Base {
|
|
331 |
|
332 |
protected function render() {
|
333 |
|
334 |
-
$settings = $this->
|
335 |
?>
|
336 |
|
337 |
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
|
15 |
use Elementor\Scheme_Color;
|
16 |
use Elementor\Group_Control_Typography;
|
17 |
use Elementor\Scheme_Typography;
|
18 |
+
use Elementor\Modules\DynamicTags\Module as TagsModule;
|
19 |
|
20 |
if (!defined('ABSPATH'))
|
21 |
exit; // Exit if accessed directly
|
28 |
}
|
29 |
|
30 |
public function get_title() {
|
31 |
+
return __('Odometers', 'livemesh-el-addons');
|
32 |
}
|
33 |
|
34 |
public function get_icon() {
|
110 |
'label' => __('Stats Title', 'livemesh-el-addons'),
|
111 |
'type' => Controls_Manager::TEXT,
|
112 |
'label_block' => true,
|
113 |
+
'dynamic' => [
|
114 |
+
'active' => true,
|
115 |
+
],
|
116 |
],
|
117 |
[
|
118 |
'name' => 'start_value',
|
149 |
'condition' => [
|
150 |
'icon_type' => 'icon_image',
|
151 |
],
|
152 |
+
'dynamic' => [
|
153 |
+
'active' => true,
|
154 |
+
],
|
155 |
],
|
156 |
|
157 |
[
|
170 |
'label' => __('Prefix', 'livemesh-el-addons'),
|
171 |
'type' => Controls_Manager::TEXT,
|
172 |
'description' => __('The prefix string like currency symbols like $ to indicate a monetary value.', 'livemesh-el-addons'),
|
173 |
+
'dynamic' => [
|
174 |
+
'active' => true,
|
175 |
+
'categories' => [
|
176 |
+
TagsModule::POST_META_CATEGORY,
|
177 |
+
],
|
178 |
+
],
|
179 |
],
|
180 |
|
181 |
[
|
183 |
'label' => __('Suffix', 'livemesh-el-addons'),
|
184 |
'type' => Controls_Manager::TEXT,
|
185 |
'description' => __('The suffix string like hr for hours or m for million.', 'livemesh-el-addons'),
|
186 |
+
'dynamic' => [
|
187 |
+
'active' => true,
|
188 |
+
'categories' => [
|
189 |
+
TagsModule::POST_META_CATEGORY,
|
190 |
+
],
|
191 |
+
],
|
192 |
],
|
193 |
|
194 |
],
|
221 |
Group_Control_Typography::get_type(),
|
222 |
[
|
223 |
'name' => 'stats_number_typography',
|
224 |
+
'selector' => '{{WRAPPER}} .lae-odometers .lae-odometer .lae-number span',
|
225 |
]
|
226 |
);
|
227 |
|
350 |
|
351 |
protected function render() {
|
352 |
|
353 |
+
$settings = $this->get_settings_for_display();
|
354 |
?>
|
355 |
|
356 |
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
|
includes/widgets/piecharts.php
CHANGED
@@ -15,6 +15,7 @@ use Elementor\Controls_Manager;
|
|
15 |
use Elementor\Scheme_Color;
|
16 |
use Elementor\Group_Control_Typography;
|
17 |
use Elementor\Scheme_Typography;
|
|
|
18 |
|
19 |
if (!defined('ABSPATH'))
|
20 |
exit; // Exit if accessed directly
|
@@ -27,7 +28,7 @@ class LAE_Piecharts_Widget extends Widget_Base {
|
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
-
return __('
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
@@ -97,6 +98,9 @@ class LAE_Piecharts_Widget extends Widget_Base {
|
|
97 |
'label' => __('Stats Title', 'livemesh-el-addons'),
|
98 |
'type' => Controls_Manager::TEXT,
|
99 |
'description' => __('The title for the piechart', 'livemesh-el-addons'),
|
|
|
|
|
|
|
100 |
],
|
101 |
[
|
102 |
'name' => 'percentage_value',
|
@@ -237,7 +241,7 @@ class LAE_Piecharts_Widget extends Widget_Base {
|
|
237 |
|
238 |
protected function render() {
|
239 |
|
240 |
-
$settings = $this->
|
241 |
?>
|
242 |
|
243 |
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
|
15 |
use Elementor\Scheme_Color;
|
16 |
use Elementor\Group_Control_Typography;
|
17 |
use Elementor\Scheme_Typography;
|
18 |
+
use Elementor\Modules\DynamicTags\Module as TagsModule;
|
19 |
|
20 |
if (!defined('ABSPATH'))
|
21 |
exit; // Exit if accessed directly
|
28 |
}
|
29 |
|
30 |
public function get_title() {
|
31 |
+
return __('Piecharts', 'livemesh-el-addons');
|
32 |
}
|
33 |
|
34 |
public function get_icon() {
|
98 |
'label' => __('Stats Title', 'livemesh-el-addons'),
|
99 |
'type' => Controls_Manager::TEXT,
|
100 |
'description' => __('The title for the piechart', 'livemesh-el-addons'),
|
101 |
+
'dynamic' => [
|
102 |
+
'active' => true,
|
103 |
+
],
|
104 |
],
|
105 |
[
|
106 |
'name' => 'percentage_value',
|
241 |
|
242 |
protected function render() {
|
243 |
|
244 |
+
$settings = $this->get_settings_for_display();
|
245 |
?>
|
246 |
|
247 |
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
|
includes/widgets/portfolio.php
CHANGED
@@ -27,7 +27,7 @@ class LAE_Portfolio_Widget extends Widget_Base {
|
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
-
return __('
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
@@ -155,8 +155,11 @@ class LAE_Portfolio_Widget extends Widget_Base {
|
|
155 |
[
|
156 |
'label' => __('Heading for the grid', 'livemesh-el-addons'),
|
157 |
'type' => Controls_Manager::TEXT,
|
158 |
-
'placeholder' => __('My
|
159 |
-
'default' => __('My
|
|
|
|
|
|
|
160 |
]
|
161 |
);
|
162 |
|
@@ -316,7 +319,7 @@ class LAE_Portfolio_Widget extends Widget_Base {
|
|
316 |
$this->add_control(
|
317 |
'heading_desktop',
|
318 |
[
|
319 |
-
'label' => __(
|
320 |
'type' => Controls_Manager::HEADING,
|
321 |
'separator' => 'after',
|
322 |
]
|
@@ -855,7 +858,7 @@ class LAE_Portfolio_Widget extends Widget_Base {
|
|
855 |
|
856 |
protected function render() {
|
857 |
|
858 |
-
$settings = $this->
|
859 |
|
860 |
// Use the processed post selector query to find posts.
|
861 |
$query_args = lae_build_query_args($settings);
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
+
return __('Posts Grid', 'livemesh-el-addons');
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
155 |
[
|
156 |
'label' => __('Heading for the grid', 'livemesh-el-addons'),
|
157 |
'type' => Controls_Manager::TEXT,
|
158 |
+
'placeholder' => __('My Posts', 'livemesh-el-addons'),
|
159 |
+
'default' => __('My Posts', 'livemesh-el-addons'),
|
160 |
+
'dynamic' => [
|
161 |
+
'active' => true,
|
162 |
+
],
|
163 |
]
|
164 |
);
|
165 |
|
319 |
$this->add_control(
|
320 |
'heading_desktop',
|
321 |
[
|
322 |
+
'label' => __('Desktop', 'livemesh-el-addons'),
|
323 |
'type' => Controls_Manager::HEADING,
|
324 |
'separator' => 'after',
|
325 |
]
|
858 |
|
859 |
protected function render() {
|
860 |
|
861 |
+
$settings = $this->get_settings_for_display();
|
862 |
|
863 |
// Use the processed post selector query to find posts.
|
864 |
$query_args = lae_build_query_args($settings);
|
includes/widgets/posts-carousel.php
CHANGED
@@ -25,7 +25,7 @@ class LAE_Posts_Carousel_Widget extends Widget_Base {
|
|
25 |
}
|
26 |
|
27 |
public function get_title() {
|
28 |
-
return __('
|
29 |
}
|
30 |
|
31 |
public function get_icon() {
|
@@ -740,7 +740,7 @@ class LAE_Posts_Carousel_Widget extends Widget_Base {
|
|
740 |
|
741 |
protected function render() {
|
742 |
|
743 |
-
$settings = $this->
|
744 |
$taxonomies = array();
|
745 |
|
746 |
$carousel_settings = [
|
25 |
}
|
26 |
|
27 |
public function get_title() {
|
28 |
+
return __('Posts Carousel', 'livemesh-el-addons');
|
29 |
}
|
30 |
|
31 |
public function get_icon() {
|
740 |
|
741 |
protected function render() {
|
742 |
|
743 |
+
$settings = $this->get_settings_for_display();
|
744 |
$taxonomies = array();
|
745 |
|
746 |
$carousel_settings = [
|
includes/widgets/pricing-table.php
CHANGED
@@ -76,7 +76,7 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
|
|
76 |
}
|
77 |
|
78 |
public function get_title() {
|
79 |
-
return __('
|
80 |
}
|
81 |
|
82 |
public function get_icon() {
|
@@ -134,12 +134,18 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
|
|
134 |
'type' => Controls_Manager::TEXT,
|
135 |
'label' => __('Pricing Plan Title', 'livemesh-el-addons'),
|
136 |
'label_block' => true,
|
|
|
|
|
|
|
137 |
],
|
138 |
[
|
139 |
'name' => 'tagline',
|
140 |
'type' => Controls_Manager::TEXT,
|
141 |
'label' => __('Tagline Text', 'livemesh-el-addons'),
|
142 |
'description' => __('Provide any subtitle or taglines like "Most Popular", "Best Value", "Best Selling", "Most Flexible" etc. that you would like to use for this pricing plan.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
143 |
],
|
144 |
|
145 |
[
|
@@ -150,6 +156,9 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
|
|
150 |
'url' => Utils::get_placeholder_image_src(),
|
151 |
],
|
152 |
'label_block' => true,
|
|
|
|
|
|
|
153 |
],
|
154 |
|
155 |
[
|
@@ -157,12 +166,18 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
|
|
157 |
'type' => Controls_Manager::TEXT,
|
158 |
'label' => __('Price Tag', 'livemesh-el-addons'),
|
159 |
'description' => __('Enter the price tag for the pricing plan. HTML is accepted.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
160 |
],
|
161 |
|
162 |
[
|
163 |
'name' => 'button_text',
|
164 |
'type' => Controls_Manager::TEXT,
|
165 |
'label' => __('Text for Pricing Link/Button', 'livemesh-el-addons'),
|
|
|
|
|
|
|
166 |
],
|
167 |
|
168 |
[
|
@@ -175,6 +190,9 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
|
|
175 |
'is_external' => 'true',
|
176 |
],
|
177 |
'placeholder' => __('http://your-link.com', 'livemesh-el-addons'),
|
|
|
|
|
|
|
178 |
],
|
179 |
|
180 |
|
@@ -194,7 +212,10 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
|
|
194 |
'label' => __('Pricing Plan Details', 'livemesh-el-addons'),
|
195 |
'description' => __('Enter the content for the pricing plan that include information about individual features of the pricing plan. For prebuilt styling, enter shortcodes content like - [lae_pricing_item title="Storage Space" value="50 GB"] [lae_pricing_item title="Video Uploads" value="50"][lae_pricing_item title="Portfolio Items" value="20"]', 'livemesh-el-addons'),
|
196 |
'show_label' => true,
|
197 |
-
'rows' => 10
|
|
|
|
|
|
|
198 |
],
|
199 |
|
200 |
],
|
@@ -485,7 +506,7 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
|
|
485 |
|
486 |
protected function render() {
|
487 |
|
488 |
-
$settings = $this->
|
489 |
|
490 |
if (empty($settings['pricing_plans']))
|
491 |
return;
|
76 |
}
|
77 |
|
78 |
public function get_title() {
|
79 |
+
return __('Pricing Table', 'livemesh-el-addons');
|
80 |
}
|
81 |
|
82 |
public function get_icon() {
|
134 |
'type' => Controls_Manager::TEXT,
|
135 |
'label' => __('Pricing Plan Title', 'livemesh-el-addons'),
|
136 |
'label_block' => true,
|
137 |
+
'dynamic' => [
|
138 |
+
'active' => true,
|
139 |
+
],
|
140 |
],
|
141 |
[
|
142 |
'name' => 'tagline',
|
143 |
'type' => Controls_Manager::TEXT,
|
144 |
'label' => __('Tagline Text', 'livemesh-el-addons'),
|
145 |
'description' => __('Provide any subtitle or taglines like "Most Popular", "Best Value", "Best Selling", "Most Flexible" etc. that you would like to use for this pricing plan.', 'livemesh-el-addons'),
|
146 |
+
'dynamic' => [
|
147 |
+
'active' => true,
|
148 |
+
],
|
149 |
],
|
150 |
|
151 |
[
|
156 |
'url' => Utils::get_placeholder_image_src(),
|
157 |
],
|
158 |
'label_block' => true,
|
159 |
+
'dynamic' => [
|
160 |
+
'active' => true,
|
161 |
+
],
|
162 |
],
|
163 |
|
164 |
[
|
166 |
'type' => Controls_Manager::TEXT,
|
167 |
'label' => __('Price Tag', 'livemesh-el-addons'),
|
168 |
'description' => __('Enter the price tag for the pricing plan. HTML is accepted.', 'livemesh-el-addons'),
|
169 |
+
'dynamic' => [
|
170 |
+
'active' => true,
|
171 |
+
],
|
172 |
],
|
173 |
|
174 |
[
|
175 |
'name' => 'button_text',
|
176 |
'type' => Controls_Manager::TEXT,
|
177 |
'label' => __('Text for Pricing Link/Button', 'livemesh-el-addons'),
|
178 |
+
'dynamic' => [
|
179 |
+
'active' => true,
|
180 |
+
],
|
181 |
],
|
182 |
|
183 |
[
|
190 |
'is_external' => 'true',
|
191 |
],
|
192 |
'placeholder' => __('http://your-link.com', 'livemesh-el-addons'),
|
193 |
+
'dynamic' => [
|
194 |
+
'active' => true,
|
195 |
+
],
|
196 |
],
|
197 |
|
198 |
|
212 |
'label' => __('Pricing Plan Details', 'livemesh-el-addons'),
|
213 |
'description' => __('Enter the content for the pricing plan that include information about individual features of the pricing plan. For prebuilt styling, enter shortcodes content like - [lae_pricing_item title="Storage Space" value="50 GB"] [lae_pricing_item title="Video Uploads" value="50"][lae_pricing_item title="Portfolio Items" value="20"]', 'livemesh-el-addons'),
|
214 |
'show_label' => true,
|
215 |
+
'rows' => 10,
|
216 |
+
'dynamic' => [
|
217 |
+
'active' => true,
|
218 |
+
],
|
219 |
],
|
220 |
|
221 |
],
|
506 |
|
507 |
protected function render() {
|
508 |
|
509 |
+
$settings = $this->get_settings_for_display();
|
510 |
|
511 |
if (empty($settings['pricing_plans']))
|
512 |
return;
|
includes/widgets/services.php
CHANGED
@@ -27,7 +27,7 @@ class LAE_Services_Widget extends Widget_Base {
|
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
-
return __('
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
@@ -115,6 +115,9 @@ class LAE_Services_Widget extends Widget_Base {
|
|
115 |
'type' => Controls_Manager::TEXT,
|
116 |
'label_block' => true,
|
117 |
'default' => __('My service title', 'livemesh-el-addons'),
|
|
|
|
|
|
|
118 |
],
|
119 |
[
|
120 |
'name' => 'icon_type',
|
@@ -138,6 +141,9 @@ class LAE_Services_Widget extends Widget_Base {
|
|
138 |
'condition' => [
|
139 |
'icon_type' => 'icon_image',
|
140 |
],
|
|
|
|
|
|
|
141 |
],
|
142 |
[
|
143 |
'name' => 'icon',
|
@@ -155,6 +161,9 @@ class LAE_Services_Widget extends Widget_Base {
|
|
155 |
'type' => Controls_Manager::TEXTAREA,
|
156 |
'default' => __('Service description goes here', 'livemesh-el-addons'),
|
157 |
'label_block' => true,
|
|
|
|
|
|
|
158 |
],
|
159 |
|
160 |
],
|
@@ -295,7 +304,7 @@ class LAE_Services_Widget extends Widget_Base {
|
|
295 |
|
296 |
protected function render() {
|
297 |
|
298 |
-
$settings = $this->
|
299 |
?>
|
300 |
|
301 |
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
+
return __('Services', 'livemesh-el-addons');
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
115 |
'type' => Controls_Manager::TEXT,
|
116 |
'label_block' => true,
|
117 |
'default' => __('My service title', 'livemesh-el-addons'),
|
118 |
+
'dynamic' => [
|
119 |
+
'active' => true,
|
120 |
+
],
|
121 |
],
|
122 |
[
|
123 |
'name' => 'icon_type',
|
141 |
'condition' => [
|
142 |
'icon_type' => 'icon_image',
|
143 |
],
|
144 |
+
'dynamic' => [
|
145 |
+
'active' => true,
|
146 |
+
],
|
147 |
],
|
148 |
[
|
149 |
'name' => 'icon',
|
161 |
'type' => Controls_Manager::TEXTAREA,
|
162 |
'default' => __('Service description goes here', 'livemesh-el-addons'),
|
163 |
'label_block' => true,
|
164 |
+
'dynamic' => [
|
165 |
+
'active' => true,
|
166 |
+
],
|
167 |
],
|
168 |
|
169 |
],
|
304 |
|
305 |
protected function render() {
|
306 |
|
307 |
+
$settings = $this->get_settings_for_display();
|
308 |
?>
|
309 |
|
310 |
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
|
includes/widgets/stats-bars.php
CHANGED
@@ -27,7 +27,7 @@ class LAE_Stats_Bars_Widget extends Widget_Base {
|
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
-
return __('
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
@@ -81,6 +81,9 @@ class LAE_Stats_Bars_Widget extends Widget_Base {
|
|
81 |
'label' => __('Stats Title', 'livemesh-el-addons'),
|
82 |
'type' => Controls_Manager::TEXT,
|
83 |
'description' => __('The title for the stats bar', 'livemesh-el-addons'),
|
|
|
|
|
|
|
84 |
],
|
85 |
|
86 |
[
|
@@ -274,7 +277,7 @@ class LAE_Stats_Bars_Widget extends Widget_Base {
|
|
274 |
|
275 |
protected function render() {
|
276 |
|
277 |
-
$settings = $this->
|
278 |
?>
|
279 |
|
280 |
<div class="lae-stats-bars">
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
+
return __('Stats Bars', 'livemesh-el-addons');
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
81 |
'label' => __('Stats Title', 'livemesh-el-addons'),
|
82 |
'type' => Controls_Manager::TEXT,
|
83 |
'description' => __('The title for the stats bar', 'livemesh-el-addons'),
|
84 |
+
'dynamic' => [
|
85 |
+
'active' => true,
|
86 |
+
],
|
87 |
],
|
88 |
|
89 |
[
|
277 |
|
278 |
protected function render() {
|
279 |
|
280 |
+
$settings = $this->get_settings_for_display();
|
281 |
?>
|
282 |
|
283 |
<div class="lae-stats-bars">
|
includes/widgets/team-members.php
CHANGED
@@ -16,6 +16,7 @@ use Elementor\Utils;
|
|
16 |
use Elementor\Scheme_Color;
|
17 |
use Elementor\Group_Control_Typography;
|
18 |
use Elementor\Scheme_Typography;
|
|
|
19 |
|
20 |
if (!defined('ABSPATH'))
|
21 |
exit; // Exit if accessed directly
|
@@ -28,7 +29,7 @@ class LAE_Team_Widget extends Widget_Base {
|
|
28 |
}
|
29 |
|
30 |
public function get_title() {
|
31 |
-
return __('
|
32 |
}
|
33 |
|
34 |
public function get_icon() {
|
@@ -113,11 +114,20 @@ class LAE_Team_Widget extends Widget_Base {
|
|
113 |
'name' => 'member_name',
|
114 |
'label' => __('Member Name', 'livemesh-el-addons'),
|
115 |
'type' => Controls_Manager::TEXT,
|
|
|
|
|
|
|
116 |
],
|
117 |
[
|
118 |
'name' => 'member_position',
|
119 |
'label' => __('Position', 'livemesh-el-addons'),
|
120 |
'type' => Controls_Manager::TEXT,
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
],
|
122 |
|
123 |
[
|
@@ -128,6 +138,9 @@ class LAE_Team_Widget extends Widget_Base {
|
|
128 |
'url' => Utils::get_placeholder_image_src(),
|
129 |
],
|
130 |
'label_block' => true,
|
|
|
|
|
|
|
131 |
],
|
132 |
[
|
133 |
'name' => 'member_details',
|
@@ -136,6 +149,9 @@ class LAE_Team_Widget extends Widget_Base {
|
|
136 |
'default' => __('Details about team member', 'livemesh-el-addons'),
|
137 |
'description' => __('Provide a short writeup for the team member', 'livemesh-el-addons'),
|
138 |
'label_block' => true,
|
|
|
|
|
|
|
139 |
],
|
140 |
[
|
141 |
'name' => 'social_profile',
|
@@ -147,6 +163,12 @@ class LAE_Team_Widget extends Widget_Base {
|
|
147 |
'name' => 'member_email',
|
148 |
'label' => __('Email Address', 'livemesh-el-addons'),
|
149 |
'description' => __('Enter the email address of the team member.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
],
|
151 |
|
152 |
[
|
@@ -154,6 +176,12 @@ class LAE_Team_Widget extends Widget_Base {
|
|
154 |
'name' => 'facebook_url',
|
155 |
'label' => __('Facebook Page URL', 'livemesh-el-addons'),
|
156 |
'description' => __('URL of the Facebook page of the team member.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
],
|
158 |
|
159 |
[
|
@@ -161,6 +189,12 @@ class LAE_Team_Widget extends Widget_Base {
|
|
161 |
'name' => 'twitter_url',
|
162 |
'label' => __('Twitter Profile URL', 'livemesh-el-addons'),
|
163 |
'description' => __('URL of the Twitter page of the team member.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
],
|
165 |
|
166 |
[
|
@@ -168,6 +202,12 @@ class LAE_Team_Widget extends Widget_Base {
|
|
168 |
'name' => 'linkedin_url',
|
169 |
'label' => __('LinkedIn Page URL', 'livemesh-el-addons'),
|
170 |
'description' => __('URL of the LinkedIn profile of the team member.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
],
|
172 |
|
173 |
[
|
@@ -175,6 +215,12 @@ class LAE_Team_Widget extends Widget_Base {
|
|
175 |
'name' => 'pinterest_url',
|
176 |
'label' => __('Pinterest Page URL', 'livemesh-el-addons'),
|
177 |
'description' => __('URL of the Pinterest page for the team member.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
],
|
179 |
|
180 |
[
|
@@ -182,6 +228,12 @@ class LAE_Team_Widget extends Widget_Base {
|
|
182 |
'name' => 'dribbble_url',
|
183 |
'label' => __('Dribbble Profile URL', 'livemesh-el-addons'),
|
184 |
'description' => __('URL of the Dribbble profile of the team member.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
|
|
|
|
|
|
185 |
],
|
186 |
|
187 |
[
|
@@ -189,6 +241,12 @@ class LAE_Team_Widget extends Widget_Base {
|
|
189 |
'name' => 'google_plus_url',
|
190 |
'label' => __('GooglePlus Page URL', 'livemesh-el-addons'),
|
191 |
'description' => __('URL of the Google Plus page of the team member.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
|
|
|
|
|
|
192 |
],
|
193 |
|
194 |
[
|
@@ -196,6 +254,12 @@ class LAE_Team_Widget extends Widget_Base {
|
|
196 |
'name' => 'instagram_url',
|
197 |
'label' => __('Instagram Page URL', 'livemesh-el-addons'),
|
198 |
'description' => __('URL of the Instagram feed for the team member.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
|
|
|
|
|
|
199 |
],
|
200 |
|
201 |
],
|
@@ -450,7 +514,7 @@ class LAE_Team_Widget extends Widget_Base {
|
|
450 |
|
451 |
protected function render() {
|
452 |
|
453 |
-
$settings = $this->
|
454 |
?>
|
455 |
|
456 |
<?php $column_style = ''; ?>
|
16 |
use Elementor\Scheme_Color;
|
17 |
use Elementor\Group_Control_Typography;
|
18 |
use Elementor\Scheme_Typography;
|
19 |
+
use Elementor\Modules\DynamicTags\Module as TagsModule;
|
20 |
|
21 |
if (!defined('ABSPATH'))
|
22 |
exit; // Exit if accessed directly
|
29 |
}
|
30 |
|
31 |
public function get_title() {
|
32 |
+
return __('Team Members', 'livemesh-el-addons');
|
33 |
}
|
34 |
|
35 |
public function get_icon() {
|
114 |
'name' => 'member_name',
|
115 |
'label' => __('Member Name', 'livemesh-el-addons'),
|
116 |
'type' => Controls_Manager::TEXT,
|
117 |
+
'dynamic' => [
|
118 |
+
'active' => true,
|
119 |
+
],
|
120 |
],
|
121 |
[
|
122 |
'name' => 'member_position',
|
123 |
'label' => __('Position', 'livemesh-el-addons'),
|
124 |
'type' => Controls_Manager::TEXT,
|
125 |
+
'dynamic' => [
|
126 |
+
'active' => true,
|
127 |
+
'categories' => [
|
128 |
+
TagsModule::POST_META_CATEGORY,
|
129 |
+
],
|
130 |
+
],
|
131 |
],
|
132 |
|
133 |
[
|
138 |
'url' => Utils::get_placeholder_image_src(),
|
139 |
],
|
140 |
'label_block' => true,
|
141 |
+
'dynamic' => [
|
142 |
+
'active' => true,
|
143 |
+
],
|
144 |
],
|
145 |
[
|
146 |
'name' => 'member_details',
|
149 |
'default' => __('Details about team member', 'livemesh-el-addons'),
|
150 |
'description' => __('Provide a short writeup for the team member', 'livemesh-el-addons'),
|
151 |
'label_block' => true,
|
152 |
+
'dynamic' => [
|
153 |
+
'active' => true,
|
154 |
+
],
|
155 |
],
|
156 |
[
|
157 |
'name' => 'social_profile',
|
163 |
'name' => 'member_email',
|
164 |
'label' => __('Email Address', 'livemesh-el-addons'),
|
165 |
'description' => __('Enter the email address of the team member.', 'livemesh-el-addons'),
|
166 |
+
'dynamic' => [
|
167 |
+
'active' => true,
|
168 |
+
'categories' => [
|
169 |
+
TagsModule::POST_META_CATEGORY,
|
170 |
+
],
|
171 |
+
],
|
172 |
],
|
173 |
|
174 |
[
|
176 |
'name' => 'facebook_url',
|
177 |
'label' => __('Facebook Page URL', 'livemesh-el-addons'),
|
178 |
'description' => __('URL of the Facebook page of the team member.', 'livemesh-el-addons'),
|
179 |
+
'dynamic' => [
|
180 |
+
'active' => true,
|
181 |
+
'categories' => [
|
182 |
+
TagsModule::POST_META_CATEGORY,
|
183 |
+
],
|
184 |
+
],
|
185 |
],
|
186 |
|
187 |
[
|
189 |
'name' => 'twitter_url',
|
190 |
'label' => __('Twitter Profile URL', 'livemesh-el-addons'),
|
191 |
'description' => __('URL of the Twitter page of the team member.', 'livemesh-el-addons'),
|
192 |
+
'dynamic' => [
|
193 |
+
'active' => true,
|
194 |
+
'categories' => [
|
195 |
+
TagsModule::POST_META_CATEGORY,
|
196 |
+
],
|
197 |
+
],
|
198 |
],
|
199 |
|
200 |
[
|
202 |
'name' => 'linkedin_url',
|
203 |
'label' => __('LinkedIn Page URL', 'livemesh-el-addons'),
|
204 |
'description' => __('URL of the LinkedIn profile of the team member.', 'livemesh-el-addons'),
|
205 |
+
'dynamic' => [
|
206 |
+
'active' => true,
|
207 |
+
'categories' => [
|
208 |
+
TagsModule::POST_META_CATEGORY,
|
209 |
+
],
|
210 |
+
],
|
211 |
],
|
212 |
|
213 |
[
|
215 |
'name' => 'pinterest_url',
|
216 |
'label' => __('Pinterest Page URL', 'livemesh-el-addons'),
|
217 |
'description' => __('URL of the Pinterest page for the team member.', 'livemesh-el-addons'),
|
218 |
+
'dynamic' => [
|
219 |
+
'active' => true,
|
220 |
+
'categories' => [
|
221 |
+
TagsModule::POST_META_CATEGORY,
|
222 |
+
],
|
223 |
+
],
|
224 |
],
|
225 |
|
226 |
[
|
228 |
'name' => 'dribbble_url',
|
229 |
'label' => __('Dribbble Profile URL', 'livemesh-el-addons'),
|
230 |
'description' => __('URL of the Dribbble profile of the team member.', 'livemesh-el-addons'),
|
231 |
+
'dynamic' => [
|
232 |
+
'active' => true,
|
233 |
+
'categories' => [
|
234 |
+
TagsModule::POST_META_CATEGORY,
|
235 |
+
],
|
236 |
+
],
|
237 |
],
|
238 |
|
239 |
[
|
241 |
'name' => 'google_plus_url',
|
242 |
'label' => __('GooglePlus Page URL', 'livemesh-el-addons'),
|
243 |
'description' => __('URL of the Google Plus page of the team member.', 'livemesh-el-addons'),
|
244 |
+
'dynamic' => [
|
245 |
+
'active' => true,
|
246 |
+
'categories' => [
|
247 |
+
TagsModule::POST_META_CATEGORY,
|
248 |
+
],
|
249 |
+
],
|
250 |
],
|
251 |
|
252 |
[
|
254 |
'name' => 'instagram_url',
|
255 |
'label' => __('Instagram Page URL', 'livemesh-el-addons'),
|
256 |
'description' => __('URL of the Instagram feed for the team member.', 'livemesh-el-addons'),
|
257 |
+
'dynamic' => [
|
258 |
+
'active' => true,
|
259 |
+
'categories' => [
|
260 |
+
TagsModule::POST_META_CATEGORY,
|
261 |
+
],
|
262 |
+
],
|
263 |
],
|
264 |
|
265 |
],
|
514 |
|
515 |
protected function render() {
|
516 |
|
517 |
+
$settings = $this->get_settings_for_display();
|
518 |
?>
|
519 |
|
520 |
<?php $column_style = ''; ?>
|
includes/widgets/testimonials-slider.php
CHANGED
@@ -27,7 +27,7 @@ class LAE_Testimonials_Slider_Widget extends Widget_Base {
|
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
-
return __('
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
@@ -83,12 +83,18 @@ class LAE_Testimonials_Slider_Widget extends Widget_Base {
|
|
83 |
'label' => __('Name', 'livemesh-el-addons'),
|
84 |
'type' => Controls_Manager::TEXT,
|
85 |
'description' => __('The client or customer name for the testimonial', 'livemesh-el-addons'),
|
|
|
|
|
|
|
86 |
],
|
87 |
[
|
88 |
'name' => 'credentials',
|
89 |
'label' => __('Client Details', 'livemesh-el-addons'),
|
90 |
'type' => Controls_Manager::TEXT,
|
91 |
'description' => __('The details of the client/customer like company name, position held, company URL etc. HTML accepted.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
92 |
],
|
93 |
|
94 |
[
|
@@ -99,6 +105,9 @@ class LAE_Testimonials_Slider_Widget extends Widget_Base {
|
|
99 |
'url' => Utils::get_placeholder_image_src(),
|
100 |
],
|
101 |
'label_block' => true,
|
|
|
|
|
|
|
102 |
],
|
103 |
|
104 |
[
|
@@ -107,6 +116,9 @@ class LAE_Testimonials_Slider_Widget extends Widget_Base {
|
|
107 |
'type' => Controls_Manager::WYSIWYG,
|
108 |
'description' => __('What your customer/client had to say', 'livemesh-el-addons'),
|
109 |
'show_label' => false,
|
|
|
|
|
|
|
110 |
],
|
111 |
|
112 |
],
|
@@ -423,7 +435,7 @@ class LAE_Testimonials_Slider_Widget extends Widget_Base {
|
|
423 |
|
424 |
protected function render() {
|
425 |
|
426 |
-
$settings = $this->
|
427 |
|
428 |
$slider_options = [
|
429 |
'slide_animation' => $settings['slide_animation'],
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
+
return __('Testimonials Slider', 'livemesh-el-addons');
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
83 |
'label' => __('Name', 'livemesh-el-addons'),
|
84 |
'type' => Controls_Manager::TEXT,
|
85 |
'description' => __('The client or customer name for the testimonial', 'livemesh-el-addons'),
|
86 |
+
'dynamic' => [
|
87 |
+
'active' => true,
|
88 |
+
],
|
89 |
],
|
90 |
[
|
91 |
'name' => 'credentials',
|
92 |
'label' => __('Client Details', 'livemesh-el-addons'),
|
93 |
'type' => Controls_Manager::TEXT,
|
94 |
'description' => __('The details of the client/customer like company name, position held, company URL etc. HTML accepted.', 'livemesh-el-addons'),
|
95 |
+
'dynamic' => [
|
96 |
+
'active' => true,
|
97 |
+
],
|
98 |
],
|
99 |
|
100 |
[
|
105 |
'url' => Utils::get_placeholder_image_src(),
|
106 |
],
|
107 |
'label_block' => true,
|
108 |
+
'dynamic' => [
|
109 |
+
'active' => true,
|
110 |
+
],
|
111 |
],
|
112 |
|
113 |
[
|
116 |
'type' => Controls_Manager::WYSIWYG,
|
117 |
'description' => __('What your customer/client had to say', 'livemesh-el-addons'),
|
118 |
'show_label' => false,
|
119 |
+
'dynamic' => [
|
120 |
+
'active' => true,
|
121 |
+
],
|
122 |
],
|
123 |
|
124 |
],
|
435 |
|
436 |
protected function render() {
|
437 |
|
438 |
+
$settings = $this->get_settings_for_display();
|
439 |
|
440 |
$slider_options = [
|
441 |
'slide_animation' => $settings['slide_animation'],
|
includes/widgets/testimonials.php
CHANGED
@@ -27,7 +27,7 @@ class LAE_Testimonials_Widget extends Widget_Base {
|
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
-
return __('
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
@@ -96,12 +96,18 @@ class LAE_Testimonials_Widget extends Widget_Base {
|
|
96 |
'label' => __('Name', 'livemesh-el-addons'),
|
97 |
'type' => Controls_Manager::TEXT,
|
98 |
'description' => __('The client or customer name for the testimonial', 'livemesh-el-addons'),
|
|
|
|
|
|
|
99 |
],
|
100 |
[
|
101 |
'name' => 'credentials',
|
102 |
'label' => __('Client Details', 'livemesh-el-addons'),
|
103 |
'type' => Controls_Manager::TEXT,
|
104 |
'description' => __('The details of the client/customer like company name, credential held, company URL etc. HTML accepted.', 'livemesh-el-addons'),
|
|
|
|
|
|
|
105 |
],
|
106 |
|
107 |
[
|
@@ -112,6 +118,9 @@ class LAE_Testimonials_Widget extends Widget_Base {
|
|
112 |
'url' => Utils::get_placeholder_image_src(),
|
113 |
],
|
114 |
'label_block' => true,
|
|
|
|
|
|
|
115 |
],
|
116 |
|
117 |
[
|
@@ -120,6 +129,9 @@ class LAE_Testimonials_Widget extends Widget_Base {
|
|
120 |
'type' => Controls_Manager::WYSIWYG,
|
121 |
'description' => __('What your customer/client had to say', 'livemesh-el-addons'),
|
122 |
'show_label' => false,
|
|
|
|
|
|
|
123 |
],
|
124 |
|
125 |
],
|
@@ -332,7 +344,7 @@ class LAE_Testimonials_Widget extends Widget_Base {
|
|
332 |
|
333 |
protected function render() {
|
334 |
|
335 |
-
$settings = $this->
|
336 |
?>
|
337 |
|
338 |
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
|
27 |
}
|
28 |
|
29 |
public function get_title() {
|
30 |
+
return __('Testimonials', 'livemesh-el-addons');
|
31 |
}
|
32 |
|
33 |
public function get_icon() {
|
96 |
'label' => __('Name', 'livemesh-el-addons'),
|
97 |
'type' => Controls_Manager::TEXT,
|
98 |
'description' => __('The client or customer name for the testimonial', 'livemesh-el-addons'),
|
99 |
+
'dynamic' => [
|
100 |
+
'active' => true,
|
101 |
+
],
|
102 |
],
|
103 |
[
|
104 |
'name' => 'credentials',
|
105 |
'label' => __('Client Details', 'livemesh-el-addons'),
|
106 |
'type' => Controls_Manager::TEXT,
|
107 |
'description' => __('The details of the client/customer like company name, credential held, company URL etc. HTML accepted.', 'livemesh-el-addons'),
|
108 |
+
'dynamic' => [
|
109 |
+
'active' => true,
|
110 |
+
],
|
111 |
],
|
112 |
|
113 |
[
|
118 |
'url' => Utils::get_placeholder_image_src(),
|
119 |
],
|
120 |
'label_block' => true,
|
121 |
+
'dynamic' => [
|
122 |
+
'active' => true,
|
123 |
+
],
|
124 |
],
|
125 |
|
126 |
[
|
129 |
'type' => Controls_Manager::WYSIWYG,
|
130 |
'description' => __('What your customer/client had to say', 'livemesh-el-addons'),
|
131 |
'show_label' => false,
|
132 |
+
'dynamic' => [
|
133 |
+
'active' => true,
|
134 |
+
],
|
135 |
],
|
136 |
|
137 |
],
|
344 |
|
345 |
protected function render() {
|
346 |
|
347 |
+
$settings = $this->get_settings_for_display();
|
348 |
?>
|
349 |
|
350 |
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
|
livemesh-elementor-addons.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
* Author URI: https://www.livemeshthemes.com/elementor-addons
|
8 |
* License: GPL3
|
9 |
* License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
10 |
-
* Version: 1.
|
11 |
* Text Domain: livemesh-el-addons
|
12 |
* Domain Path: languages
|
13 |
*
|
@@ -75,7 +75,7 @@ if (!class_exists('Livemesh_Elementor_Addons')) :
|
|
75 |
*/
|
76 |
public function __clone() {
|
77 |
// Cloning instances of the class is forbidden
|
78 |
-
_doing_it_wrong(__FUNCTION__, __('Cheatin’ huh?', 'livemesh-el-addons'), '1.
|
79 |
}
|
80 |
|
81 |
/**
|
@@ -84,7 +84,7 @@ if (!class_exists('Livemesh_Elementor_Addons')) :
|
|
84 |
*/
|
85 |
public function __wakeup() {
|
86 |
// Unserializing instances of the class is forbidden
|
87 |
-
_doing_it_wrong(__FUNCTION__, __('Cheatin’ huh?', 'livemesh-el-addons'), '1.
|
88 |
}
|
89 |
|
90 |
/**
|
@@ -95,7 +95,7 @@ if (!class_exists('Livemesh_Elementor_Addons')) :
|
|
95 |
|
96 |
// Plugin version
|
97 |
if (!defined('LAE_VERSION')) {
|
98 |
-
define('LAE_VERSION', '1.
|
99 |
}
|
100 |
|
101 |
// Plugin Folder Path
|
@@ -227,7 +227,7 @@ if (!class_exists('Livemesh_Elementor_Addons')) :
|
|
227 |
'title' => __('Livemesh Addons', 'livemesh-el-addons'),
|
228 |
'icon' => 'fa fa-plug',
|
229 |
),
|
230 |
-
|
231 |
}
|
232 |
|
233 |
public function localize_scripts() {
|
7 |
* Author URI: https://www.livemeshthemes.com/elementor-addons
|
8 |
* License: GPL3
|
9 |
* License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
10 |
+
* Version: 1.6
|
11 |
* Text Domain: livemesh-el-addons
|
12 |
* Domain Path: languages
|
13 |
*
|
75 |
*/
|
76 |
public function __clone() {
|
77 |
// Cloning instances of the class is forbidden
|
78 |
+
_doing_it_wrong(__FUNCTION__, __('Cheatin’ huh?', 'livemesh-el-addons'), '1.6');
|
79 |
}
|
80 |
|
81 |
/**
|
84 |
*/
|
85 |
public function __wakeup() {
|
86 |
// Unserializing instances of the class is forbidden
|
87 |
+
_doing_it_wrong(__FUNCTION__, __('Cheatin’ huh?', 'livemesh-el-addons'), '1.6');
|
88 |
}
|
89 |
|
90 |
/**
|
95 |
|
96 |
// Plugin version
|
97 |
if (!defined('LAE_VERSION')) {
|
98 |
+
define('LAE_VERSION', '1.6');
|
99 |
}
|
100 |
|
101 |
// Plugin Folder Path
|
227 |
'title' => __('Livemesh Addons', 'livemesh-el-addons'),
|
228 |
'icon' => 'fa fa-plug',
|
229 |
),
|
230 |
+
1);
|
231 |
}
|
232 |
|
233 |
public function localize_scripts() {
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Contributors: livemesh
|
|
5 |
Tags: elementor, elementor addons, elementor extensions, elementor modules, page builder, portfolio, carousel, posts grid
|
6 |
Requires at least: 4.5
|
7 |
Tested up to: 4.9
|
8 |
-
Stable Tag: 1.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -108,6 +108,14 @@ Pls install and activate the <a href="https://wordpress.org/plugins/portfolio-po
|
|
108 |
|
109 |
== Changelog ==
|
110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
= 1.5.4 =
|
112 |
* Fixed – Livemesh Grid columns can break in certain resolutions in FireFox.
|
113 |
* Fixed - The piechart value is not being rounded.
|
5 |
Tags: elementor, elementor addons, elementor extensions, elementor modules, page builder, portfolio, carousel, posts grid
|
6 |
Requires at least: 4.5
|
7 |
Tested up to: 4.9
|
8 |
+
Stable Tag: 1.6
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
108 |
|
109 |
== Changelog ==
|
110 |
|
111 |
+
= 1.6 =
|
112 |
+
* Added – Compatibility with Elementor and Elementor PRO 2.
|
113 |
+
* Added - Dynamic field connections for most widgets supported by Elementor 2.
|
114 |
+
* Updated - Removed Livemesh prefix from all elements. For example, Livemesh Services is now named Services, Livemesh Tabs is now Tabs, Livemesh Grid is now Posts Grid etc.
|
115 |
+
* Added - Ability to specify client name in HTML for additional formatting.
|
116 |
+
* Updated - Waypoints script with new API for handling events on scroll
|
117 |
+
* Fixed - Some themes can break animations and report script errors for elements like piecharts, odometers, progress bars etc.
|
118 |
+
|
119 |
= 1.5.4 =
|
120 |
* Fixed – Livemesh Grid columns can break in certain resolutions in FireFox.
|
121 |
* Fixed - The piechart value is not being rounded.
|