first commit
This commit is contained in:
231
public/assets/js/aos.js
Normal file
231
public/assets/js/aos.js
Normal file
@@ -0,0 +1,231 @@
|
||||
/**
|
||||
* *******************************************************
|
||||
* AOS (Animate on scroll) - wowjs alternative
|
||||
* made to animate elements on scroll in both directions
|
||||
* *******************************************************
|
||||
*/
|
||||
import styles from '../../sass/aos.scss';
|
||||
|
||||
// Modules & helpers
|
||||
import throttle from 'lodash.throttle';
|
||||
import debounce from 'lodash.debounce';
|
||||
|
||||
import observer from './libs/observer';
|
||||
|
||||
import detect from './helpers/detector';
|
||||
import handleScroll from './helpers/handleScroll';
|
||||
import prepare from './helpers/prepare';
|
||||
import elements from './helpers/elements';
|
||||
|
||||
/**
|
||||
* Private variables
|
||||
*/
|
||||
let $aosElements = [];
|
||||
let initialized = false;
|
||||
|
||||
/**
|
||||
* Default options
|
||||
*/
|
||||
let options = {
|
||||
offset: 120,
|
||||
delay: 0,
|
||||
easing: 'ease',
|
||||
duration: 400,
|
||||
disable: false,
|
||||
once: false,
|
||||
mirror: false,
|
||||
anchorPlacement: 'top-bottom',
|
||||
startEvent: 'DOMContentLoaded',
|
||||
animatedClassName: 'aos-animate',
|
||||
initClassName: 'aos-init',
|
||||
useClassNames: false,
|
||||
disableMutationObserver: false,
|
||||
throttleDelay: 99,
|
||||
debounceDelay: 50
|
||||
};
|
||||
|
||||
// Detect not supported browsers (<=IE9)
|
||||
// http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
|
||||
const isBrowserNotSupported = () => document.all && !window.atob;
|
||||
|
||||
const initializeScroll = function initializeScroll() {
|
||||
// Extend elements objects in $aosElements with their positions
|
||||
$aosElements = prepare($aosElements, options);
|
||||
// Perform scroll event, to refresh view and show/hide elements
|
||||
handleScroll($aosElements);
|
||||
|
||||
/**
|
||||
* Handle scroll event to animate elements on scroll
|
||||
*/
|
||||
window.addEventListener(
|
||||
'scroll',
|
||||
throttle(() => {
|
||||
handleScroll($aosElements, options.once);
|
||||
}, options.throttleDelay)
|
||||
);
|
||||
|
||||
return $aosElements;
|
||||
};
|
||||
|
||||
/**
|
||||
* Refresh AOS
|
||||
*/
|
||||
const refresh = function refresh(initialize = false) {
|
||||
// Allow refresh only when it was first initialized on startEvent
|
||||
if (initialize) initialized = true;
|
||||
if (initialized) initializeScroll();
|
||||
};
|
||||
|
||||
/**
|
||||
* Hard refresh
|
||||
* create array with new elements and trigger refresh
|
||||
*/
|
||||
const refreshHard = function refreshHard() {
|
||||
$aosElements = elements();
|
||||
|
||||
if (isDisabled(options.disable) || isBrowserNotSupported()) {
|
||||
return disable();
|
||||
}
|
||||
|
||||
refresh();
|
||||
};
|
||||
|
||||
/**
|
||||
* Disable AOS
|
||||
* Remove all attributes to reset applied styles
|
||||
*/
|
||||
const disable = function() {
|
||||
$aosElements.forEach(function(el, i) {
|
||||
el.node.removeAttribute('data-aos');
|
||||
el.node.removeAttribute('data-aos-easing');
|
||||
el.node.removeAttribute('data-aos-duration');
|
||||
el.node.removeAttribute('data-aos-delay');
|
||||
|
||||
if (options.initClassName) {
|
||||
el.node.classList.remove(options.initClassName);
|
||||
}
|
||||
|
||||
if (options.animatedClassName) {
|
||||
el.node.classList.remove(options.animatedClassName);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Check if AOS should be disabled based on provided setting
|
||||
*/
|
||||
const isDisabled = function(optionDisable) {
|
||||
return (
|
||||
optionDisable === true ||
|
||||
(optionDisable === 'mobile' && detect.mobile()) ||
|
||||
(optionDisable === 'phone' && detect.phone()) ||
|
||||
(optionDisable === 'tablet' && detect.tablet()) ||
|
||||
(typeof optionDisable === 'function' && optionDisable() === true)
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Initializing AOS
|
||||
* - Create options merging defaults with user defined options
|
||||
* - Set attributes on <body> as global setting - css relies on it
|
||||
* - Attach preparing elements to options.startEvent,
|
||||
* window resize and orientation change
|
||||
* - Attach function that handle scroll and everything connected to it
|
||||
* to window scroll event and fire once document is ready to set initial state
|
||||
*/
|
||||
const init = function init(settings) {
|
||||
options = Object.assign(options, settings);
|
||||
|
||||
// Create initial array with elements -> to be fullfilled later with prepare()
|
||||
$aosElements = elements();
|
||||
|
||||
/**
|
||||
* Disable mutation observing if not supported
|
||||
*/
|
||||
if (!options.disableMutationObserver && !observer.isSupported()) {
|
||||
console.info(`
|
||||
aos: MutationObserver is not supported on this browser,
|
||||
code mutations observing has been disabled.
|
||||
You may have to call "refreshHard()" by yourself.
|
||||
`);
|
||||
options.disableMutationObserver = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Observe [aos] elements
|
||||
* If something is loaded by AJAX
|
||||
* it'll refresh plugin automatically
|
||||
*/
|
||||
if (!options.disableMutationObserver) {
|
||||
observer.ready('[data-aos]', refreshHard);
|
||||
}
|
||||
|
||||
/**
|
||||
* Don't init plugin if option `disable` is set
|
||||
* or when browser is not supported
|
||||
*/
|
||||
if (isDisabled(options.disable) || isBrowserNotSupported()) {
|
||||
return disable();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set global settings on body, based on options
|
||||
* so CSS can use it
|
||||
*/
|
||||
document
|
||||
.querySelector('body')
|
||||
.setAttribute('data-aos-easing', options.easing);
|
||||
|
||||
document
|
||||
.querySelector('body')
|
||||
.setAttribute('data-aos-duration', options.duration);
|
||||
|
||||
document.querySelector('body').setAttribute('data-aos-delay', options.delay);
|
||||
|
||||
/**
|
||||
* Handle initializing
|
||||
*/
|
||||
if (['DOMContentLoaded', 'load'].indexOf(options.startEvent) === -1) {
|
||||
// Listen to options.startEvent and initialize AOS
|
||||
document.addEventListener(options.startEvent, function() {
|
||||
refresh(true);
|
||||
});
|
||||
} else {
|
||||
window.addEventListener('load', function() {
|
||||
refresh(true);
|
||||
});
|
||||
}
|
||||
|
||||
if (
|
||||
options.startEvent === 'DOMContentLoaded' &&
|
||||
['complete', 'interactive'].indexOf(document.readyState) > -1
|
||||
) {
|
||||
// Initialize AOS if default startEvent was already fired
|
||||
refresh(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh plugin on window resize or orientation change
|
||||
*/
|
||||
window.addEventListener(
|
||||
'resize',
|
||||
debounce(refresh, options.debounceDelay, true)
|
||||
);
|
||||
|
||||
window.addEventListener(
|
||||
'orientationchange',
|
||||
debounce(refresh, options.debounceDelay, true)
|
||||
);
|
||||
|
||||
return $aosElements;
|
||||
};
|
||||
|
||||
/**
|
||||
* Export Public API
|
||||
*/
|
||||
|
||||
export default {
|
||||
init,
|
||||
refresh,
|
||||
refreshHard
|
||||
};
|
||||
1
public/assets/js/bootstrap.bundle.min.js.map
Normal file
1
public/assets/js/bootstrap.bundle.min.js.map
Normal file
File diff suppressed because one or more lines are too long
7
public/assets/js/bootstrap.min.js
vendored
Normal file
7
public/assets/js/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
5593
public/assets/js/fontawesome.js
Normal file
5593
public/assets/js/fontawesome.js
Normal file
File diff suppressed because one or more lines are too long
2
public/assets/js/jquery-3-6-0.min.js
vendored
Normal file
2
public/assets/js/jquery-3-6-0.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
114
public/assets/js/jquery.lineProgressbar.js
Normal file
114
public/assets/js/jquery.lineProgressbar.js
Normal file
@@ -0,0 +1,114 @@
|
||||
/**
|
||||
* jQuery Line Progressbar
|
||||
* Author: KingRayhan<rayhan095@gmail.com>
|
||||
* Author URL: https://electronthemes.com
|
||||
* Version: 1.1.2
|
||||
*/
|
||||
|
||||
;(function($) {
|
||||
'use strict'
|
||||
|
||||
$.fn.LineProgressbar = function(options) {
|
||||
options = $.extend(
|
||||
{
|
||||
percentage: 100,
|
||||
ShowProgressCount: true,
|
||||
duration: 1000,
|
||||
unit: '%',
|
||||
animation: true,
|
||||
// Styling Options
|
||||
fillBackgroundColor: '#3498db',
|
||||
backgroundColor: '#EEEEEE',
|
||||
radius: '10px',
|
||||
height: '10px',
|
||||
width: '100%',
|
||||
},
|
||||
options
|
||||
)
|
||||
|
||||
$.options = options
|
||||
return this.each(function(index, el) {
|
||||
// Markup
|
||||
if ($(el).data("progress-init") === undefined)
|
||||
$(el).data("progress-init", options.percentage);
|
||||
|
||||
let elementProgress = $(el).data("progress-init");
|
||||
|
||||
if (elementProgress === options.percentage) {
|
||||
$(el).html(
|
||||
'<div class="percentCount"></div><div class="progressbar"><div class="proggress"></div></div>'
|
||||
)
|
||||
}
|
||||
|
||||
var progressFill = $(el).find('.proggress')
|
||||
var progressBar = $(el).find('.progressbar')
|
||||
|
||||
progressFill.css({
|
||||
backgroundColor: options.fillBackgroundColor,
|
||||
height: options.height,
|
||||
borderRadius: options.radius,
|
||||
})
|
||||
progressBar.css({
|
||||
width: options.width,
|
||||
backgroundColor: options.backgroundColor,
|
||||
borderRadius: options.radius,
|
||||
})
|
||||
|
||||
/**
|
||||
* Progress with animation
|
||||
*/
|
||||
if (options.animation) {
|
||||
// Progressing
|
||||
progressFill.animate(
|
||||
{
|
||||
width: options.percentage + '%',
|
||||
},
|
||||
{
|
||||
step: function(x) {
|
||||
if (options.ShowProgressCount) {
|
||||
$(el)
|
||||
.find('.percentCount')
|
||||
.text(Math.round(x) + options.unit)
|
||||
}
|
||||
},
|
||||
duration: options.duration,
|
||||
}
|
||||
)
|
||||
} else {
|
||||
// Without animation
|
||||
progressFill.css('width', options.percentage + '%')
|
||||
$(el)
|
||||
.find('.percentCount')
|
||||
.text(Math.round(options.percentage) + '%')
|
||||
}
|
||||
})
|
||||
}
|
||||
})(jQuery)
|
||||
|
||||
$('[line-progressbar]').each(function() {
|
||||
var $this = $(this)
|
||||
function LineProgressing() {
|
||||
$this.LineProgressbar({
|
||||
percentage: $this.data('percentage'),
|
||||
unit: $this.data('unit'),
|
||||
animation: $this.data('animation'),
|
||||
ShowProgressCount: $this.data('showcount'),
|
||||
duration: $this.data('duration'),
|
||||
fillBackgroundColor: $this.data('progress-color'),
|
||||
backgroundColor: $this.data('bg-color'),
|
||||
radius: $this.data('radius'),
|
||||
height: $this.data('height'),
|
||||
width: $this.data('width'),
|
||||
})
|
||||
}
|
||||
var loadOnce = 0
|
||||
$this.waypoint(
|
||||
function() {
|
||||
loadOnce += 1
|
||||
if (loadOnce < 2) {
|
||||
LineProgressing()
|
||||
}
|
||||
},
|
||||
{ offset: '100%', triggerOnce: true }
|
||||
)
|
||||
})
|
||||
4
public/assets/js/jquery.magnific-popup.min.js
vendored
Normal file
4
public/assets/js/jquery.magnific-popup.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
190
public/assets/js/jquery.nice-select.js
Normal file
190
public/assets/js/jquery.nice-select.js
Normal file
@@ -0,0 +1,190 @@
|
||||
/* jQuery Nice Select - v1.1.0
|
||||
https://github.com/hernansartorio/jquery-nice-select
|
||||
Made by Hernán Sartorio */
|
||||
|
||||
(function($) {
|
||||
|
||||
$.fn.niceSelect = function(method) {
|
||||
|
||||
// Methods
|
||||
if (typeof method == 'string') {
|
||||
if (method == 'update') {
|
||||
this.each(function() {
|
||||
var $select = $(this);
|
||||
var $dropdown = $(this).next('.nice-select');
|
||||
var open = $dropdown.hasClass('open');
|
||||
|
||||
if ($dropdown.length) {
|
||||
$dropdown.remove();
|
||||
create_nice_select($select);
|
||||
|
||||
if (open) {
|
||||
$select.next().trigger('click');
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if (method == 'destroy') {
|
||||
this.each(function() {
|
||||
var $select = $(this);
|
||||
var $dropdown = $(this).next('.nice-select');
|
||||
|
||||
if ($dropdown.length) {
|
||||
$dropdown.remove();
|
||||
$select.css('display', '');
|
||||
}
|
||||
});
|
||||
if ($('.nice-select').length == 0) {
|
||||
$(document).off('.nice_select');
|
||||
}
|
||||
} else {
|
||||
console.log('Method "' + method + '" does not exist.')
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
// Hide native select
|
||||
this.hide();
|
||||
|
||||
// Create custom markup
|
||||
this.each(function() {
|
||||
var $select = $(this);
|
||||
|
||||
if (!$select.next().hasClass('nice-select')) {
|
||||
create_nice_select($select);
|
||||
}
|
||||
});
|
||||
|
||||
function create_nice_select($select) {
|
||||
$select.after($('<div></div>')
|
||||
.addClass('nice-select')
|
||||
.addClass($select.attr('class') || '')
|
||||
.addClass($select.attr('disabled') ? 'disabled' : '')
|
||||
.attr('tabindex', $select.attr('disabled') ? null : '0')
|
||||
.html('<span class="current"></span><ul class="list"></ul>')
|
||||
);
|
||||
|
||||
var $dropdown = $select.next();
|
||||
var $options = $select.find('option');
|
||||
var $selected = $select.find('option:selected');
|
||||
|
||||
$dropdown.find('.current').html($selected.data('display') || $selected.text());
|
||||
|
||||
$options.each(function(i) {
|
||||
var $option = $(this);
|
||||
var display = $option.data('display');
|
||||
|
||||
$dropdown.find('ul').append($('<li></li>')
|
||||
.attr('data-value', $option.val())
|
||||
.attr('data-display', (display || null))
|
||||
.addClass('option' +
|
||||
($option.is(':selected') ? ' selected' : '') +
|
||||
($option.is(':disabled') ? ' disabled' : ''))
|
||||
.html($option.text())
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
/* Event listeners */
|
||||
|
||||
// Unbind existing events in case that the plugin has been initialized before
|
||||
$(document).off('.nice_select');
|
||||
|
||||
// Open/close
|
||||
$(document).on('click.nice_select', '.nice-select', function(event) {
|
||||
var $dropdown = $(this);
|
||||
|
||||
$('.nice-select').not($dropdown).removeClass('open');
|
||||
$dropdown.toggleClass('open');
|
||||
|
||||
if ($dropdown.hasClass('open')) {
|
||||
$dropdown.find('.option');
|
||||
$dropdown.find('.focus').removeClass('focus');
|
||||
$dropdown.find('.selected').addClass('focus');
|
||||
} else {
|
||||
$dropdown.focus();
|
||||
}
|
||||
});
|
||||
|
||||
// Close when clicking outside
|
||||
$(document).on('click.nice_select', function(event) {
|
||||
if ($(event.target).closest('.nice-select').length === 0) {
|
||||
$('.nice-select').removeClass('open').find('.option');
|
||||
}
|
||||
});
|
||||
|
||||
// Option click
|
||||
$(document).on('click.nice_select', '.nice-select .option:not(.disabled)', function(event) {
|
||||
var $option = $(this);
|
||||
var $dropdown = $option.closest('.nice-select');
|
||||
|
||||
$dropdown.find('.selected').removeClass('selected');
|
||||
$option.addClass('selected');
|
||||
|
||||
var text = $option.data('display') || $option.text();
|
||||
$dropdown.find('.current').text(text);
|
||||
|
||||
$dropdown.prev('select').val($option.data('value')).trigger('change');
|
||||
});
|
||||
|
||||
// Keyboard events
|
||||
$(document).on('keydown.nice_select', '.nice-select', function(event) {
|
||||
var $dropdown = $(this);
|
||||
var $focused_option = $($dropdown.find('.focus') || $dropdown.find('.list .option.selected'));
|
||||
|
||||
// Space or Enter
|
||||
if (event.keyCode == 32 || event.keyCode == 13) {
|
||||
if ($dropdown.hasClass('open')) {
|
||||
$focused_option.trigger('click');
|
||||
} else {
|
||||
$dropdown.trigger('click');
|
||||
}
|
||||
return false;
|
||||
// Down
|
||||
} else if (event.keyCode == 40) {
|
||||
if (!$dropdown.hasClass('open')) {
|
||||
$dropdown.trigger('click');
|
||||
} else {
|
||||
var $next = $focused_option.nextAll('.option:not(.disabled)').first();
|
||||
if ($next.length > 0) {
|
||||
$dropdown.find('.focus').removeClass('focus');
|
||||
$next.addClass('focus');
|
||||
}
|
||||
}
|
||||
return false;
|
||||
// Up
|
||||
} else if (event.keyCode == 38) {
|
||||
if (!$dropdown.hasClass('open')) {
|
||||
$dropdown.trigger('click');
|
||||
} else {
|
||||
var $prev = $focused_option.prevAll('.option:not(.disabled)').first();
|
||||
if ($prev.length > 0) {
|
||||
$dropdown.find('.focus').removeClass('focus');
|
||||
$prev.addClass('focus');
|
||||
}
|
||||
}
|
||||
return false;
|
||||
// Esc
|
||||
} else if (event.keyCode == 27) {
|
||||
if ($dropdown.hasClass('open')) {
|
||||
$dropdown.trigger('click');
|
||||
}
|
||||
// Tab
|
||||
} else if (event.keyCode == 9) {
|
||||
if ($dropdown.hasClass('open')) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Detect CSS pointer-events support, for IE <= 10. From Modernizr.
|
||||
var style = document.createElement('a').style;
|
||||
style.cssText = 'pointer-events:auto';
|
||||
if (style.pointerEvents !== 'auto') {
|
||||
$('html').addClass('no-csspointerevents');
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
}(jQuery));
|
||||
470
public/assets/js/main.js
Normal file
470
public/assets/js/main.js
Normal file
@@ -0,0 +1,470 @@
|
||||
(function ($) {
|
||||
$(document).ready(function () {
|
||||
|
||||
//mobile menu active
|
||||
if ($("#mobile-menu").length > 0) {
|
||||
//Mobile menu
|
||||
$("#mobile-menu").meanmenu({
|
||||
meanMenuContainer: ".mobile-menu",
|
||||
meanScreenWidth: "991",
|
||||
});
|
||||
|
||||
$(".mobile-menu-bar").on("click", function () {
|
||||
$(".sidebar-main").addClass("active");
|
||||
});
|
||||
$(".sidebar-close").on("click", function () {
|
||||
$(".sidebar-main").removeClass("active");
|
||||
});
|
||||
}
|
||||
|
||||
//Video poppup
|
||||
if ($(".play-btn").length > 0) {
|
||||
$(".play-btn").magnificPopup({
|
||||
type: "iframe",
|
||||
});
|
||||
}
|
||||
|
||||
//Post gallary slider
|
||||
const blog_gallary = $(".gallary-slider");
|
||||
if (blog_gallary.length > 0) {
|
||||
//Blog Gallary
|
||||
blog_gallary.owlCarousel({
|
||||
loop: true,
|
||||
autoHeight: true,
|
||||
nav: true,
|
||||
navText: [
|
||||
"<i class='fa-solid fa-angle-left'></i>",
|
||||
"<i class='fa-solid fa-angle-right'></i>",
|
||||
],
|
||||
dots: false,
|
||||
items: 1,
|
||||
});
|
||||
}
|
||||
|
||||
// sticky header active
|
||||
if ($("#header").length > 0) {
|
||||
$(window).on("scroll", function (event) {
|
||||
var scroll = $(window).scrollTop();
|
||||
if (scroll < 1) {
|
||||
$("#header").removeClass("sticky");
|
||||
} else {
|
||||
$("#header").addClass("sticky");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//demo sidebar active
|
||||
const demosIcon = $("#demosIcon, .demos");
|
||||
const demoSidebar = $("#demo-sidebar");
|
||||
demosIcon.on("click", function (e) {
|
||||
e.preventDefault();
|
||||
demoSidebar.toggleClass("active-sidebar");
|
||||
});
|
||||
});
|
||||
|
||||
// pricing-plan-tab
|
||||
$("#ce-toggle").click(function (event) {
|
||||
$(".plan-toggle-wrap").toggleClass("active");
|
||||
});
|
||||
|
||||
$("#ce-toggle").change(function () {
|
||||
if ($(this).is(":checked")) {
|
||||
$(".tab-content #yearly").hide();
|
||||
$(".tab-content #monthly").show();
|
||||
} else {
|
||||
$(".tab-content #yearly").show();
|
||||
$(".tab-content #monthly").hide();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// owl-carousel-brend-logo
|
||||
$(".our-brnad-logos").owlCarousel({
|
||||
loop: true,
|
||||
margin: 10,
|
||||
nav: false,
|
||||
dots: false,
|
||||
autoplay: true,
|
||||
autoplayTimeout: 3000,
|
||||
responsive: {
|
||||
0: {
|
||||
items: 1,
|
||||
},
|
||||
600: {
|
||||
items: 3,
|
||||
},
|
||||
1000: {
|
||||
items: 6,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// owl-carousel-slider
|
||||
$(".trusred-slider-all").owlCarousel({
|
||||
loop: true,
|
||||
margin: 10,
|
||||
nav: false,
|
||||
dote: true,
|
||||
//autoplay: true,
|
||||
// autoplayTimeout: 3000,
|
||||
items: 1,
|
||||
});
|
||||
// owl-carousel-slider
|
||||
$(".citi-slider-all").owlCarousel({
|
||||
loop: true,
|
||||
margin: 10,
|
||||
nav: true,
|
||||
dots: false,
|
||||
navText: [
|
||||
"<i class='fa-solid fa-arrow-left'></i>",
|
||||
"<i class='fa-solid fa-arrow-right'></i>",
|
||||
],
|
||||
responsive: {
|
||||
0: {
|
||||
items: 1,
|
||||
},
|
||||
900: {
|
||||
items: 3.4,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// about team
|
||||
$(".about-team-slider-all").owlCarousel({
|
||||
loop: false,
|
||||
margin: 10,
|
||||
nav: true,
|
||||
dots: false,
|
||||
navText: [
|
||||
"<i class='fa-solid fa-arrow-left'></i>",
|
||||
"<i class='fa-solid fa-arrow-right'></i>",
|
||||
],
|
||||
responsive: {
|
||||
0: {
|
||||
items: 1,
|
||||
},
|
||||
900: {
|
||||
items: 4,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
|
||||
// owl-carousel-slider-home5
|
||||
$(".home5-slider").owlCarousel({
|
||||
loop: true,
|
||||
margin: 10,
|
||||
nav: false,
|
||||
dots: false,
|
||||
responsive: {
|
||||
0: {
|
||||
items: 1,
|
||||
},
|
||||
900: {
|
||||
items: 3,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// sticky header active
|
||||
if ($("#header").length > 0) {
|
||||
$(window).on("scroll", function (event) {
|
||||
var scroll = $(window).scrollTop();
|
||||
if (scroll < 1) {
|
||||
$("#header").removeClass("sticky");
|
||||
} else {
|
||||
$("#header").addClass("sticky");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
$(".liting-slider-all").owlCarousel({
|
||||
loop: true,
|
||||
margin: 10,
|
||||
nav: true,
|
||||
dots: false,
|
||||
navText: [
|
||||
"<i class='fa-solid fa-arrow-left'></i>",
|
||||
"<i class='fa-solid fa-arrow-right'></i>",
|
||||
],
|
||||
responsive: {
|
||||
0: {
|
||||
items: 1,
|
||||
},
|
||||
900: {
|
||||
items: 3,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
$(".porpertice-slider").owlCarousel({
|
||||
loop: true,
|
||||
margin: 10,
|
||||
nav: true,
|
||||
dots: false,
|
||||
navText: [
|
||||
"<i class='fa-solid fa-arrow-left'></i>",
|
||||
"<i class='fa-solid fa-arrow-right'></i>",
|
||||
],
|
||||
responsive: {
|
||||
0: {
|
||||
items: 1,
|
||||
},
|
||||
900: {
|
||||
items: 4,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
$(".about-slider-all").owlCarousel({
|
||||
loop: true,
|
||||
margin: 10,
|
||||
nav: false,
|
||||
dots: true,
|
||||
responsive: {
|
||||
0: {
|
||||
items: 1,
|
||||
},
|
||||
900: {
|
||||
items: 2,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
$(".fearuted-carousel-area").owlCarousel({
|
||||
loop: true,
|
||||
margin: 10,
|
||||
nav: true,
|
||||
dots: false,
|
||||
smartSpeed:1000,
|
||||
navText: [
|
||||
"<i class='fa-solid fa-angle-left'></i>",
|
||||
"<i class='fa-solid fa-angle-right'></i>",
|
||||
],
|
||||
responsive: {
|
||||
0: {
|
||||
items: 1,
|
||||
},
|
||||
900: {
|
||||
items: 1,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
//liting-slider
|
||||
|
||||
$(".property-slides-js").slick({
|
||||
centerMode: false,
|
||||
margin: "30",
|
||||
slidesToShow: 3,
|
||||
arrows: true,
|
||||
prevArrow: $(".testimonial-prev-arrow1"),
|
||||
nextArrow: $(".testimonial-next-arrow1"),
|
||||
draggable: false,
|
||||
responsive: [
|
||||
{
|
||||
breakpoint: 768,
|
||||
settings: {
|
||||
arrows: false,
|
||||
centerMode: true,
|
||||
centerPadding: "40px",
|
||||
slidesToShow: 3,
|
||||
},
|
||||
},
|
||||
{
|
||||
breakpoint: 480,
|
||||
settings: {
|
||||
arrows: false,
|
||||
centerMode: true,
|
||||
centerPadding: "40px",
|
||||
slidesToShow: 1,
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
//liting-slider2
|
||||
|
||||
$(".property-slides-js2").slick({
|
||||
centerMode: false,
|
||||
margin: "30",
|
||||
slidesToShow: 3,
|
||||
arrows: true,
|
||||
prevArrow: $(".testimonial-prev-arrow2"),
|
||||
nextArrow: $(".testimonial-next-arrow2"),
|
||||
draggable: false,
|
||||
responsive: [
|
||||
{
|
||||
breakpoint: 768,
|
||||
settings: {
|
||||
arrows: false,
|
||||
centerMode: true,
|
||||
centerPadding: "40px",
|
||||
slidesToShow: 3,
|
||||
},
|
||||
},
|
||||
{
|
||||
breakpoint: 480,
|
||||
settings: {
|
||||
arrows: false,
|
||||
centerMode: true,
|
||||
centerPadding: "40px",
|
||||
slidesToShow: 1,
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// home4-header-video
|
||||
new ModalVideo(".video-play-button2");
|
||||
new ModalVideo(".videoplybtn");
|
||||
|
||||
|
||||
// pricing-plan-tab
|
||||
$("#ce-toggle").click(function (event) {
|
||||
$(".plan-toggle-wrap").toggleClass("active");
|
||||
});
|
||||
|
||||
$("#ce-toggle").change(function () {
|
||||
if ($(this).is(":checked")) {
|
||||
$(".tab-content #yearly").hide();
|
||||
$(".tab-content #monthly").show();
|
||||
} else {
|
||||
$(".tab-content #yearly").show();
|
||||
$(".tab-content #monthly").hide();
|
||||
}
|
||||
});
|
||||
|
||||
// nice-select
|
||||
// $("select").niceSelect();
|
||||
|
||||
|
||||
// page-progress
|
||||
// var progressPath = document.querySelector(".progress-wrap path");
|
||||
// if (progressPath) {
|
||||
// var pathLength = progressPath.getTotalLength();
|
||||
// progressPath.style.transition = progressPath.style.WebkitTransition =
|
||||
// "none";
|
||||
// progressPath.style.strokeDasharray = pathLength + " " + pathLength;
|
||||
// progressPath.style.strokeDashoffset = pathLength;
|
||||
// progressPath.getBoundingClientRect();
|
||||
// progressPath.style.transition = progressPath.style.WebkitTransition =
|
||||
// "stroke-dashoffset 10ms linear";
|
||||
// var updateProgress = function () {
|
||||
// var scroll = $(window).scrollTop();
|
||||
// var height = $(document).height() - $(window).height();
|
||||
// var progress = pathLength - (scroll * pathLength) / height;
|
||||
// progressPath.style.strokeDashoffset = progress;
|
||||
// };
|
||||
// updateProgress();
|
||||
// $(window).scroll(updateProgress);
|
||||
// var offset = 50;
|
||||
// var duration = 550;
|
||||
// jQuery(window).on("scroll", function () {
|
||||
// if (jQuery(this).scrollTop() > offset) {
|
||||
// jQuery(".progress-wrap").addClass("active-progress");
|
||||
// } else {
|
||||
// jQuery(".progress-wrap").removeClass("active-progress");
|
||||
// }
|
||||
// });
|
||||
// jQuery(".progress-wrap").on("click", function (event) {
|
||||
// event.preventDefault();
|
||||
// jQuery("html, body").animate({ scrollTop: 0 }, duration);
|
||||
// return false;
|
||||
// });
|
||||
// }
|
||||
|
||||
// nice-select
|
||||
$("select").niceSelect();
|
||||
|
||||
|
||||
AOS.init({
|
||||
offset: 200,
|
||||
duration: 400,
|
||||
easing: "ease-in-out",
|
||||
anchorPlacement: "top-bottom",
|
||||
disable: "mobile",
|
||||
});
|
||||
|
||||
|
||||
|
||||
// preloader
|
||||
$(window).on("load", function (event) {
|
||||
setTimeout(function () {
|
||||
$("#preloader").fadeToggle();
|
||||
}, 1500);
|
||||
|
||||
});
|
||||
|
||||
//Product slider
|
||||
// $(".product-slider-single").slick({
|
||||
// slidesToShow: 1,
|
||||
// slidesToScroll: 1,
|
||||
// asNavFor: ".product-slider-nav",
|
||||
// dots: false,
|
||||
// arrows: false,
|
||||
// centerMode: false,
|
||||
// focusOnSelect: true,
|
||||
// });
|
||||
|
||||
// $(".product-slider-nav").slick({
|
||||
// slidesToShow: 5,
|
||||
// slidesToScroll: 1,
|
||||
// arrows: false,
|
||||
// focusOnSelect: true,
|
||||
// asNavFor: ".product-slider-single",
|
||||
// });
|
||||
|
||||
|
||||
//Product slider
|
||||
$(".product-slider-single").slick({
|
||||
slidesToShow: 1,
|
||||
slidesToScroll: 1,
|
||||
asNavFor: ".product-slider-nav",
|
||||
dots: false,
|
||||
arrows: false,
|
||||
centerMode: false,
|
||||
focusOnSelect: true,
|
||||
});
|
||||
|
||||
$(".product-slider-nav").slick({
|
||||
slidesToShow: 5,
|
||||
slidesToScroll: 1,
|
||||
arrows: false,
|
||||
|
||||
focusOnSelect: true,
|
||||
asNavFor: ".product-slider-single",
|
||||
});
|
||||
|
||||
|
||||
|
||||
})(jQuery);
|
||||
|
||||
|
||||
// nice-select
|
||||
// $("select").niceSelect();
|
||||
|
||||
// line progress bar
|
||||
|
||||
let progress = $('#progress1').LineProgressbar({
|
||||
percentage: 96
|
||||
});
|
||||
|
||||
let progress2 = $('#progress2').LineProgressbar({
|
||||
percentage: 96
|
||||
});
|
||||
|
||||
let progress3 = $('#progress3').LineProgressbar({
|
||||
percentage: 100
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
286
public/assets/js/mobile-meanmenu.js
Normal file
286
public/assets/js/mobile-meanmenu.js
Normal file
@@ -0,0 +1,286 @@
|
||||
/*!
|
||||
* jQuery meanMenu v2.0.8
|
||||
* @Copyright (C) 2012-2014 Chris Wharton @ MeanThemes (https://github.com/meanthemes/meanMenu)
|
||||
*
|
||||
*/
|
||||
/*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
|
||||
* HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
|
||||
* INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR
|
||||
* FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE
|
||||
* OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
|
||||
* COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.COPYRIGHT HOLDERS WILL NOT
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL
|
||||
* DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://gnu.org/licenses/>.
|
||||
*
|
||||
* Find more information at http://www.meanthemes.com/plugins/meanmenu/
|
||||
*
|
||||
*/
|
||||
|
||||
(function ($) {
|
||||
"use strict";
|
||||
$.fn.meanmenu = function (options) {
|
||||
var defaults = {
|
||||
meanMenuTarget: jQuery(this), // Target the current HTML markup you wish to replace
|
||||
meanMenuContainer: 'body', // Choose where meanmenu will be placed within the HTML
|
||||
meanMenuClose: "X", // single character you want to represent the close menu button
|
||||
meanMenuCloseSize: "18px", // set font size of close button
|
||||
meanMenuOpen: "<span /><span /><span />", // text/markup you want when menu is closed
|
||||
meanRevealPosition: "right", // left right or center positions
|
||||
meanRevealPositionDistance: "0", // Tweak the position of the menu
|
||||
meanRevealColour: "", // override CSS colours for the reveal background
|
||||
meanScreenWidth: "767", // set the screen width you want meanmenu to kick in at
|
||||
meanNavPush: "", // set a height here in px, em or % if you want to budge your layout now the navigation is missing.
|
||||
meanShowChildren: true, // true to show children in the menu, false to hide them
|
||||
meanExpandableChildren: true, // true to allow expand/collapse children
|
||||
meanExpand: "+", // single character you want to represent the expand for ULs
|
||||
meanContract: "-", // single character you want to represent the contract for ULs
|
||||
meanRemoveAttrs: false, // true to remove classes and IDs, false to keep them
|
||||
onePage: false, // set to true for one page sites
|
||||
meanDisplay: "block", // override display method for table cell based layouts e.g. table-cell
|
||||
removeElements: "" // set to hide page elements
|
||||
};
|
||||
options = $.extend(defaults, options);
|
||||
|
||||
// get browser width
|
||||
var currentWidth = window.innerWidth || document.documentElement.clientWidth;
|
||||
|
||||
return this.each(function () {
|
||||
var meanMenu = options.meanMenuTarget;
|
||||
var meanContainer = options.meanMenuContainer;
|
||||
var meanMenuClose = options.meanMenuClose;
|
||||
var meanMenuCloseSize = options.meanMenuCloseSize;
|
||||
var meanMenuOpen = options.meanMenuOpen;
|
||||
var meanRevealPosition = options.meanRevealPosition;
|
||||
var meanRevealPositionDistance = options.meanRevealPositionDistance;
|
||||
var meanRevealColour = options.meanRevealColour;
|
||||
var meanScreenWidth = options.meanScreenWidth;
|
||||
var meanNavPush = options.meanNavPush;
|
||||
var meanRevealClass = ".meanmenu-reveal";
|
||||
var meanShowChildren = options.meanShowChildren;
|
||||
var meanExpandableChildren = options.meanExpandableChildren;
|
||||
var meanExpand = options.meanExpand;
|
||||
var meanContract = options.meanContract;
|
||||
var meanRemoveAttrs = options.meanRemoveAttrs;
|
||||
var onePage = options.onePage;
|
||||
var meanDisplay = options.meanDisplay;
|
||||
var removeElements = options.removeElements;
|
||||
|
||||
//detect known mobile/tablet usage
|
||||
var isMobile = false;
|
||||
if ( (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)) || (navigator.userAgent.match(/Android/i)) || (navigator.userAgent.match(/Blackberry/i)) || (navigator.userAgent.match(/Windows Phone/i)) ) {
|
||||
isMobile = true;
|
||||
}
|
||||
|
||||
if ( (navigator.userAgent.match(/MSIE 8/i)) || (navigator.userAgent.match(/MSIE 7/i)) ) {
|
||||
// add scrollbar for IE7 & 8 to stop breaking resize function on small content sites
|
||||
jQuery('html').css("overflow-y" , "scroll");
|
||||
}
|
||||
|
||||
var meanRevealPos = "";
|
||||
var meanCentered = function() {
|
||||
if (meanRevealPosition === "center") {
|
||||
var newWidth = window.innerWidth || document.documentElement.clientWidth;
|
||||
var meanCenter = ( (newWidth/2)-22 )+"px";
|
||||
meanRevealPos = "left:" + meanCenter + ";right:auto;";
|
||||
|
||||
if (!isMobile) {
|
||||
jQuery('.meanmenu-reveal').css("left",meanCenter);
|
||||
} else {
|
||||
jQuery('.meanmenu-reveal').animate({
|
||||
left: meanCenter
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var menuOn = false;
|
||||
var meanMenuExist = false;
|
||||
|
||||
|
||||
if (meanRevealPosition === "right") {
|
||||
meanRevealPos = "right:" + meanRevealPositionDistance + ";left:auto;";
|
||||
}
|
||||
if (meanRevealPosition === "left") {
|
||||
meanRevealPos = "left:" + meanRevealPositionDistance + ";right:auto;";
|
||||
}
|
||||
// run center function
|
||||
meanCentered();
|
||||
|
||||
// set all styles for mean-reveal
|
||||
var $navreveal = "";
|
||||
|
||||
var meanInner = function() {
|
||||
// get last class name
|
||||
if (jQuery($navreveal).is(".meanmenu-reveal.meanclose")) {
|
||||
$navreveal.html(meanMenuClose);
|
||||
} else {
|
||||
$navreveal.html(meanMenuOpen);
|
||||
}
|
||||
};
|
||||
|
||||
// re-instate original nav (and call this on window.width functions)
|
||||
var meanOriginal = function() {
|
||||
jQuery('.mean-bar,.mean-push').remove();
|
||||
jQuery(meanContainer).removeClass("mean-container");
|
||||
jQuery(meanMenu).css('display', meanDisplay);
|
||||
menuOn = false;
|
||||
meanMenuExist = false;
|
||||
jQuery(removeElements).removeClass('mean-remove');
|
||||
};
|
||||
|
||||
// navigation reveal
|
||||
var showMeanMenu = function() {
|
||||
var meanStyles = "background:"+meanRevealColour+";color:"+meanRevealColour+";"+meanRevealPos;
|
||||
if (currentWidth <= meanScreenWidth) {
|
||||
jQuery(removeElements).addClass('mean-remove');
|
||||
meanMenuExist = true;
|
||||
// add class to body so we don't need to worry about media queries here, all CSS is wrapped in '.mean-container'
|
||||
jQuery(meanContainer).addClass("mean-container");
|
||||
jQuery('.mean-container').prepend('<div class="mean-bar"><a href="#nav" class="meanmenu-reveal" style="'+meanStyles+'">Show Navigation</a><nav class="mean-nav"></nav></div>');
|
||||
|
||||
//push meanMenu navigation into .mean-nav
|
||||
var meanMenuContents = jQuery(meanMenu).html();
|
||||
jQuery('.mean-nav').html(meanMenuContents);
|
||||
|
||||
// remove all classes from EVERYTHING inside meanmenu nav
|
||||
if(meanRemoveAttrs) {
|
||||
jQuery('nav.mean-nav ul, nav.mean-nav ul *').each(function() {
|
||||
// First check if this has mean-remove class
|
||||
if (jQuery(this).is('.mean-remove')) {
|
||||
jQuery(this).attr('class', 'mean-remove');
|
||||
} else {
|
||||
jQuery(this).removeAttr("class");
|
||||
}
|
||||
jQuery(this).removeAttr("id");
|
||||
});
|
||||
}
|
||||
|
||||
// push in a holder div (this can be used if removal of nav is causing layout issues)
|
||||
jQuery(meanMenu).before('<div class="mean-push" />');
|
||||
jQuery('.mean-push').css("margin-top",meanNavPush);
|
||||
|
||||
// hide current navigation and reveal mean nav link
|
||||
jQuery(meanMenu).hide();
|
||||
jQuery(".meanmenu-reveal").show();
|
||||
|
||||
// turn 'X' on or off
|
||||
jQuery(meanRevealClass).html(meanMenuOpen);
|
||||
$navreveal = jQuery(meanRevealClass);
|
||||
|
||||
//hide mean-nav ul
|
||||
jQuery('.mean-nav ul').hide();
|
||||
|
||||
// hide sub nav
|
||||
if(meanShowChildren) {
|
||||
// allow expandable sub nav(s)
|
||||
if(meanExpandableChildren){
|
||||
jQuery('.mean-nav ul ul').each(function() {
|
||||
if(jQuery(this).children().length){
|
||||
jQuery(this,'li:first').parent().append('<a class="mean-expand" href="#" style="font-size: '+ meanMenuCloseSize +'">'+ meanExpand +'</a>');
|
||||
}
|
||||
});
|
||||
jQuery('.mean-expand').on("click",function(e){
|
||||
e.preventDefault();
|
||||
if (jQuery(this).hasClass("mean-clicked")) {
|
||||
jQuery(this).text(meanExpand);
|
||||
jQuery(this).prev('ul').slideUp(300, function(){});
|
||||
} else {
|
||||
jQuery(this).text(meanContract);
|
||||
jQuery(this).prev('ul').slideDown(300, function(){});
|
||||
}
|
||||
jQuery(this).toggleClass("mean-clicked");
|
||||
});
|
||||
} else {
|
||||
jQuery('.mean-nav ul ul').show();
|
||||
}
|
||||
} else {
|
||||
jQuery('.mean-nav ul ul').hide();
|
||||
}
|
||||
|
||||
// add last class to tidy up borders
|
||||
jQuery('.mean-nav ul li').last().addClass('mean-last');
|
||||
$navreveal.removeClass("meanclose");
|
||||
jQuery($navreveal).click(function(e){
|
||||
e.preventDefault();
|
||||
if( menuOn === false ) {
|
||||
$navreveal.css("text-align", "center");
|
||||
$navreveal.css("text-indent", "0");
|
||||
$navreveal.css("font-size", meanMenuCloseSize);
|
||||
jQuery('.mean-nav ul:first').slideDown();
|
||||
menuOn = true;
|
||||
} else {
|
||||
jQuery('.mean-nav ul:first').slideUp();
|
||||
menuOn = false;
|
||||
}
|
||||
$navreveal.toggleClass("meanclose");
|
||||
meanInner();
|
||||
jQuery(removeElements).addClass('mean-remove');
|
||||
});
|
||||
|
||||
// for one page websites, reset all variables...
|
||||
if ( onePage ) {
|
||||
jQuery('.mean-nav ul > li > a:first-child').on( "click" , function () {
|
||||
jQuery('.mean-nav ul:first').slideUp();
|
||||
menuOn = false;
|
||||
jQuery($navreveal).toggleClass("meanclose").html(meanMenuOpen);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
meanOriginal();
|
||||
}
|
||||
};
|
||||
|
||||
if (!isMobile) {
|
||||
// reset menu on resize above meanScreenWidth
|
||||
jQuery(window).resize(function () {
|
||||
currentWidth = window.innerWidth || document.documentElement.clientWidth;
|
||||
if (currentWidth > meanScreenWidth) {
|
||||
meanOriginal();
|
||||
} else {
|
||||
meanOriginal();
|
||||
}
|
||||
if (currentWidth <= meanScreenWidth) {
|
||||
showMeanMenu();
|
||||
meanCentered();
|
||||
} else {
|
||||
meanOriginal();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
jQuery(window).resize(function () {
|
||||
// get browser width
|
||||
currentWidth = window.innerWidth || document.documentElement.clientWidth;
|
||||
|
||||
if (!isMobile) {
|
||||
meanOriginal();
|
||||
if (currentWidth <= meanScreenWidth) {
|
||||
showMeanMenu();
|
||||
meanCentered();
|
||||
}
|
||||
} else {
|
||||
meanCentered();
|
||||
if (currentWidth <= meanScreenWidth) {
|
||||
if (meanMenuExist === false) {
|
||||
showMeanMenu();
|
||||
}
|
||||
} else {
|
||||
meanOriginal();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// run main menuMenu function on load
|
||||
showMeanMenu();
|
||||
});
|
||||
};
|
||||
})(jQuery);
|
||||
86
public/assets/js/mobile-menu.js
Normal file
86
public/assets/js/mobile-menu.js
Normal file
@@ -0,0 +1,86 @@
|
||||
;(function($) {
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
//mobile-wrap
|
||||
const mobile_nav_open = $('.mobile-nav-icon');
|
||||
const mobile_sidebar = $('.mobile-sidebar');
|
||||
const mobile_nav_close = $('.menu-close');
|
||||
|
||||
mobile_nav_open.on('click', function(){
|
||||
mobile_sidebar.addClass('mobile-menu-active');
|
||||
});
|
||||
|
||||
mobile_nav_close.on('click', function(){
|
||||
mobile_sidebar.removeClass('mobile-menu-active');
|
||||
});
|
||||
|
||||
|
||||
|
||||
//mobile-menus
|
||||
$('.mobile-nav a').each(function(){
|
||||
var href = $(this).attr('href');
|
||||
if(href = '#'){
|
||||
$(this).addClass('hash-nav')
|
||||
}else {
|
||||
$(this).removeClass('hash-nav')
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
//mobile-menus-markup
|
||||
$.fn.menumarker = function(options){
|
||||
mobile_menu = $(this),
|
||||
settings = $.extend({
|
||||
format: "dropdown",
|
||||
sticky: false
|
||||
}, options);
|
||||
|
||||
|
||||
return this.each(function(){
|
||||
mobile_menu.find('li ul').parent().addClass('has-sub');
|
||||
var multiTg = function(){
|
||||
mobile_menu.find('.hash-nav').parent().addClass('hash-has-sub');
|
||||
mobile_menu.find(".has-sub").prepend('<span class="submenu-button"><em></em></span>');
|
||||
mobile_menu.find('.submenu-button').on('click', function(){
|
||||
$(this).toggleClass('submenu-opened');
|
||||
if ($(this).siblings('ul').hasClass('open-sub')) {
|
||||
$(this).siblings('ul').removeClass('open-sub').hide('fadeIn');
|
||||
$(this).siblings('ul').hide('fadeIn');
|
||||
} else {
|
||||
$(this).siblings('ul').addClass('open-sub').hide('fadeIn');
|
||||
$(this).siblings('ul').slideToggle().show('fadeIn');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
if (settings.format === 'multitoggle') multiTg();
|
||||
else mobile_menu.addClass('dropdown');
|
||||
if (settings.sticky === true) mobile_menu.css('position', 'fixed');
|
||||
var resizeFix = function () {
|
||||
if ($(window).width() > 991) {
|
||||
mobile_menu.find('ul').show('fadeIn');
|
||||
mobile_menu.find('ul.sub-menu').hide('fadeIn');
|
||||
}
|
||||
};
|
||||
resizeFix();
|
||||
return $(window).on('resize', resizeFix);
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
$('.mobile-nav').menumarker({
|
||||
format: "multitoggle"
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
})(jQuery);
|
||||
|
||||
25
public/assets/js/modal-video.min.js
vendored
Normal file
25
public/assets/js/modal-video.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
7
public/assets/js/owl.carousel.min.js
vendored
Normal file
7
public/assets/js/owl.carousel.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/assets/js/slick-slider.js
Normal file
1
public/assets/js/slick-slider.js
Normal file
File diff suppressed because one or more lines are too long
305
public/assets/js/tilt.jquery.js
Normal file
305
public/assets/js/tilt.jquery.js
Normal file
@@ -0,0 +1,305 @@
|
||||
(function (factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['jquery'], factory);
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
// Node/CommonJS
|
||||
module.exports = function( root, jQuery ) {
|
||||
if ( jQuery === undefined ) {
|
||||
// require('jQuery') returns a factory that requires window to
|
||||
// build a jQuery instance, we normalize how we use modules
|
||||
// that require this pattern but the window provided is a noop
|
||||
// if it's defined (how jquery works)
|
||||
if ( typeof window !== 'undefined' ) {
|
||||
jQuery = require('jquery');
|
||||
}
|
||||
else {
|
||||
jQuery = require('jquery')(root);
|
||||
}
|
||||
}
|
||||
factory(jQuery);
|
||||
return jQuery;
|
||||
};
|
||||
} else {
|
||||
// Browser globals
|
||||
factory(jQuery);
|
||||
}
|
||||
}(function ($) {
|
||||
$.fn.tilt = function (options) {
|
||||
|
||||
/**
|
||||
* RequestAnimationFrame
|
||||
*/
|
||||
const requestTick = function() {
|
||||
if (this.ticking) return;
|
||||
requestAnimationFrame(updateTransforms.bind(this));
|
||||
this.ticking = true;
|
||||
};
|
||||
|
||||
/**
|
||||
* Bind mouse movement evens on instance
|
||||
*/
|
||||
const bindEvents = function() {
|
||||
const _this = this;
|
||||
$(this).on('mousemove', mouseMove);
|
||||
$(this).on('mouseenter', mouseEnter);
|
||||
if (this.settings.reset) $(this).on('mouseleave', mouseLeave);
|
||||
if (this.settings.glare) $(window).on('resize', updateGlareSize.bind(_this));
|
||||
};
|
||||
|
||||
/**
|
||||
* Set transition only on mouse leave and mouse enter so it doesn't influence mouse move transforms
|
||||
*/
|
||||
const setTransition = function() {
|
||||
if (this.timeout !== undefined) clearTimeout(this.timeout);
|
||||
$(this).css({'transition': `${this.settings.speed}ms ${this.settings.easing}`});
|
||||
if(this.settings.glare) this.glareElement.css({'transition': `opacity ${this.settings.speed}ms ${this.settings.easing}`});
|
||||
this.timeout = setTimeout(() => {
|
||||
$(this).css({'transition': ''});
|
||||
if(this.settings.glare) this.glareElement.css({'transition': ''});
|
||||
}, this.settings.speed);
|
||||
};
|
||||
|
||||
/**
|
||||
* When user mouse enters tilt element
|
||||
*/
|
||||
const mouseEnter = function(event) {
|
||||
this.ticking = false;
|
||||
$(this).css({'will-change': 'transform'});
|
||||
setTransition.call(this);
|
||||
|
||||
// Trigger change event
|
||||
$(this).trigger("tilt.mouseEnter");
|
||||
};
|
||||
|
||||
/**
|
||||
* Return the x,y position of the mouse on the tilt element
|
||||
* @returns {{x: *, y: *}}
|
||||
*/
|
||||
const getMousePositions = function(event) {
|
||||
if (typeof(event) === "undefined") {
|
||||
event = {
|
||||
pageX: $(this).offset().left + $(this).outerWidth() / 2,
|
||||
pageY: $(this).offset().top + $(this).outerHeight() / 2
|
||||
};
|
||||
}
|
||||
return {x: event.pageX, y: event.pageY};
|
||||
};
|
||||
|
||||
/**
|
||||
* When user mouse moves over the tilt element
|
||||
*/
|
||||
const mouseMove = function(event) {
|
||||
this.mousePositions = getMousePositions(event);
|
||||
requestTick.call(this);
|
||||
};
|
||||
|
||||
/**
|
||||
* When user mouse leaves tilt element
|
||||
*/
|
||||
const mouseLeave = function() {
|
||||
setTransition.call(this);
|
||||
this.reset = true;
|
||||
requestTick.call(this);
|
||||
|
||||
// Trigger change event
|
||||
$(this).trigger("tilt.mouseLeave");
|
||||
};
|
||||
|
||||
/**
|
||||
* Get tilt values
|
||||
*
|
||||
* @returns {{x: tilt value, y: tilt value}}
|
||||
*/
|
||||
const getValues = function() {
|
||||
const width = $(this).outerWidth();
|
||||
const height = $(this).outerHeight();
|
||||
const left = $(this).offset().left;
|
||||
const top = $(this).offset().top;
|
||||
const percentageX = (this.mousePositions.x - left) / width;
|
||||
const percentageY = (this.mousePositions.y - top) / height;
|
||||
// x or y position inside instance / width of instance = percentage of position inside instance * the max tilt value
|
||||
const tiltX = ((this.settings.maxTilt / 2) - ((percentageX) * this.settings.maxTilt)).toFixed(2);
|
||||
const tiltY = (((percentageY) * this.settings.maxTilt) - (this.settings.maxTilt / 2)).toFixed(2);
|
||||
// angle
|
||||
const angle = Math.atan2(this.mousePositions.x - (left+width/2),- (this.mousePositions.y - (top+height/2)) )*(180/Math.PI);
|
||||
// Return x & y tilt values
|
||||
return {tiltX, tiltY, 'percentageX': percentageX * 100, 'percentageY': percentageY * 100, angle};
|
||||
};
|
||||
|
||||
/**
|
||||
* Update tilt transforms on mousemove
|
||||
*/
|
||||
const updateTransforms = function() {
|
||||
this.transforms = getValues.call(this);
|
||||
|
||||
if (this.reset) {
|
||||
this.reset = false;
|
||||
$(this).css('transform', `perspective(${this.settings.perspective}px) rotateX(0deg) rotateY(0deg)`);
|
||||
|
||||
// Rotate glare if enabled
|
||||
if (this.settings.glare){
|
||||
this.glareElement.css('transform', `rotate(180deg) translate(-50%, -50%)`);
|
||||
this.glareElement.css('opacity', `0`);
|
||||
}
|
||||
|
||||
return;
|
||||
} else {
|
||||
$(this).css('transform', `perspective(${this.settings.perspective}px) rotateX(${this.settings.disableAxis === 'x' ? 0 : this.transforms.tiltY}deg) rotateY(${this.settings.disableAxis === 'y' ? 0 : this.transforms.tiltX}deg) scale3d(${this.settings.scale},${this.settings.scale},${this.settings.scale})`);
|
||||
|
||||
// Rotate glare if enabled
|
||||
if (this.settings.glare){
|
||||
this.glareElement.css('transform', `rotate(${this.transforms.angle}deg) translate(-50%, -50%)`);
|
||||
this.glareElement.css('opacity', `${this.transforms.percentageY * this.settings.maxGlare / 100}`);
|
||||
}
|
||||
}
|
||||
|
||||
// Trigger change event
|
||||
$(this).trigger("change", [this.transforms]);
|
||||
|
||||
this.ticking = false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Prepare elements
|
||||
*/
|
||||
const prepareGlare = function () {
|
||||
const glarePrerender = this.settings.glarePrerender;
|
||||
|
||||
// If option pre-render is enabled we assume all html/css is present for an optimal glare effect.
|
||||
if (!glarePrerender)
|
||||
// Create glare element
|
||||
$(this).append('<div class="js-tilt-glare"><div class="js-tilt-glare-inner"></div></div>');
|
||||
|
||||
// Store glare selector if glare is enabled
|
||||
this.glareElementWrapper = $(this).find(".js-tilt-glare");
|
||||
this.glareElement = $(this).find(".js-tilt-glare-inner");
|
||||
|
||||
// Remember? We assume all css is already set, so just return
|
||||
if (glarePrerender) return;
|
||||
|
||||
// Abstracted re-usable glare styles
|
||||
const stretch = {
|
||||
'position': 'absolute',
|
||||
'top': '0',
|
||||
'left': '0',
|
||||
'width': '100%',
|
||||
'height': '100%',
|
||||
};
|
||||
|
||||
// Style glare wrapper
|
||||
this.glareElementWrapper.css(stretch).css({
|
||||
'overflow': 'hidden',
|
||||
'pointer-events': 'none',
|
||||
});
|
||||
|
||||
// Style glare element
|
||||
this.glareElement.css({
|
||||
'position': 'absolute',
|
||||
'top': '50%',
|
||||
'left': '50%',
|
||||
'background-image': `linear-gradient(0deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 100%)`,
|
||||
'width': `${$(this).outerWidth()*2}`,
|
||||
'height': `${$(this).outerWidth()*2}`,
|
||||
'transform': 'rotate(180deg) translate(-50%, -50%)',
|
||||
'transform-origin': '0% 0%',
|
||||
'opacity': '0',
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Update glare on resize
|
||||
*/
|
||||
const updateGlareSize = function () {
|
||||
this.glareElement.css({
|
||||
'width': `${$(this).outerWidth()*2}`,
|
||||
'height': `${$(this).outerWidth()*2}`,
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Public methods
|
||||
*/
|
||||
$.fn.tilt.destroy = function() {
|
||||
$(this).each(function () {
|
||||
$(this).find('.js-tilt-glare').remove();
|
||||
$(this).css({'will-change': '', 'transform': ''});
|
||||
$(this).off('mousemove mouseenter mouseleave');
|
||||
});
|
||||
};
|
||||
|
||||
$.fn.tilt.getValues = function() {
|
||||
const results = [];
|
||||
$(this).each(function () {
|
||||
this.mousePositions = getMousePositions.call(this);
|
||||
results.push(getValues.call(this));
|
||||
});
|
||||
return results;
|
||||
};
|
||||
|
||||
$.fn.tilt.reset = function() {
|
||||
$(this).each(function () {
|
||||
this.mousePositions = getMousePositions.call(this);
|
||||
this.settings = $(this).data('settings');
|
||||
mouseLeave.call(this);
|
||||
setTimeout(() => {
|
||||
this.reset = false;
|
||||
}, this.settings.transition);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Loop every instance
|
||||
*/
|
||||
return this.each(function () {
|
||||
|
||||
/**
|
||||
* Default settings merged with user settings
|
||||
* Can be set trough data attributes or as parameter.
|
||||
* @type {*}
|
||||
*/
|
||||
this.settings = $.extend({
|
||||
maxTilt: $(this).is('[data-tilt-max]') ? $(this).data('tilt-max') : 20,
|
||||
perspective: $(this).is('[data-tilt-perspective]') ? $(this).data('tilt-perspective') : 300,
|
||||
easing: $(this).is('[data-tilt-easing]') ? $(this).data('tilt-easing') : 'cubic-bezier(.03,.98,.52,.99)',
|
||||
scale: $(this).is('[data-tilt-scale]') ? $(this).data('tilt-scale') : '1',
|
||||
speed: $(this).is('[data-tilt-speed]') ? $(this).data('tilt-speed') : '400',
|
||||
transition: $(this).is('[data-tilt-transition]') ? $(this).data('tilt-transition') : true,
|
||||
disableAxis: $(this).is('[data-tilt-disable-axis]') ? $(this).data('tilt-disable-axis') : null,
|
||||
axis: $(this).is('[data-tilt-axis]') ? $(this).data('tilt-axis') : null,
|
||||
reset: $(this).is('[data-tilt-reset]') ? $(this).data('tilt-reset') : true,
|
||||
glare: $(this).is('[data-tilt-glare]') ? $(this).data('tilt-glare') : false,
|
||||
maxGlare: $(this).is('[data-tilt-maxglare]') ? $(this).data('tilt-maxglare') : 1,
|
||||
}, options);
|
||||
|
||||
// Add deprecation warning & set disableAxis to deprecated axis setting
|
||||
if(this.settings.axis !== null){
|
||||
console.warn('Tilt.js: the axis setting has been renamed to disableAxis. See https://github.com/gijsroge/tilt.js/pull/26 for more information');
|
||||
this.settings.disableAxis = this.settings.axis;
|
||||
}
|
||||
|
||||
this.init = () => {
|
||||
// Store settings
|
||||
$(this).data('settings', this.settings);
|
||||
|
||||
// Prepare element
|
||||
if(this.settings.glare) prepareGlare.call(this);
|
||||
|
||||
// Bind events
|
||||
bindEvents.call(this);
|
||||
};
|
||||
|
||||
// Init
|
||||
this.init();
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Auto load
|
||||
*/
|
||||
$('[data-tilt]').tilt();
|
||||
|
||||
return true;
|
||||
}));
|
||||
Reference in New Issue
Block a user