mirror of
https://github.com/hanzoai/gallery.git
synced 2026-10-30 14:51:33 +00:00
332 lines
6.9 KiB
JavaScript
332 lines
6.9 KiB
JavaScript
// select 2
|
|
(function(){
|
|
// select 2 default
|
|
$('.js-select-2').select2({
|
|
width: '100%'
|
|
});
|
|
|
|
// select 2 without search
|
|
$('.js-select-2-no-search').select2({
|
|
width: '100%',
|
|
minimumResultsForSearch: -1
|
|
});
|
|
|
|
// select 2 with dropdown icons
|
|
function iformat(icon) {
|
|
var originalOption = icon.element;
|
|
return $('<span class="select2-icon-option"><i class="la la-' + $(originalOption).data('icon') + '"></i> ' + icon.text + '</span>');
|
|
}
|
|
|
|
$('.js-select-2-with-icons').select2({
|
|
width: '100%',
|
|
templateResult: iformat
|
|
});
|
|
}());
|
|
|
|
// add class for native selects
|
|
(function(){
|
|
$('select').on('change', function(){
|
|
$(this).addClass('active');
|
|
});
|
|
}());
|
|
|
|
// slider
|
|
(function(){
|
|
const slider = $('.js-slider');
|
|
if (slider.length) {
|
|
slider.each(function(){
|
|
const _this = $(this),
|
|
min = _this.data('min'),
|
|
max = _this.data('max'),
|
|
start = _this.data('start'),
|
|
end = _this.data('end'),
|
|
step = _this.data('step'),
|
|
tooltips = _this.data('tooltips');
|
|
|
|
let optionStart = [start],
|
|
optionConnect = [true, false],
|
|
optionTooltips = false;
|
|
|
|
if (end) {
|
|
optionStart = [start, end];
|
|
optionConnect = true;
|
|
}
|
|
|
|
if (tooltips) {
|
|
optionTooltips = [true];
|
|
if (end) {
|
|
optionTooltips = [true, true];
|
|
}
|
|
}
|
|
|
|
noUiSlider.create(_this[0], {
|
|
start: optionStart,
|
|
connect: optionConnect,
|
|
step: step,
|
|
tooltips: optionTooltips,
|
|
range: {
|
|
'min': min,
|
|
'max': max
|
|
},
|
|
format: wNumb({
|
|
decimals: 0
|
|
})
|
|
});
|
|
});
|
|
}
|
|
}());
|
|
|
|
// toggle sidebar
|
|
(function(){
|
|
var sidebar = $('.js-sidebar'),
|
|
sidebarContainer = sidebar.find('.js-sidebar-container');
|
|
|
|
nav = sidebar.find('.js-nav'),
|
|
navLinkMenu = nav.find('.js-nav-link-menu'),
|
|
navPrimary = nav.find('.js-nav-primary'),
|
|
navSecondary = nav.find('.js-nav-secondary'),
|
|
|
|
container = $('.js-container'),
|
|
containerToggle = $('.js-container-toggle, .js-sidebar-toggle');
|
|
|
|
var visibleNavSecondary = false;
|
|
|
|
containerToggle.on('click', function(){
|
|
container.toggleClass('extended')
|
|
sidebarContainer.toggleClass('toggled');
|
|
nav.toggleClass('extended');
|
|
});
|
|
|
|
navLinkMenu.on('click', function(){
|
|
visibleNavSecondary = !visibleNavSecondary;
|
|
navLinkMenu.toggleClass('active');
|
|
navSecondary.toggleClass('visible');
|
|
});
|
|
|
|
// show/hide menu on scroll on mobile
|
|
var prevScrollPos = $(window).scrollTop();
|
|
|
|
$(window).scroll(function(){
|
|
var currentScrollPos = $(window).scrollTop();
|
|
|
|
if (!visibleNavSecondary && (prevScrollPos < currentScrollPos)) {
|
|
if (!navPrimary.hasClass('hidden')) {
|
|
navPrimary.addClass('hidden');
|
|
}
|
|
} else {
|
|
navPrimary.removeClass('hidden');
|
|
}
|
|
|
|
prevScrollPos = currentScrollPos;
|
|
});
|
|
}());
|
|
|
|
// search
|
|
(function(){
|
|
var search = $('.js-search');
|
|
if (search.length) {
|
|
var open = search.find('.js-search-open'),
|
|
input = search.find('.js-search-input'),
|
|
dropdown = search.find('.js-search-dropdown'),
|
|
results = search.find('.js-search-results'),
|
|
backdrop = search.find('.js-search-backdrop');
|
|
|
|
open.on('click', function(){
|
|
search.addClass('open');
|
|
input.focus();
|
|
});
|
|
|
|
input.on('keyup', function(){
|
|
if ($(this).val().length >= 3) {
|
|
results.addClass('visible');
|
|
} else {
|
|
results.removeClass('visible');
|
|
}
|
|
});
|
|
|
|
backdrop.on('click', function(){
|
|
search.removeClass('open');
|
|
});
|
|
}
|
|
}());
|
|
|
|
// new
|
|
(function(){
|
|
var _new = $('.js-new');
|
|
if (_new.length) {
|
|
var open = _new.find('.js-new-open'),
|
|
dropdown = _new.find('.js-new-dropdown'),
|
|
backdrop = _new.find('.js-new-backdrop');
|
|
|
|
open.on('click', function(){
|
|
_new.toggleClass('open');
|
|
});
|
|
|
|
backdrop.on('click', function(){
|
|
_new.removeClass('open');
|
|
});
|
|
}
|
|
}());
|
|
|
|
// layout mobile tabs
|
|
(function(){
|
|
var layout = $('.js-layout');
|
|
if (layout.length) {
|
|
var action = layout.find('.js-layout-action'),
|
|
tab = layout.find('.js-layout-tab');
|
|
|
|
action.on('click', function(){
|
|
var index = $(this).index();
|
|
|
|
action.removeClass('active');
|
|
action.eq(index).addClass('active');
|
|
|
|
tab.removeClass('visible');
|
|
tab.eq(index).addClass('visible');
|
|
});
|
|
}
|
|
}());
|
|
|
|
// panel tabs
|
|
(function(){
|
|
var panel = $('.js-panel');
|
|
if (panel.length) {
|
|
var btn = panel.find('.js-panel-btn, .js-panel-action'),
|
|
tab = panel.find('.js-panel-tab');
|
|
|
|
btn.on('click', function(){
|
|
var index = $(this).index();
|
|
|
|
btn.removeClass('active');
|
|
btn.eq(index).addClass('active');
|
|
|
|
tab.hide();
|
|
tab.eq(index).show();
|
|
});
|
|
}
|
|
}());
|
|
|
|
// sort
|
|
(function(){
|
|
var sort = $('.js-sort');
|
|
if (sort.length) {
|
|
var head = sort.find('.js-sort-head'),
|
|
selected = sort.find('.js-sort-selected'),
|
|
dropdown = sort.find('.js-sort-dropdown'),
|
|
switch_ = sort.find('.js-sort-switch'),
|
|
apply = sort.find('.js-sort-apply'),
|
|
backdrop = sort.find('.js-sort-backdrop');
|
|
|
|
head.on('click', function(){
|
|
sort.addClass('open');
|
|
});
|
|
|
|
switch_.on('change', function(){
|
|
selected.text($(this).find('span').text());
|
|
});
|
|
|
|
apply.on('click', function(){
|
|
sort.removeClass('open');
|
|
});
|
|
|
|
backdrop.on('click', function(){
|
|
sort.removeClass('open');
|
|
});
|
|
}
|
|
}());
|
|
|
|
// menu
|
|
(function(){
|
|
var menus = $('.js-menu');
|
|
if (menus.length) {
|
|
menus.each(function(){
|
|
var menu = $(this),
|
|
menuHead = menu.find('.js-menu-head'),
|
|
menuToggle = menu.find('.js-menu-toggle'),
|
|
menuContainer = menu.find('.js-menu-container'),
|
|
menuItem = menu.find('.js-menu-item'),
|
|
menuBackdrop = menu.find('.js-menu-backdrop');
|
|
|
|
menuToggle.on('click', function(){
|
|
menuContainer.addClass('visible');
|
|
menuBackdrop.show();
|
|
});
|
|
|
|
menuItem.on('click', function(e){
|
|
e.preventDefault();
|
|
|
|
var _this = $(this),
|
|
group = _this.data('menu-group'),
|
|
tab = _this.data('menu-item'),
|
|
content = _this.html();
|
|
|
|
menuItem.removeClass('active');
|
|
_this.addClass('active');
|
|
|
|
$(`[data-tabs-group="${group}"]`).hide();
|
|
$(`[data-tabs-item="${tab}"]`).show();
|
|
|
|
menuHead.find('.js-menu-item').html(content);
|
|
hideMenu();
|
|
});
|
|
|
|
menuBackdrop.on('click', function(){
|
|
hideMenu();
|
|
});
|
|
|
|
function hideMenu(){
|
|
menuContainer.removeClass('visible');
|
|
menuBackdrop.hide();
|
|
}
|
|
});
|
|
}
|
|
}());
|
|
|
|
// modal
|
|
(function(){
|
|
$('[data-modal]').on('click', function(e){
|
|
e.preventDefault();
|
|
const modal = $($(this).data('modal'));
|
|
modal.addClass('visible');
|
|
});
|
|
|
|
$('.js-modal-close').on('click', function(){
|
|
$(this).parents('.js-modal').removeClass('visible');
|
|
});
|
|
|
|
$('.js-modal').on('click', function(){
|
|
$(this).removeClass('visible');
|
|
});
|
|
|
|
$('.js-modal-container').on('click', function(e){
|
|
e.stopPropagation();
|
|
});
|
|
}());
|
|
|
|
// accordion
|
|
(function(){
|
|
const accordion = $('.js-accordion');
|
|
if (accordion.length) {
|
|
const head = accordion.find('.js-accordion-head'),
|
|
body = accordion.find('.js-accordion-body');
|
|
|
|
head.on('click', function(){
|
|
const _this = $(this);
|
|
if (!_this.hasClass('active')) {
|
|
head.removeClass('active');
|
|
body.slideUp();
|
|
_this.addClass('active');
|
|
_this.next().slideDown();
|
|
} else {
|
|
head.removeClass('active');
|
|
body.slideUp();
|
|
}
|
|
});
|
|
}
|
|
}());
|
|
|
|
|
|
|
|
|
|
|