O componente <page-link> renderiza um contêiner para uma âncora HTML padrão (<a>) que intercepta cliques, atualiza o histórico do navegador e recebe o atributo active quando corresponde à localização atual.

html
<page-link path="/dashboard" title="Admin Panel">Go to Dashboard</page-link>

Atributos

AtributoTipoPadrãoDescrição
pathstringCaminho atualCaminho de destino (por exemplo, /home ou parâmetros relativos de consulta).
searchstringundefinedAdiciona ou atualiza parâmetros de consulta (por exemplo, tab=settings).
keep-current-searchbooleanfalseMantém os parâmetros de consulta existentes ao navegar para um novo caminho.
exactbooleantrueQuando true, o link só fica ativo em uma correspondência exata do caminho.
titlestringundefinedTítulo do documento definido após uma navegação bem-sucedida.
payloadobject{}Estado do histórico. No HTML, forneça uma string de objeto serializada como JSON.

Resolução de caminhos relativos

Para tornar estruturas de layout reutilizáveis, <page-link> resolve automaticamente estes prefixos abreviados:


Estilização do estado ativo

Quando a localização do navegador corresponde ao destino do link, o componente recebe um atributo nativo active:

html
<!-- Rendered active HTML element -->
<page-link path="/todos" active>Todos</page-link>

Você pode selecionar esse estado no CSS usando atributos padrão ou partes do Shadow DOM:

css
/* Style the outer custom component element */
page-link[active] {
    font-weight: 700;
}

/* Style the inner anchor tag using shadow parts */
page-link::part(anchor) {
    color: var(--foreground);
    text-decoration: none;
    transition: border-color 0.2s;
}

page-link[active]::part(anchor) {
    border-bottom: 2px solid var(--primary);
    color: var(--primary);
}

Passando estados

Use payload para passar dados no estado do histórico para a próxima página.

Em HTML simples, atributos são strings, portanto payload deve ser um objeto serializado em JSON válido:

html
<page-link path="/dashboard" payload='{"role": "admin", "userId": 42}'>
    Enter Panel
</page-link>

Ao renderizar <page-link> com Markup, passe o valor como propriedade de objeto:

javascript
import { html } from '@beforesemicolon/web-component'

const user = { role: 'admin', userId: 42 }

html` <page-link path="/dashboard" payload="${user}"> Enter Panel </page-link> `

O estado fica disponível na rota de destino por meio de getPageData(), onPage(), onPageChange() ou <page-data key="...">.

editar este documento