2A News

SAF Petitions SCOTUS for Review of Illinois’ Public Transit Carry Ban

Reading Time: 1:54 min

Despite the notorious safety issues plaguing Chicago residents, Illinois lawmakers continue to ban law-abiding citizens from carrying firearms on public transit. The Second Amendment Foundation (SAF) and its partners are…

View post

Minnesota’s Anti-Second Amendment Circus Hits the Road

Reading Time: 1:58 min

If at first you don’t succeed because voters disapprove of your agenda, redefine success and hit the road to convince people that your goals are theirs. That’s Minnesota officials’ apparent…

View post

2A Group Warns of Danger to Gun Rights from Ending Filibuster

Reading Time: 1:57 min

As the government shutdown festers like an open wound, some demand an end to the filibuster rule in the Senate. This would free the upper chamber to approve proposals on…

View post

Victory: Cryptocurrency Provider Ends Discrimination Against 2A Transactions

Reading Time: 2:3 min

There are many instances in which misguided or outright discriminatory practices need only be exposed to the light of day to be finally ended. It is good to recognize when…

View post

Virginia’s 2A Community Can Expect a Fight After Tuesday’s Elections

Reading Time: 1:55 min

When Second Amendment opponents wake up celebrating the morning after an election, that is never a good sign for those who treasure constitutional rights. In Virginia, it’s a warning.  Voters…

View post

Controversial ‘Red Flag’ Law to Take Effect in Maine After Tuesday Vote

Reading Time: 1:52 min

Tuesday’s election results included a hotly contested decision by Maine voters to approve a sweeping “red flag” law that allows the confiscation of firearms with minimal, if any due process.…

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>