PageSourceSearch

https://calmatters.org/wp-content/plugins/newspack-calmatters/assets/scripts/cm-about.js?ver=4.21.15

js calmatters.org collected 2026-09-24 08:29:37 UTC 2,343 bytes, 62 lines download raw bytes

1document.addEventListener("DOMContentLoaded", function() {
2    const cmAboutMenu = document.getElementById('about-menu');
3    const cmCloseButton = document.getElementById('about-close-button');
4    const cmAboutMobileButton = document.querySelector('.about-menu-lighthouse-mobile-button');
5    const cmMenuPopup = document.getElementById('about-internal-nav');
6
7    function cmToggleAboutMenu() {
8        cmAboutMenu.classList.toggle('about-menu-open');
9        cmAboutMenu.classList.toggle('about-menu-closed');
10    };
11
12    // toggle menu on click of mobile menu or close button
13    cmAboutMobileButton.addEventListener('click', cmToggleAboutMenu);
14    cmCloseButton.addEventListener('click', cmToggleAboutMenu);
15   
16    // close menu when clicking outside of menu
17    document.addEventListener('click', event => {
18        if (cmAboutMenu.classList.contains('about-menu-open') && (!cmMenuPopup.contains(event.target))) {
19            cmToggleAboutMenu();
20        }
21    })
22    
23});
24function cmAboutToggleReadMore() {
25    const container = this.parentElement;
26    const readMoreText = container.querySelector(".cm-expanding-element");
27    const readMoreButton = container.querySelector(".cm-show-more-less-button");
28    const readMoreButtonText = readMoreButton.dataset.more;
29    const readLessButtonText = readMoreButton.dataset.less;
30    readMoreText.classList.toggle("cm-show-more");
31    readMoreText.classList.toggle("cm-show-less");
32    this.textContent = this.textContent ===  readLessButtonText ? readMoreButtonText : readLessButtonText;
33}
34
35// Add an event listener to each button and trigger cmAboutToggleReadMore function when clicked
36var buttons = document.querySelectorAll(".cm-show-more-less-button");
37for (var i = 0; i < buttons.length; i++) {
38    buttons[i].addEventListener("click", cmAboutToggleReadMore);
39}
40
41
42
43// Footer Menu Fix
44const ab_menu = document.querySelector('#about-menu');
45const ab_footer = document.querySelector('#colophon');
46const ab_observer_options = {
47  threshold: 0.30,
48}
49
50function floatMenu(entries) {
51  entries.map((entry) => {
52    if (entry.isIntersecting) {
53        ab_menu.classList.add('about-menu-stick')
54    } else {
55        ab_menu.classList.remove('about-menu-stick')
56    }
57  });
58}
59
60aboutMenuObserver = new IntersectionObserver(floatMenu, ab_observer_options);
61
62aboutMenuObserver.observe(ab_footer);

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.