react-lgpd-consent - v0.3.4
    Preparing search index...

    Function useOpenPreferencesModal

    Hook para acessar e manipular o estado de consentimento do usuário.

    Estado e métodos para consentimento.

    • Hook que retorna uma função para abrir o modal de preferências de forma programática.

      Returns () => void

      Uma função estável que abre o modal de preferências quando chamada

      Hooks

      0.3.1+

      Este hook oferece uma maneira ReactJS-idiomática de abrir o modal de preferências em qualquer lugar da aplicação. Diferente do botão flutuante padrão, permite controle total sobre quando e como o modal é acionado.

      • Links no footer/header: "Configurações de Cookies", "Preferências"
      • Botões customizados: Design próprio para abrir preferências
      • Fluxos condicionais: Abrir modal baseado em ações do usuário
      • Integração com menus: Adicionar item de menu para configurações
      • Type-safe: TypeScript com tipagem completa
      • React-friendly: Integra com ciclo de vida dos componentes
      • Automático: Sem necessidade de verificar se ConsentProvider existe
      • Testável: Fácil de mockar em testes unitários
      • Função estável: não causa re-renders quando usada como dependency
      • Memoizada internamente para otimização
      • Sem overhead: apenas proxy para ação interna do contexto

      Se usado fora do ConsentProvider - verifique se está dentro de <ConsentProvider>

      function MeuFooter() {
      const abrirModal = useOpenPreferencesModal();

      return (
      <footer>
      <a href="#" onClick={abrirModal}>
      Configurações de Cookies
      </a>
      </footer>
      );
      }
      import { Settings } from '@mui/icons-material';

      function CustomPreferencesButton() {
      const openModal = useOpenPreferencesModal();

      return (
      <button
      onClick={openModal}
      className="preferences-btn"
      aria-label="Configurar cookies"
      >
      <Settings /> Cookies
      </button>
      );
      }
      function UserMenu() {
      const openPreferences = useOpenPreferencesModal();
      const [menuOpen, setMenuOpen] = useState(false);

      return (
      <div className="user-menu">
      <button onClick={() => setMenuOpen(!menuOpen)}>
      Menu ▼
      </button>
      {menuOpen && (
      <ul>
      <li><a href="/profile">Meu Perfil</a></li>
      <li><a href="/settings">Configurações</a></li>
      <li>
      <button onClick={openPreferences}>
      Preferências de Cookies
      </button>
      </li>
      </ul>
      )}
      </div>
      );
      }
      function CookieSettingsPage() {
      const openModal = useOpenPreferencesModal();
      const navigate = useNavigate(); // React Router

      React.useEffect(() => {
      // Abre modal automaticamente na página de configurações
      openModal();
      }, [openModal]);

      const handleModalClose = () => {
      // Volta para página anterior quando modal fechar
      navigate(-1);
      };

      return <div>Configurações de cookies carregando...</div>;
      }
      function SmartCookieButton() {
      const { consented } = useConsent();
      const openPreferences = useOpenPreferencesModal();

      // Se usuário já deu consentimento, mostra "Alterar"
      // Se não deu consentimento, mostra "Configurar"
      const buttonText = consented ? 'Alterar Preferências' : 'Configurar Cookies';
      const buttonIcon = consented ? '⚙️' : '🍪';

      return (
      <button
      onClick={openPreferences}
      className={consented ? 'modify-btn' : 'setup-btn'}
      >
      {buttonIcon} {buttonText}
      </button>
      );
      }