`. Ou seja, quando um utilizador clicar no botão, `foo` não é definido como 'bar'.
**`.self` modificador**
**Exemplo:** `
`
Adicionar `.self` a um evento de escuta só vai acionar o handler quando o `$event.target` for o próprio elemento. No exemplo acima, isso significa que o evento "click" que borbulha do botão para a `
` externo **não** executa o handler.
**`.window` modificador**
**Exemplo:** `
`
Adicionar `.window` a um evento de escuta instalará a escutas no objeto na window global em vez do nó DOM no qual está declarado. Isso é útil para quando desejamos modificar o estado do componente quando algo muda com a window, como o evento de redimensionamento. Neste exemplo, quando a janela tiver mais de 768 pixels de largura, fechamos a modal/dropdown, caso contrário, manteremos o mesmo estado.
> Nota: Também podemos usar o modificador `.document` para anexar escutas ao` document` em vez de `window`
**`.once` modificador**
**Exemplo:** `
`
Adicionar o modificador `.once` a um evento de escuta vai garantir que a escuta seja tratado apenas uma vez. Isso é útil para coisas que desejamos fazer apenas uma vez, como ir procurar parciais HTML e outras coisas.
**`.passive` modificador**
**Exemplo:** `
`
Adicionar o modificador `.passive` a um evento de escuta fará com que a escuta seja passiva, o que significa que o `preventDefault()` não vai funcionar em nenhum evento sendo processado, isso pode ajudar, por exemplo, com o desempenho do scroll em dispositivos touch.
**`.debounce` modificador**
**Exemplo:** `
`
O modificador `debounce` permite fazer "debounce" a um evento handler. Em outras palavras, o evento handler NÃO será executado até que tenha decorrido um certo tempo desde o último evento que foi disparado. Quando o handler estiver pronto para ser chamado, a última chamada do handler será executada.
O tempo de espera de debounce padrão é de 250 milissegundos.
Caso desejem personalizar isso, pode especificar um tempo de espera personalizado da seguinte maneira:
```
```
**`.camel` modificador**
**Exemplo:** `
`
O modificador `camel` anexa um evento de escuta ao nome em camel case do evento equivalente. No exemplo acima, a expressão é avaliada quando o evento `eventName` for disparado no elemento.
---
### `x-model`
**Exemplo:** `
`
**Estrutura:** `
`
O `x-model` adiciona "ligação de dados bidirecional" a um elemento. Em outras palavras, o valor do elemento de entrada é mantido sincronizado com o valor do item de dados do componente.
> Nota: `x-model` é inteligente o suficiente para detectar alterações nos inputs, checkboxes, radio buttons, textareas, selects e multiplo selects. Devem comportar-se [como o Vue] (https://vuejs.org/v2/guide/forms.html) nesses casos.
**`.debounce` modificador**
**Exemplo:** `
`
O modificador `debounce` permite adicionar um "debounce" a uma atualização de valor. Em outras palavras, o evento handler NÃO é executado até que tenha decorrido um certo tempo desde o último evento que foi disparado. Quando o handler estiver pronto para ser chamado, a última chamada do handler é executada.
O tempo de espera de debounce padrão é de 250 milissegundos.
Caso desejem personalizar isso, pode especificar um tempo de espera personalizado da seguinte maneira:
```
```
---
### `x-text`
**Exemplo:** `
`
**Estrutura:** `
`
**Estrutura:** `
:warning: **Usar apenas em conteúdo de confiança e nunca em conteúdo fornecido pelo utilizador.** :warning:
>
> A renderização dinâmica do HTML de terceiros pode levar facilmente às vulnerabilidades de [XSS] (https://developer.mozilla.org/en-US/docs/Glossary/Cross-site_scripting).
---
### `x-ref`
**Exemplo:** ``
**Estrutura:** ``
O `x-ref` fornece uma maneira conveniente de recuperar elementos DOM fora do seu componente. Ao definir um atributo `x-ref` em um elemento, torna-o disponível para todos os eventos handlers dentro de um objeto chamando `$refs`.
Esta é uma alternativa útil para definir ID's e usar o `document.querySelector` em todo o lago.
> Nota: também podemos definir valores dinâmicos no x-ref: ` ` se necessário.
---
### `x-if`
**Exemplo:** `
Algum elemento
`
**Estrutura:** `
Algum elemento
`
Nos casos em que `x-show` não é suficiente (`x-show` define um elemento para `display: none` se for falso),`x-if` pode ser usado para remover um elemento completamente na DOM.
É importante que o `x-if` seja usado em uma tag `
` porque o Alpine não usa um DOM virtual. Essa implementação permite que o Alpine permaneça robusto e use o DOM real para fazer sua mágia.
> Nota: `x-if` deve ter uma raiz de elemento único dentro da tag`
`.
---
### `x-for`
**Exemplo:**
```html
```
> Nota: a ligação `:key` é opcional, mas ALTAMENTE recomendada.
O `x-for` está disponível para casos em que desejem criar novos nós DOM para cada item em uma matriz. Isso deve parecer semelhante ao `v-for` no Vue, com uma exceção da necessidade de existir em uma tag`template`, e não em um elemento DOM comum.
Caso desejem aceder ao índice atual da iteração, usem a seguinte sintaxe:
```html
```
> Nota: `x-for` deve ter uma raiz de elemento único dentro da tag`
`.
#### Encadeamento de `x-for`s
Podemos ter encadeamento de ciclos `x-for`, mas DEVEMOS envolver cada ciclo em um elemento. Por exemplo:
```html
```
---
### `x-transition`
**Exemplo:**
```html
...
```
```html
...
```
> O exemplo acima usa classes de [Tailwind CSS](https://tailwindcss.com).
Alpine oferece 6 diretivas de transição diferentes para aplicar classes a vários estágios da transição de um elemento entre os estados "oculto" e "mostrado". Essas diretivas funcionam tanto com `x-show` E`x-if`.
Elas se comportam exatamente como as diretivas de transição do VueJs, exceto que têm nomes diferentes e mais sensíveis:
| Directiva | Descrição |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `:enter` | Aplicado durante toda a fase de entrada. |
| `:enter-start` | Adicionado antes que o elemento seja inserido, removido um frame após o elemento ser inserido. |
| `:enter-end` | Adicionado um frame após a inserção do elemento (ao mesmo tempo em que o `enter-start` é removido), removido quando a transição/animação termina. |
| `:leave` | Aplicado durante toda a fase de partida. |
| `:leave-start` | Adicionado imediatamente quando uma transição de saída é acionada, removida após um frame. |
| `:leave-end` | Adicionado um frame depois que uma transição de saída é acionada (ao mesmo tempo em que o `leave-start` é removido), removido quando a transição/animação termina. |
---
### `x-spread`
**Exemplo:**
```html
Conteúdo da Dropdown
```
O `x-spread` permite extrair as ligações de um elemento Alpine em um objeto reutilizável.
As chaves do objeto são as diretivas (pode ser qualquer diretiva, incluindo modificadores), e os valores são callback's a serem avaliados pelo Alpine.
> Nota: A única anomalia com propagação x é quando usada com `x-for`. Quando a diretiva "spread" é `x-for`, devemos retornar uma string de expressão normal a partir de um callback. Por exemplo: `['x-for'] () {return 'item in items'}`.
---
### `x-cloak`
**Exemplo:** `
`
Os atributos `x-cloak` são removidos dos elementos quando o Alpine é inicializado. Isso é útil para ocultar o DOM pré-inicializado. É típico adicionar o seguinte estilo global para que isso funcione:
```html
```
### Propriedades Mágicas
> Com exceção de `$el`, as propriedades mágicas **não estão disponíveis no` x-data`**, pois o componente ainda não foi inicializado.
---
### `$el`
**Exemplo:**
```html
```
`$el` é uma propriedade mágica que pode ser usada para recuperar o nó DOM do componente raiz.
### `$refs`
**Exemplo:**
```html
```
`$refs` é uma propriedade mágica que pode ser usada para recuperar elementos DOM marcados com `x-ref` dentro do componente. Isso é útil quando necessitamos manipular manualmente os elementos na DOM.
---
### `$event`
**Exemplo:**
```html
```
`$event` é uma propriedade mágica que pode ser usada dentro de um evento de escuta para recuperar o objeto "Event" do browser nativo.
> Nota: A propriedade $event está disponível apenas nas expressões DOM.
Caso necessitem aceder ao $event dentro de uma função JavaScript, podemos passa-lo diretamente:
`
`
---
### `$dispatch`
**Exemplo:**
```html
```
`$dispatch` é um atalho para criar um`CustomEvent` e enviá-lo internamente usando `.dispatchEvent ()`. Existem muitos casos de uso bons para transmitir dados entre componentes usando eventos personalizados. [Leia aqui](https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events) para obter mais informações sobre o sistema subjacente `CustomEvent` nos browsers.
Notarão que todos os dados passados como o segundo parâmetro para `$dispatch('some-event', {some: 'data'})` ficam disponíveis através da nova propriedade "detail" de eventos: `$event.detail.some`. Anexar dados de eventos personalizados à propriedade `.detail` é uma prática padrão para o `CustomEvent`s nos browsers. [Leia aqui](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail) para obter mais informações.
Também podemos usar `$dispatch()` para acionar atualizações de dados para ligações `x-model`. Por exemplo:
```html
```
> Nota: A propriedade $dispatch está disponível apenas nas expressões DOM.
Caso necessitem aceder ao $dispatch dentro de uma função JavaScript, poderão transmiti-la diretamente:
`
`
---
### `$nextTick`
**Exemplo:**
```html
```
`$ nextTick` é uma propriedade mágica que permite executar apenas uma determinada expressão APÓS o Alpine fazer suas atualizações a DOM. Isso é útil nos momentos em que desejam interagir com o estado da DOM, após refletir as atualizações de dados que fizemos.
---
### `$watch`
**Exemplo:**
```html
```
Podemos "assistir" uma propriedade de componente com o método mágico `$watch`. No exemplo acima, quando o botão é clicado e o valor do `open` é alterado, e o callback fornecida é executada e o novo valor mostrado num `console.log`.
## Segurança
Caso encontrarem uma vulnerabilidade de segurança, envie um email para [calebporzio@gmail.com](mailto:calebporzio@gmail.com).
O Alpine conta com uma implementação personalizada usando o objeto `Function` para avaliar suas diretivas. Apesar de ser mais seguro que o `eval()`, o seu uso é proibido em alguns ambientes, como o Google Chrome App, usando a Política de Segurança de Conteúdo restritiva (CSP).
Caso usem o Alpine em uma página web que lida com dados confidenciais e exige [CSP](https://csp.withgoogle.com/docs/strict-csp.html), necessitam incluir `unsafe-eval` na sua política. Uma política robusta configurada corretamente ajudará a proteger os utilizadores ao usar dados pessoais ou financeiros.
Como uma política se aplica a todos os scripts da sua página, é importante que outras bibliotecas externas incluídas na página web estejam cuidadosamente revisadas para garantir que sejam confiáveis e não apresentem nenhuma vulnerabilidade de Cross Site Scripting usando a função `eval()` ou manipular o DOM para injetar código malicioso na sua página.
## Licença
Copyright © 2019-2021 Caleb Porzio e colaboradores
Licenciado sob a licença MIT, consulte [LICENSE.md](LICENSE.md) para obter detalhes.
Not Found