2A News

FPC to Appeal Setback in Texas Ruling on ‘Sensitive Places’

Reading Time: 2:0 min

The Firearms Policy Coalition (FPC) is not discouraged by last week’s setback at the hands of a Texas judge. In a controversial decision, the jurist upheld the Lone Star State’s…

View post

Maryland’s Liability Lawsuit Against Glock Advances

Reading Time: 1:54 min

The shameless attacks on the weapons industry by powerful anti-gunners show no signs of abating, even with established federal law protecting Second Amendment-related businesses. On Monday, State Judge John Nugent…

View post

NJ Gun Permit Regime Sued Over Racial Disparities

Reading Time: 1:57 min

It’s bad enough for a government entity to suppress constitutionally guaranteed Second Amendment rights. Somehow, New Jersey officials allegedly found a way to make their actions worse. According to the…

View post

Missouri’s Resurrected Second Amendment Protection Act Dies in Committee

Reading Time: 1:52 min

A valiant effort by Missouri lawmakers to reinforce gun rights for its citizens was brushed aside last week when a legislative committee overwhelmingly voted to kill it. The tally in…

View post

Anti-2A Louisville Lawmakers Seek End to State Preemption

Reading Time: 1:55 min

Like petulant children, many city leaders in 2026 resent being bound by the Second Amendment and, in many instances, by state law, from infringing on the right to keep and…

View post

Memphis Homeowner Shoots Alleged Female Intruder

Reading Time: 1:53 min

The period before sunrise is when many Americans start to stir and prepare for the new day. What it typically isn’t is a reason to be on high alert and…

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>