Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/aerohub/hugo-faq-theme.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'exampleSite/static/js/main.js')
-rw-r--r--exampleSite/static/js/main.js126
1 files changed, 126 insertions, 0 deletions
diff --git a/exampleSite/static/js/main.js b/exampleSite/static/js/main.js
new file mode 100644
index 0000000..b45debb
--- /dev/null
+++ b/exampleSite/static/js/main.js
@@ -0,0 +1,126 @@
+jQuery(document).ready(function($){
+ //update these values if you change these breakpoints in the style.css file (or _layout.scss if you use SASS)
+ var MqM= 768,
+ MqL = 1024;
+
+ var faqsSections = $('.cd-faq-group'),
+ faqTrigger = $('.cd-faq-trigger'),
+ faqsContainer = $('.cd-faq-items'),
+ faqsCategoriesContainer = $('.cd-faq-categories'),
+ faqsCategories = faqsCategoriesContainer.find('a'),
+ closeFaqsContainer = $('.cd-close-panel');
+
+ //select a faq section
+ faqsCategories.on('click', function(event){
+ event.preventDefault();
+ var selectedHref = $(this).attr('href'),
+ target= $(selectedHref);
+ if( $(window).width() < MqM) {
+ faqsContainer.scrollTop(0).addClass('slide-in').children('ul').removeClass('selected').end().children(selectedHref).addClass('selected');
+ closeFaqsContainer.addClass('move-left');
+ $('body').addClass('cd-overlay');
+ } else {
+ $('body,html').animate({ 'scrollTop': target.offset().top - 19}, 200);
+ }
+ });
+
+ //close faq lateral panel - mobile only
+ $('body').bind('click touchstart', function(event){
+ if( $(event.target).is('body.cd-overlay') || $(event.target).is('.cd-close-panel')) {
+ closePanel(event);
+ }
+ });
+ faqsContainer.on('swiperight', function(event){
+ closePanel(event);
+ });
+
+ //show faq content clicking on faqTrigger
+ faqTrigger.on('click', function(event){
+ event.preventDefault();
+ $(this).next('.cd-faq-content').slideToggle(200).end().parent('li').toggleClass('content-visible');
+ });
+
+ //update category sidebar while scrolling
+ $(window).on('scroll', function(){
+ if ( $(window).width() > MqL ) {
+ (!window.requestAnimationFrame) ? updateCategory() : window.requestAnimationFrame(updateCategory);
+ }
+ });
+
+ $(window).on('resize', function(){
+ if($(window).width() <= MqL) {
+ faqsCategoriesContainer.removeClass('is-fixed').css({
+ '-moz-transform': 'translateY(0)',
+ '-webkit-transform': 'translateY(0)',
+ '-ms-transform': 'translateY(0)',
+ '-o-transform': 'translateY(0)',
+ 'transform': 'translateY(0)',
+ });
+ }
+ if( faqsCategoriesContainer.hasClass('is-fixed') ) {
+ faqsCategoriesContainer.css({
+ 'left': faqsContainer.offset().left,
+ });
+ }
+ });
+
+ function closePanel(e) {
+ e.preventDefault();
+ faqsContainer.removeClass('slide-in').find('li').show();
+ closeFaqsContainer.removeClass('move-left');
+ $('body').removeClass('cd-overlay');
+ }
+
+ function updateCategory(){
+ updateCategoryPosition();
+ updateSelectedCategory();
+ }
+
+ function updateCategoryPosition() {
+ var top = $('.cd-faq').offset().top,
+ height = jQuery('.cd-faq').height() - jQuery('.cd-faq-categories').height(),
+ margin = 20;
+ if( top - margin <= $(window).scrollTop() && top - margin + height > $(window).scrollTop() ) {
+ var leftValue = faqsCategoriesContainer.offset().left,
+ widthValue = faqsCategoriesContainer.width();
+ faqsCategoriesContainer.addClass('is-fixed').css({
+ 'left': leftValue,
+ 'top': margin,
+ '-moz-transform': 'translateZ(0)',
+ '-webkit-transform': 'translateZ(0)',
+ '-ms-transform': 'translateZ(0)',
+ '-o-transform': 'translateZ(0)',
+ 'transform': 'translateZ(0)',
+ });
+ } else if( top - margin + height <= $(window).scrollTop()) {
+ var delta = top - margin + height - $(window).scrollTop();
+ faqsCategoriesContainer.css({
+ '-moz-transform': 'translateZ(0) translateY('+delta+'px)',
+ '-webkit-transform': 'translateZ(0) translateY('+delta+'px)',
+ '-ms-transform': 'translateZ(0) translateY('+delta+'px)',
+ '-o-transform': 'translateZ(0) translateY('+delta+'px)',
+ 'transform': 'translateZ(0) translateY('+delta+'px)',
+ });
+ } else {
+ faqsCategoriesContainer.removeClass('is-fixed').css({
+ 'left': 0,
+ 'top': 0,
+ });
+ }
+ }
+
+ function updateSelectedCategory() {
+ faqsSections.each(function(){
+ var actual = $(this),
+ margin = parseInt($('.cd-faq-title').eq(1).css('marginTop').replace('px', '')),
+ activeCategory = $('.cd-faq-categories a[href="#'+actual.attr('id')+'"]'),
+ topSection = (activeCategory.parent('li').is(':first-child')) ? 0 : Math.round(actual.offset().top);
+
+ if ( ( topSection - 20 <= $(window).scrollTop() ) && ( Math.round(actual.offset().top) + actual.height() + margin - 20 > $(window).scrollTop() ) ) {
+ activeCategory.addClass('selected');
+ }else {
+ activeCategory.removeClass('selected');
+ }
+ });
+ }
+}); \ No newline at end of file