# @devstroupe/devkit-angular

[![npm version](https://img.shields.io/npm/v/@devstroupe/devkit-angular?color=blue)](https://www.npmjs.com/package/@devstroupe/devkit-angular)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](../../LICENSE)

Classes base para **Angular** do DT-DevKit. Provê listagem reativa com paginação e filtros sincronizados automaticamente com os Query Params da URL.

## Instalação

```bash
npm install @devstroupe/devkit-angular
```

### Peer Dependencies
```bash
npm install @angular/common @angular/core @angular/router rxjs
```

## Classes disponíveis

### `BaseListPage<T>`

Classe base para todos os componentes de listagem gerados pelo DevKit. Gerencia automaticamente:
- Paginação reativa com `BehaviorSubject`
- Filtros sincronizados com os Query Params da URL (via `ActivatedRoute`)
- Carregamento e estado de loading
- Debounce automático nos filtros

```typescript
import { BaseListPage } from '@devstroupe/devkit-angular';
import { Component } from '@angular/core';
import { CabinService } from '../cabin.service';

@Component({
  selector: 'app-cabin-list',
  standalone: true,
  templateUrl: './cabin-list.component.html',
  styleUrl: './cabin-list.component.css'
})
export class CabinListComponent extends BaseListPage<Cabin> {
  constructor(private cabinService: CabinService) {
    super();
  }

  protected fetchData(query: any) {
    return this.cabinService.findAll(query);
  }
}
```

O template HTML correspondente deve usar `<devkit-table>` e `<devkit-filter>` (injetados pelo `devstroupe init-ui`).

## Regras de governança

A regra `use-standard-devkit-queries` do linter exige que:
- Todos os **componentes de listagem** (`*-list.component.ts`) herdem de `BaseListPage`
- Os **templates HTML** correspondentes usem `<devkit-table>` e `<devkit-filter>`

A regra `no-polling-in-frontend` proíbe:
- `setInterval()`, `interval()`, `timer(N, N)` para polling de dados

Use WebSockets ou eventos reativos para atualizações em tempo real.

Execute `devstroupe lint:rules` para verificar conformidade.
