UNPKG

ngxsmk-datatable

Version:

A powerful, feature-rich Angular datatable component with virtual scrolling, built for Angular 17+

75 lines (74 loc) 2.13 kB
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; }