2A News

DOJ No Longer Defends USPS Gun Carry Prohibition

Reading Time: 2:3 min

The notable victory over the long-standing federal ban on possessing lawful weapons in a U.S. Post Office building won last September by the Second Amendment Foundation (SAF), the Firearms Policy…

View post

Reps Introduce Bill to Safeguard Gun Rights on Federal Lands

Reading Time: 1:60 min

While the shooting community celebrates undeniable recent progress on national gun rights issues, the battle remains far from over. On Thursday, two U.S. representatives introduced the Federal Lands Lawful Carry…

View post

Anti-Gunners Openly Seek to Control SCOTUS Through Court-Packing

Reading Time: 2:3 min

In 1937, President Franklin D. Roosevelt (D) alarmed even his ardent supporters when he introduced a shocking idea. With the U.S. Supreme Court’s majority derailing many of his New Deal…

View post

Police: Armed Driver Tried to De-escalate with Road Rager, Didn’t Work

Reading Time: 2:11 min

Road rage is all too common in the modern world, but it is generally confined to language the kids shouldn’t hear or to middle fingers. However, when it escalates, it…

View post

Gun Rights Groups Ask Appeals Court to Rule Against SBR Restrictions

Reading Time: 2:5 min

Second Amendment supporters rightly celebrated when Congress eliminated the long-standing $200 tax on National Firearms Act (NFA)- governed items, which include short-barreled rifles (SBRs). But the mission is far from…

View post

Bipartisan Bill to Protect Gun Owners’ Purchasing Data Clears House

Reading Time: 2:1 min

Gun rights opponents habitually label any bill with the slightest support from the other side of the aisle as “bipartisan,” so it is reasonable that Second Amendment supporters may do…

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>