2A News

NSSF: July Gun Sales, NFA Items Continue 2026 Surge

Reading Time: 1:55 min

Law-abiding Americans showed zero signs in July of losing their passion for the right to keep and bear arms. National Instant Criminal Background Check System (NICS) data, adjusted by the…

View post

Jewish Center Sues Montgomery County Over Weapons Ban

Reading Time: 3:39 min

Between Montgomery County’s status as Maryland’s most populous county and its location bordering Washington, D.C., there are obvious security threats that officials and residents must consider.  For a synagogue, that…

View post

Appeals Court Allows NJ AR-15 Ban to Continue

Reading Time: 1:57 min

The chaos surrounding state and local bans on popular sporting rifles and standard-capacity magazines shows no signs of abating after Thursday’s decision by the U.S. Court of Appeals for the…

View post

NY Homeowner Fatally Shoots Alleged Intruder in Kitchen

Reading Time: 2:8 min

The names, dates, locations, and some specifics change. Still, the general scenario of bad guys choosing the wrong targets and often paying the ultimate price is a modern-day case of…

View post

FPC Proposes PLCAA Amendment While Rejecting SHOT Act

Reading Time: 1:60 min

Categorizing Sen. John Cornyn’s (R-TX) proposed Stopping Harmful and Outrageous Torts (SHOT) Act as “deeply flawed,” the Firearms Policy Coalition (FPC) instead offered its own solution to strengthen protections for…

View post

Congressional Anti-Gunners Demand End to ATF Reforms

Reading Time: 1:59 min

A smattering of congressional gun rights opponents is up in arms over the Bureau of Alcohol, Tobacco, Firearms, and Explosives’ (ATF) recent push to streamline its operations  Two notable Second…

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>