1(function($) { 2 3 window.BDash = window.BDash || {} 4 window.BDash.activateExpandCollapse = activateExpandCollapse 5 6 var OPEN_CLASS = 'bdash-expand-collapse--open' 7 var OPEN_BY_DEFAULT_CLASS = 'bdash-expand-collapse--open-by-default' 8 9 var OPEN_ICON_CLASS = 'bdash-icon-angle-up' 10 var CLOSED_ICON_CLASS = 'bdash-icon-angle-down' 11 12 var TARGET_CONTENT_CLASS = 'bdash-expand-collapse--toggle-target-content' 13 14 var animateDuration = 300 15 16 function closeToggle($toggle, $toggleTarget) { 17 $toggleTarget = $toggleTarget || 18 $($toggle.data('expandCollapseTarget') || $toggle.attr('href')) 19 20 if (!$toggleTarget.hasClass(OPEN_CLASS)) return // Already closed 21 22 var $toggleIcon = $toggle.find('i') 23 24 $toggleIcon.removeClass(OPEN_ICON_CLASS) 25 $toggleIcon.addClass(CLOSED_ICON_CLASS) 26 $toggleTarget.removeClass(OPEN_CLASS).animate({ 27 height: 0 28 }, animateDuration) 29 } 30 31 function openToggle($toggle, $toggleTarget) { 32 $toggleTarget = $toggleTarget || 33 $($toggle.data('expandCollapseTarget') || $toggle.attr('href')) 34 35 if ($toggleTarget.hasClass(OPEN_CLASS)) return // Already open 36 37 var $toggleIcon = $toggle.find('i') 38 var height = $toggleTarget.find('.'+TARGET_CONTENT_CLASS).height() 39 40 $toggleIcon.removeClass(CLOSED_ICON_CLASS) 41 $toggleIcon.addClass(OPEN_ICON_CLASS) 42 $toggleTarget.addClass(OPEN_CLASS).animate({ 43 height: height 44 }, animateDuration) 45 } 46 47 function toggle($toggle, $toggleTarget) { 48 $toggleTarget = $toggleTarget || 49 $($toggle.data('expandCollapseTarget') || $toggle.attr('href')) 50 51 if ($toggleTarget.hasClass(OPEN_CLASS)) { 52 closeToggle($toggle, $toggleTarget) 53 return 'closed' 54 } 55 openToggle($toggle, $toggleTarget) 56 return 'open' 57 } 58 59 function activateSingleExpandCollapse($target) { 60 61 if ($target[0].expandCollapseActivated) return 62 $target[0].expandCollapseActivated = true 63 64 var $toggles = $target.find('.bdash-expand-collapse--toggle') 65 var $expandAll = $target.find('.bdash-expand-all') 66 var $collapseAll = $target.find('.bdash-collapse-all') 67 68 $toggles.on('click', function(e) { 69 e.preventDefault() 70 71 var $toggle = $(this) 72 var result = toggle($toggle) 73 74 if (result==='closed') return 75 76 // Close others 77 $toggles.each(function() { 78 var $otherToggle = $(this) 79 if ($otherToggle[0]===$toggle[0]) return 80 closeToggle($otherToggle) 81 }) 82 }) 83 84 $expandAll.on('click', function(e) { 85 e.preventDefault() 86 $toggles.each(function() { 87 openToggle($(this)) 88 }) 89 }) 90 91 $collapseAll.on('click', function(e) { 92 e.preventDefault() 93 $toggles.each(function() { 94 closeToggle($(this)) 95 }) 96 }) 97 98 // Open by default 99 $toggles.each(function() { 100 var $toggle = $(this) 101 var $toggleTarget = $($toggle.data('expandCollapseTarget') || $toggle.attr('href')) 102 103 if (!$toggleTarget.hasClass(OPEN_BY_DEFAULT_CLASS)) return 104 105 var height = $toggleTarget.find('.'+TARGET_CONTENT_CLASS).height() 106 || 'auto' // Hidden elements, i.e., on next page 107 108 $toggleTarget.addClass(OPEN_CLASS).css({ height: height }) 109 $toggleTarget.removeClass(OPEN_BY_DEFAULT_CLASS) 110 }) 111 } 112 113 function activateExpandCollapse(el) { 114 $(el || 'body') 115 .find('.bdash-expand-collapse--target') 116 .each(function() { 117 activateSingleExpandCollapse($(this)) 118 }) 119 } 120 121 jQuery(document).ready(function($) { 122 activateExpandCollapse() 123 }) 124 125})(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.