PageSourceSearch

https://online.erikdalton.com/wp-content/plugins/tangible-loops-an…/assets/expand-collapse.js?ver=20200104

js erikdalton.com collected 2026-10-02 04:47:54 UTC 3,505 bytes, 125 lines download raw bytes

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.