2A News

Attempted Car Burglary Halted by Armed Texas Homeowner

Reading Time: 1:56 min

There are activities that one undertakes knowing there is an inherent risk of suffering an injury. Attempting to break into someone’s automobile in the dead of night is a good…

View post

Another 2A Company Uproots and Moves South to Tennessee

Reading Time: 1:60 min

It’s only natural for a person—or a business—to want to reside where it is welcomed and valued. When that is not the case, greener pastures are sure to be found.…

View post

Legal Resistance to New Jersey’s Concealed Carry Fee Spreads

Reading Time: 1:54 min

Imagine having to pay a “protest tax” or “church registration fee” to exercise fundamental constitutional rights. Civil libertarians would rightly howl that the Bill of Rights is not up for…

View post

Good News: 45 States Now Permit Open Carry After Florida’s Action

Reading Time: 1:56 min

Earlier this month, Florida’s First District Court of Appeals unanimously ruled that the state’s contentious ban on the open carry of firearms—even by concealed carry permit holders—was unconstitutional. This led…

View post

Minnesota 2A Warriors Launch Nonprofit to Defend Right to Keep and Bear Arms

Reading Time: 1:53 min

It is a sorry state of affairs in 2025 that fundamental constitutional liberties require so much time and effort to defend them from those who would strip them away. Unfortunately,…

View post

Gun Rights Groups Challenge Wall Street to End Discrimination Against Industry

Reading Time: 3:22 min

Politics should have no place in major financial institutions’ decisions to extend essential services to various industries, but in 2025, it still does. That led the National Rifle Association (NRA),…

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>