2A News

California Fires Back at DOJ Over Glock Ban Lawsuit

Reading Time: 2:5 min

To be fair, no one expected California’s entrenched gun rights suppression apparatus to throw in the towel and admit they were wrong. They were always going to fight the Department…

View post

Alaska Man Returns Fire and Chases Off Alleged Copper Thieves

Reading Time: 1:58 min

To paraphrase a familiar saying, when seconds count, help is usually minutes away. Now, imagine how true this is for those who live in Alaska, amid vast swaths of remote…

View post

Supreme Court Ends Session with Split Decisions on Young Adult Carry

Reading Time: 2:5 min

The U.S. Supreme Court concluded its recent session with a flurry of activity on Second Amendment issues. Rulings affirming the rights of marijuana users to keep and bear arms and…

View post

DOJ Carries Out Threat to Sue California and Virginia Over Gun Rights

Reading Time: 3:41 min

On June 24, Assistant Attorney General Harmeet Dhillon warned California officials that the state’s pending ban on Glock pistols and similar models was in the Department of Justice’s (DOJ) crosshairs.…

View post

U.S. Supreme Court Agrees to Hear Challenge on Assault Weapons Ban

Reading Time: 3:27 min

The U.S. Supreme Court closed its first term of 2026 on Tuesday, and nine justices are off for summer recess before returning to the bench in October. On their way…

View post

ATF Proposes Clarification of Interstate Travelers’ Gun Rights

Reading Time: 2:13 min

The Bureau of Alcohol, Tobacco, Firearms, and Explosives (ATF) proposed a rule in May to protect armed citizens from overzealous local and state officials while they travel. Through the Clarifying…

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>