2A News

ATF Announces Improvements to Process of Transporting NFA-Regulated Firearms

Reading Time: 1:56 min

The fact that the National Firearms Act of 1934 (NFA) still exists in 2025 is a source of constant irritation for Second Amendment advocates. On the bright side, there is…

View post

SCOTUS Turns Back Challenge to Illegal Alien Gun Ban

Reading Time: 2:5 min

A busy U.S. Supreme Court declined a challenge to the federal prohibition on illegal aliens possessing weapons in the U.S. Justices also did not act on a pair of petitions…

View post

Gun Parts Supplier Faces Prison for Shocking Reason

Reading Time: 2:5 min

U.S. gun owners know there is still a hangover from the egregious gun control excesses of the previous administration. While much progress has been made, significant challenges to Second Amendment…

View post

DOJ to Launch New Second Amendment Rights Section

Reading Time: 1:54 min

The Department of Justice (DOJ) will launch a new component of its Civil Rights Division in December, tasked with protecting law-abiding Americans’ gun rights. The Second Amendment Rights Section goes…

View post

GOA Sounds Alarm Over Troublesome DOJ Gun Rights Brief

Reading Time: 1:54 min

Just because the current administration is hands-down more favorable to Second Amendment rights than its predecessor does not mean it should not have its feet held to the fire. Gun…

View post

Momentum Builds Toward SCOTUS Striking Down Hawaii’s Carry Ban

Reading Time: 1:56 min

Two significant developments in the fight to save the Second Amendment emerged this week, and both concerned Hawaii’s egregious concealed carry ban. Montana Attorney General Austin Knudsen (R) led a…

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>