> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/docs.facephi-pt-br/sdks/sdk-web/componentes/selphid-documentos/propiedades/rules.md).

# rules

## Detalhes

**Atributo:** `rules`

**Tipo:** `RulesSchema`

**Valor padrão:** `{}`

### RuleName

| Membro           | Valor            | Descrição                      |
| ---------------- | ---------------- | ------------------------------ |
| `FirstName`      | `firstName`      | Nome do titular no documento.  |
| `LastName`       | `lastName`       | Sobrenomes do titular.         |
| `Gender`         | `gender`         | Gênero do titular.             |
| `Nationality`    | `nationality`    | Nacionalidade do titular.      |
| `PlaceOfBirth`   | `placeOfBirth`   | Local de nascimento.           |
| `DateOfBirth`    | `dateOfBirth`    | Data de nascimento.            |
| `DateOfIssue`    | `dateOfIssue`    | Data de emissão do documento.  |
| `DateOfExpiry`   | `dateOfExpiry`   | Data de validade do documento. |
| `DocumentNumber` | `documentNumber` | Número do documento.           |

### RuleTypes

| Membro        | Valor         | Descrição                                     |
| ------------- | ------------- | --------------------------------------------- |
| `EqualTo`     | `equalTo`     | O valor extraído deve ser igual ao indicado.  |
| `Contains`    | `contains`    | O valor extraído deve conter o indicado.      |
| `Required`    | `required`    | O campo é obrigatório (`value: true`).        |
| `MaxLength`   | `maxLength`   | Comprimento máximo do campo (número).         |
| `MinLength`   | `minLength`   | Comprimento mínimo do campo (número).         |
| `EqualLength` | `equalLength` | Comprimento exato do valor extraído (número). |

### EngineDocumentTypes

| Membro     | Valor      | Descrição                |
| ---------- | ---------- | ------------------------ |
| `ID`       | `ID`       | Documento de identidade. |
| `DL`       | `DL`       | Carteira de motorista.   |
| `PASSPORT` | `PASSPORT` | Passaporte.              |

## Morfologia

```typescript
import { EngineDocumentTypes, RuleName, RuleTypes } from '@facephi/selphid-web-component';

selphid.rules = {
  HN: [
    { key: RuleName.FirstName, rule: RuleTypes.Required, value: true },
    { key: RuleName.LastName, rule: RuleTypes.Required, value: true },
    {
      key: RuleName.Gender,
      rule: RuleTypes.Required,
      value: true,
      documentTypes: [EngineDocumentTypes.ID, EngineDocumentTypes.PASSPORT],
    },
    {
      key: RuleName.DateOfBirth,
      rule: RuleTypes.MinLength,
      value: 6,
      documentTypes: [EngineDocumentTypes.ID],
      documentSide: 0,
    },
  ],
};
```

## Descrição

Esquema de regras por código do país (ISO) aplicadas antes da extração em `facephi-selphid-widget`. Cada entrada do array define o campo (`key`), o tipo de regra (`rule`), o valor de comparação (`value`) e, opcionalmente, os tipos de documento (`documentTypes`) e o lado do documento (`documentSide`: `0` anverso, `1` reverso).

### Considerações

Apenas propriedade JS (sem atributo HTML). Se não for definido, nenhuma regra é aplicada ao processo de captura.

Cada regra segue o tipo `RuleSchema`:

```typescript
{
  key: string;
  rule: RuleTypes;
  value: string | number | boolean;
  documentTypes?: EngineDocumentTypes[];
  documentSide?: number;
}
```

***

## Exemplo

```jsx
import { EngineDocumentTypes, RuleName, RuleTypes } from '@facephi/selphid-web-component';

<facephi-selphid-widget
    rules={{
        HN: [
            { key: RuleName.FirstName, rule: RuleTypes.Required, value: true },
            { key: RuleName.LastName, rule: RuleTypes.Required, value: true },
            {
                key: RuleName.Gender,
                rule: RuleTypes.Required,
                value: true,
                documentTypes: [EngineDocumentTypes.ID, EngineDocumentTypes.PASSPORT],
            },
        ],
    }}
/>
```
