> 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/sdks/sdk-web/componentes/selphid-documentos/propiedades/rules.md).

# rules

## Detalles

**Atributo:** `rules`

**Tipo:** `RulesSchema`

**Valor por defecto:** `{}`

### RuleName

| Miembro          | Valor            | Descripción                         |
| ---------------- | ---------------- | ----------------------------------- |
| `FirstName`      | `firstName`      | Nombre del titular en el documento. |
| `LastName`       | `lastName`       | Apellidos del titular.              |
| `Gender`         | `gender`         | Género del titular.                 |
| `Nationality`    | `nationality`    | Nacionalidad del titular.           |
| `PlaceOfBirth`   | `placeOfBirth`   | Lugar de nacimiento.                |
| `DateOfBirth`    | `dateOfBirth`    | Fecha de nacimiento.                |
| `DateOfIssue`    | `dateOfIssue`    | Fecha de expedición del documento.  |
| `DateOfExpiry`   | `dateOfExpiry`   | Fecha de caducidad del documento.   |
| `DocumentNumber` | `documentNumber` | Número del documento.               |

### RuleTypes

| Miembro       | Valor         | Descripción                                   |
| ------------- | ------------- | --------------------------------------------- |
| `EqualTo`     | `equalTo`     | El valor extraído debe ser igual al indicado. |
| `Contains`    | `contains`    | El valor extraído debe contener el indicado.  |
| `Required`    | `required`    | El campo es obligatorio (`value: true`).      |
| `MaxLength`   | `maxLength`   | Longitud máxima del campo (número).           |
| `MinLength`   | `minLength`   | Longitud mínima del campo (número).           |
| `EqualLength` | `equalLength` | Longitud exacta del valor extraído (número).  |

### EngineDocumentTypes

| Miembro    | Valor      | Descripción             |
| ---------- | ---------- | ----------------------- |
| `ID`       | `ID`       | Documento de identidad. |
| `DL`       | `DL`       | Permiso de conducir.    |
| `PASSPORT` | `PASSPORT` | Pasaporte.              |

## Morfología

```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,
    },
  ],
};
```

## Descripción

Esquema de reglas por código de país (ISO) aplicadas antes de la extracción en `facephi-selphid-widget`. Cada entrada del array define el campo (`key`), el tipo de regla (`rule`), el valor de comparación (`value`) y, opcionalmente, los tipos de documento (`documentTypes`) y el lado del documento (`documentSide`: `0` anverso, `1` reverso).

### Consideraciones

Solo propiedad JS (sin atributo HTML). Si no se define, no se aplica ninguna regla al proceso de captura.

Cada regla sigue el tipo `RuleSchema`:

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

***

## Ejemplo

```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],
            },
        ],
    }}
/>
```
