2A News

Trump Nominates Robert Cekada to Lead Revamped ATF

Reading Time: 3:22 min

Expect lively confirmation hearings coming soon after President Donald Trump (R) this week formally nominated current ATF Deputy Director Robert Cekada to run the Bureau of Alcohol, Tobacco, Firearms, and…

View post

House Proposal Would Partially Reverse ‘Bipartisan Safer Communities Act’

Reading Time: 2:1 min

There was much to inflame Second Amendment advocates in recent years, but little rankled more than the so-called Bipartisan Safer Communities Act (BSCA). It “earned” the bipartisan label only because…

View post

Congressional Push to Eliminate Outdated NFA Grows Stronger

Reading Time: 1:50 min

An impressive roster of Second Amendment supporters in the U.S. House recently signed a letter to U.S. Attorney General Pam Bondi. Their goal? The nearly two dozen representatives asked the…

View post

NC Homeowner Defends Family, Shoots Home Invasion Suspect

Reading Time: 1:52 min

A Raleigh resident got the fright of a lifetime late Tuesday night when a suspect allegedly kicked in his door on the southeast side of the city. Tim Johnson was…

View post

GOA Battles Washington Over District Court’s Gag Order

Reading Time: 1:57 min

One of the bedrocks of First Amendment rights is the ability to communicate freely without prior restraint. The legal threshold for justifying telling Americans what they can and cannot say…

View post

Michigan Man Faces Manslaughter Charge in Shooting of Alleged Intruder

Reading Time: 2:8 min

When does armed self-defense go too far? If Oakland County Prosecutor Karen D. McDonald gets her way, 24-year-old Dayton Knapton will spend years of his life behind bars for firing…

View post
<script>
  /*Source: https://github.com/Krzysztof-Antosik/Two-direction-Sticky-Sidebar*/
  
  // Verificar el ancho de pantalla al cargar y redimensionar
  function checkScreenWidth() {
    if (window.innerWidth <= 767) {
      // Si la pantalla es menor o igual a 676px, no ejecutar el código
      return;
    }

    const stickyElement = document.querySelector('.fb-sidebar__aside');
    const startPosition = stickyElement.getBoundingClientRect().top;

    let endScroll = window.innerHeight - stickyElement.offsetHeight - 500;
    let currPos = window.scrollY;
    let screenHeight = window.innerHeight;
    let stickyElementHeight = stickyElement.offsetHeight;
    let topGap = 40;
    let bottomGap = 40;

    setTimeout(() => {
      if (stickyElement.hasAttribute('data-top-gap')) {
        const dataTopGap = stickyElement.getAttribute('data-top-gap');
        topGap = dataTopGap === 'auto' ? startPosition : parseInt(dataTopGap);
      }

      if (stickyElement.hasAttribute('data-bottom-gap')) {
        bottomGap = parseInt(stickyElement.getAttribute('data-bottom-gap'));
      }
    }, 100);

    stickyElement.style.position = 'sticky';
    stickyElement.style.top = `${topGap}px`;
    stickyElement.style.height = 'fit-content';

    function positionStickySidebar() {
      endScroll = window.innerHeight - stickyElement.offsetHeight - bottomGap;
      const stickyElementTop = parseInt(stickyElement.style.top.replace('px', ''));

      if (stickyElementHeight + topGap + bottomGap > screenHeight) {
        if (window.scrollY < currPos) {
          if (stickyElementTop < topGap) {
            stickyElement.style.top = `${stickyElementTop + currPos - window.scrollY}px`;
          } else if (stickyElementTop >= topGap && stickyElementTop !== topGap) {
            stickyElement.style.top = `${topGap}px`;
          }
        } else {
          if (stickyElementTop > endScroll) {
            stickyElement.style.top = `${stickyElementTop + currPos - window.scrollY}px`;
          } else if (stickyElementTop < endScroll && stickyElementTop !== endScroll) {
            stickyElement.style.top = `${endScroll}px`;
          }
        }
      } else {
        stickyElement.style.top = `${topGap}px`;
      }
      currPos = window.scrollY;
    }

    function stickyElementToMe() {
      stickyElement.style.top = `${topGap}px`;
    }

    function updateSticky() {
      screenHeight = window.innerHeight;
      stickyElementHeight = stickyElement.offsetHeight;
      positionStickySidebar();
    }

    setTimeout(() => {
      window.addEventListener('resize', () => {
        currPos = window.scrollY;
        updateSticky();
      });

      document.addEventListener('scroll', updateSticky, {
        capture: true,
        passive: true
      });
    }, 1000);
  }

  // Verificar el ancho de pantalla al cargar y redimensionar
  window.addEventListener('load', checkScreenWidth);
  window.addEventListener('resize', checkScreenWidth);
</script>