1/** 2 * Gestionnaire des accordéon boostrap 3 * @type {accordeonManager} 4 */ 5(function ($) { 6 $.fn.TCAccordeon = function (options) { 7 8 var opts = $.extend({}, $.fn.TCAccordeon.defaults, options); 9 10 if ($('.panel-group').length == 0) return false; 11 12 /** 13 * Retourne l'élément de l'accordeon depuis le hash avec l'id généré depuis TYPO3 14 */ 15 function getAccPerTypo3Hash() { 16 // Ouverture automatique d'un accordeon par url 17 var objectId = window.location.hash; 18 var $accordion = $(objectId).parents('.panel-group').first(); 19 return $accordion; 20 } 21 22 /** 23 * Retourne l'élément de l'accordéon depuis le hash 24 */ 25 function getAccPerIdHash() { 26 var $accordion = $(window.location.hash); 27 28 return $accordion; 29 } 30 31 function openAccordeon() { 32 // Activation d'un onglet par hash 33 var $hashAcc; 34 var isAccordionOpened = false; 35 36 $hashAcc = getAccPerTypo3Hash(); 37 if ($hashAcc.length == 0) { 38 $hashAcc = getAccPerIdHash(); 39 } 40 41 if ($hashAcc.length > 0 && $hashAcc.hasClass('panel-group')) { 42 var parent=$hashAcc.parents('.panel-group').first() 43 if(parent) { 44 parent.collapse('show'); 45 $hashAcc.parents('.panel-collapse').first().collapse('show'); 46 } 47 48 $hashAcc.collapse('show'); 49 //Enlève la class "collapsed" sur le bouton 50 $(window.location.hash).collapse('show'); 51 52 // Scroll de la page vers cet élément 53 $(document).TCScroll({action: 'scrollTo', element: $hashAcc.parent()}); 54 isAccordionOpened = true; 55 } 56 return isAccordionOpened; 57 } 58 59 var offsetMargin = 0, 60 scrollSpeed = 500, 61 $header = $('#header'), 62 accID = getAccPerTypo3Hash(), 63 accordionWrapper = $('.panel-group'), 64 headerHeight = $header.height(); 65 66 // Scroll du titre de panneau de l'accordéon en dessous du header au clic sur ce titre 67 if ($('[id^="accordion-"]').data('scroll')) { 68 accordionWrapper.on('shown.bs.collapse', function (e) { 69 var id = $(e.target).parent(); 70 71 $('html, body').animate({ 72 scrollTop: $(id).offset().top - (headerHeight + offsetMargin) 73 }, scrollSpeed); 74 }); 75 } 76 77 openAccordeon(); 78 79 $('a[data-toggle="collapse"][data-bookmark="1"]').click(function () { 80 if(!$(this).parents('.panel.collapsed').first().hasClass('active')) { 81 var $link = $(this); 82 83 var nativeHash = $link.attr("href").split("#")[1]; 84 window.location.hash = nativeHash; 85 } 86 }); 87 }; 88 89 $.fn.TCAccordeon.defaults = {}; 90 91}(jQuery));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.