Right to Carry

Federal Appeals Court Rejects California’s Ammunition Background Check Scheme

Reading Time: 3:30 min

California’s unique scheme to force gun owners to undergo background checks to purchase ammunition is not only ridiculous, but also now unconstitutional. That’s the word from the Ninth U.S. Circuit…

View post

2A Groups Sue New Jersey Over Firearm Suppressor Ban

Reading Time: 1:57 min

A consortium of Second Amendment organizations filed a federal lawsuit this week against New Jersey’s prohibition on firearm suppressors. These attachments are crucial to protecting gun users’ hearing but are…

View post

NRA Blasts Newsom for Second Amendment Flip-Flop

Reading Time: 3:34 min

Political leaders attempting to rewrite history and blur their track records are as old as politics itself. However, the sheer audacity of some lawmakers who count on voter amnesia remains…

View post

Proposal Would Prohibit SBA Discrimination Against the Weapons Industry

Reading Time: 1:57 min

Firearms-related businesses enjoy constitutional protection for the simple fact that they make the right to keep and bear arms possible. Without their wares, the Second Amendment would wither and blow…

View post

Lawmaker Proposes Ban on State Magazine Capacity Restrictions

Reading Time: 1:53 min

The patchwork quilt of state laws governing the legal capacity of a firearm magazine has caught the attention of at least one Washington lawmaker, who proposed a fitting solution. Rep.…

View post

NC Legislators to Attempt to Override Stein’s Veto of Constitutional Carry

Reading Time: 1:54 min

North Carolina lawmakers have a regular rite during which they convene to attempt to override controversial gubernatorial vetoes. On July 29, this year’s edition will feature a rancorous debate over…

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>