(function ($) { const $html = $('html'); // lazyload images Journal.lazy('image', '.lazyload', { loaded: function (el) { el.classList.add('lazyloaded'); } }); // tooltips if (Journal['isDesktop']) { Journal.lazy('tooltip', '[data-toggle="tooltip-hover"]', { load: function (el) { const $el = $(el); $el.tooltip({ container: 'body' }); } }); } // tooltip class $(document).on('show.bs.tooltip', function (e) { const $el = $(e.target); $el.attr('title', ''); $el.data('tooltipClass') && $el.data('bs.tooltip').$tip.addClass($el.data('tooltipClass')); }); // dropdowns Journal.lazy('dropdown', '[data-toggle="dropdown"]', { load: function (el) { const $el = $(el); $el.attr('data-toggle', 'dropdown-hover'); } }); // dropdowns clear function clear_dropdowns() { const $trigger = $('> .dropdown-toggle', this); const $dropdown = $(this); const relatedTarget = { relatedTarget: $trigger[0] }; $dropdown.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)); if (e.isDefaultPrevented()) { return; } $dropdown.removeClass('open'); $trigger.attr('aria-expanded', 'true'); $dropdown.trigger(e = $.Event('hidden.bs.dropdown', relatedTarget)); } // dropdown toggle $(document).on('click', '[data-toggle="dropdown-hover"]', function (e) { const $trigger = $(this); const $dropdown = $(this).closest('.dropdown'); const relatedTarget = { relatedTarget: $trigger[0] }; const isOpen = $dropdown.hasClass('open'); const isLink = $trigger.attr('href') && !$trigger.attr('href').startsWith('javascript:;'); if (isOpen && isLink) { return; } e.preventDefault(); e.stopPropagation(); if (!isOpen) { $dropdown.trigger(e = $.Event('show.bs.dropdown', relatedTarget)); if (e.isDefaultPrevented()) { return; } $('.dropdown.open').not($dropdown).not($dropdown.parents('.dropdown')).each(clear_dropdowns); $dropdown.addClass('open'); $trigger.attr('aria-expanded', 'false'); $dropdown.trigger(e = $.Event('shown.bs.dropdown', relatedTarget)); } else { $dropdown.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)); if (e.isDefaultPrevented()) { return; } $dropdown.removeClass('open'); $trigger.attr('aria-expanded', 'true'); $dropdown.trigger(e = $.Event('hidden.bs.dropdown', relatedTarget)); } }); // dropdown clear $(document).on('click', function (e) { $('.dropdown.open').not($(e.target).parents('.dropdown')).each(clear_dropdowns); }); // dropdown on hover if (Journal['isDesktop']) { function dropdownOver(e) { if (Journal['isTouch']) { return; } const $trigger = $('> .dropdown-toggle', this); const $dropdown = $(this); const relatedTarget = { relatedTarget: $trigger[0] }; $dropdown.trigger(e = $.Event('show.bs.dropdown', relatedTarget)); if (e.isDefaultPrevented()) { return; } $dropdown.addClass('open'); $trigger.attr('aria-expanded', 'false'); $dropdown.trigger(e = $.Event('shown.bs.dropdown', relatedTarget)); } function dropdownOut(e) { if (Journal['isTouch']) { return; } const $trigger = $('> .dropdown-toggle', this); const $dropdown = $(this); const relatedTarget = { relatedTarget: $trigger[0] }; $dropdown.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)); if (e.isDefaultPrevented()) { return; } $dropdown.removeClass('open'); $trigger.attr('aria-expanded', 'true'); $dropdown.trigger(e = $.Event('hidden.bs.dropdown', relatedTarget)); } $(document).hoverIntent({ over: dropdownOver, out: dropdownOut, selector: '.dropdown:not([data-overlay]):not(.search-dropdown-page):not(.dropdown .dropdown)' }); $(document).on('mouseenter', '.dropdown .dropdown', dropdownOver); $(document).on('mouseleave', '.dropdown .dropdown', dropdownOut); } // show animation $(document).on('shown.bs.dropdown', function (e) { const $dropdown = $(e.target); $dropdown.outerWidth(); $dropdown.addClass('animating'); }); $(document).on('hidden.bs.dropdown', function (e) { const $dropdown = $(e.target); $dropdown.removeClass('animating'); }); // dropdown templates + color scheme $(document).on('show.bs.dropdown', function (e) { const el = $(e.target).find('template')[0] || $(' > template', e.target)[0]; if (Journal['mobile_header_active']) { if (Journal['header_mobile_dropdown_color_scheme']) { const menu = $(e.target).find('.dropdown-menu')[0] || $(' > .dropdown-menu', e.target)[0]; if (!$(menu).is('[class*="color-scheme-"]')) { menu.classList.add(Journal['header_mobile_dropdown_color_scheme']); } } } else { if (Journal['header_dropdown_color_scheme']) { const menu = $(e.target).find('.dropdown-menu')[0] || $(' > .dropdown-menu', e.target)[0]; if (!$(menu).is('[class*="color-scheme-"]')) { menu.classList.add(Journal['header_dropdown_color_scheme']); } } } if (el) { Journal.template(el); Journal.lazy(); } }); $(document).on('shown.bs.dropdown', function (e) { const $el = $(e.target); if ($el.data('open-color-scheme')) { $el.addClass($el.data('open-color-scheme')); } }); $(document).on('hidden.bs.dropdown', function (e) { const $el = $(e.target); if ($el.data('open-color-scheme')) { $el.removeClass($el.data('open-color-scheme')); } }); // popover class $(document).on('show.bs.popover', function (e) { const $el = $(e.target); $el.data('popoverClass') && $el.data('bs.popover').$tip.addClass($el.data('popoverClass')); }); // datepicker class $(document).on('dp.show', function (e) { const $el = $(e.target); $el.data('pickerClass') && $el.data('DateTimePicker').widget.addClass($el.data('pickerClass')); }); // panel-active class $(document).on('show.bs.collapse', function (e) { $(e.target).parent().addClass('panel-active'); }); $(document).on('hide.bs.collapse', function (e) { $(e.target).parent().removeClass('panel-active'); }); // panel templates $(document).on('show.bs.collapse', function (e) { const el = $(e.target).find('template')[0]; if (el) { Journal.template(el); Journal.lazy(); } }); // tabs templates $(document).on('show.bs.tab', function (e) { const href = $(e.target).attr('href'); const el = $(href).filter('template')[0]; if (el) { Journal.template(el); Journal.lazy(); } }); // off canvas $(document).on('click', '[data-off-canvas]', function (e) { e.preventDefault(); const $this = $(this); const $container = $('.' + $this.data('off-canvas')); if (Journal['header_offcanvas_color_scheme']) { $container[0].classList.add('has-color-scheme', Journal['header_offcanvas_color_scheme']); } const el = $container.find('template')[0]; if (el) { Journal.template(el); Journal.lazy(); } $html.addClass('mobile-overlay'); $html.addClass($this.data('off-canvas') + '-open'); $container.outerWidth(); $container.addClass('animating'); //$('.desktop-mobile-main-menu-container .main-menu-item-1 .collapse').addClass('in'); //$('.desktop-mobile-main-menu-wrapper .main-menu .open-menu').attr('aria-expanded', true) if ($this.data('off-canvas') === 'mobile-main-menu-container') { Journal.mobileOffCanvasDropdownOffset && Journal.mobileOffCanvasDropdownOffset(); } }); $(document).on('click', '.mobile-overlay .site-wrapper, .x', function () { const $this = $(this); $('.mobile-container.animating').removeClass('animating'); $html.removeClass('mobile-overlay'); setTimeout(function () { $('[data-off-canvas]').each(function () { const $this = $(this); $html.removeClass($this.data('off-canvas') + '-open'); }); }, 300); }); // accordion menus $(document).on('click', '.accordion-menu span[data-toggle="collapse"]', function (e) { return false; }); // accordion menus first tap open $(document).on('click', '.accordion-menu a', function (e) { const $this = $(this); const $trigger = $('> span[data-toggle="collapse"]', this); const isLink = $this.attr('href') && !$this.attr('href').startsWith('javascript:'); if (Journal['isDesktop'] && isLink) { return; } if ($trigger.length && (!isLink || $trigger.attr('aria-expanded') !== 'true')) { e.preventDefault(); $trigger.trigger('click'); } }); // grid dimensions if (Journal['isDesktop'] && Journal['isAdmin']) { Journal.lazy('dimensions', '.grid-col > .grid-items > .grid-item', { load: function (el) { $(el).one('mouseover', function () { const $this = $(this); $this.attr('data-dimensions', $this.width() + ' x ' + $this.height()); }); } }); } // admin edit if (Journal['isDesktop'] && Journal['isAdmin']) { $(document).on('click', '[data-edit]', function () { window['__j_edited'] = false; const src = Journal.admin_url + '#/' + $(this).data('edit'); $('.admin-edit-popup').remove(); $html.addClass('is-editor-open'); $('body').append('' + '
' + '
' + ' ' + '