ngxsmk-datatable
Version:
A powerful, feature-rich Angular datatable component with virtual scrolling, built for Angular 17+
75 lines (74 loc) • 2.13 kB
TypeScript
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { DataProvider, DataRequest, DataResponse, ServerDataProviderConfig } from './data-provider.interface';
/**
* REST API data provider
* Handles server-side pagination, sorting, and filtering
*
* Note: This class is not decorated with @Injectable because it takes configuration
* in the constructor. Create instances manually.
*
* @example
* const provider = new RestDataProvider<User>(http, {
* mode: 'server',
* url: 'https://api.example.com/users',
* headers: { 'Authorization': 'Bearer token' }
* });
*
* provider.fetch({
* pagination: { page: 1, pageSize: 50 },
* sorting: [{ field: 'name', direction: 'asc' }],
* filtering: [{ column: { id: 'status' }, value: 'active', operator: 'equals', type: 'text' }]
* }).subscribe(response => {
* console.log(response.data); // User[]
* console.log(response.total); // Total count
* });
*/
export declare class RestDataProvider<T> implements DataProvider<T> {
private http;
private config;
constructor(http: HttpClient, config: ServerDataProviderConfig);
/**
* Fetch data from REST API
*/
fetch(request: DataRequest): Observable<DataResponse<T>>;
/**
* Create a new item
*/
create(item: T): Observable<T>;
/**
* Update an existing item
*/
update(id: string | number, item: Partial<T>): Observable<T>;
/**
* Delete an item
*/
delete(id: string | number): Observable<void>;
/**
* Batch update multiple items
*/
batchUpdate(updates: Array<{
id: string | number;
data: Partial<T>;
}>): Observable<T[]>;
/**
* Batch delete multiple items
*/
batchDelete(ids: (string | number)[]): Observable<void>;
/**
* Build full URL with path parameters
*/
private buildUrl;
/**
* Build HTTP query parameters
*/
private buildParams;
/**
* Transform API response to DataResponse
*/
private transformResponse;
/**
* Handle HTTP errors
*/
private handleError;
}