UNPKG

juvo-rafa-library

Version:

A comprehensive Angular component library featuring real-world components and validators extracted from the Juvo Rafa backoffice application. Now with improved select components and bug fixes.

169 lines (168 loc) 5.72 kB
import { EventEmitter } from '@angular/core'; import { Observable } from 'rxjs'; import * as i0 from "@angular/core"; /** * Table column configuration interface * @interface TableColumn * @since 2.1.0 */ export interface TableColumn { key: string; label: string; sortable?: boolean; width?: string; type?: 'text' | 'number' | 'date' | 'boolean' | 'actions'; align?: 'left' | 'center' | 'right'; } /** * Table Component * * @description * A comprehensive table component for displaying and managing tabular data. * Originally designed for backoffice applications with data management needs. * Supports pagination, sorting, selection, and custom actions. * * @example * ```html * <!-- Basic table --> * <juvo-table * [data$]="tableData$" * [columns]="[ * { key: 'id', label: 'ID', width: '80px' }, * { key: 'name', label: 'Name', sortable: true }, * { key: 'email', label: 'Email', sortable: true }, * { key: 'actions', label: 'Actions', type: 'actions' } * ]" * [paginator]="true" * [rows]="10" * (rowSelected)="onRowSelected($event)" * (actionTriggered)="onActionTriggered($event)"> * </juvo-table> * * <!-- Table with selection --> * <juvo-table * [data$]="userData$" * [columns]="userColumns" * [loading$]="userLoading$" * [selectionMode]="'multiple'" * [paginator]="true" * [sortMode]="'single'" * (selectionChange)="onSelectionChange($event)"> * </juvo-table> * ``` * * @selector juvo-table * @since 2.1.0 * @author Juvo Rafa Team */ export declare class JuvoTableComponent { /** Observable data source */ data$: Observable<any[]>; /** Column configuration */ columns: TableColumn[]; /** Loading state observable */ loading$: Observable<boolean>; /** Selection mode @default "none" */ selectionMode: 'none' | 'single' | 'multiple'; /** Whether to show paginator @default false */ paginator: boolean; /** Number of rows per page @default 10 */ rows: number; /** Sort mode @default "single" */ sortMode: 'none' | 'single' | 'multiple'; /** Whether to show grid lines @default true */ showGridlines: boolean; /** Whether to show striped rows @default true */ striped: boolean; /** Whether to show hover effect @default true */ hoverable: boolean; /** Table size variant @default "medium" */ size: 'small' | 'medium' | 'large'; /** Empty state message */ emptyMessage: string; /** Loading message */ loadingMessage: string; /** Emitted when a row is selected */ rowSelected: EventEmitter<any>; /** Emitted when selection changes */ selectionChange: EventEmitter<any[]>; /** Emitted when a row is clicked */ rowClicked: EventEmitter<any>; /** Emitted when column is sorted */ sortChange: EventEmitter<{ field: string; order: 'asc' | 'desc'; }>; /** Emitted when page changes */ pageChange: EventEmitter<{ first: number; rows: number; }>; /** Emitted when an action is triggered */ actionTriggered: EventEmitter<{ action: string; item: any; }>; selectedRows: any[]; currentPage: number; sortField?: string; sortOrder: 'asc' | 'desc'; paginatedData: any[]; totalRecords: number; Math: Math; /** * Gets CSS classes for the table container * @returns Combined CSS classes */ get containerClasses(): string; /** * Handles row selection */ onRowSelect(row: any, event?: Event): void; /** * Handles row click */ onRowClick(row: any): void; /** * Handles column sort */ onSort(column: TableColumn): void; /** * Handles select all checkbox */ selectAll(event: Event): void; /** * Handles previous page navigation */ previousPage(): void; /** * Handles next page navigation */ nextPage(): void; /** * Checks if a row is selected */ isSelected(row: any): boolean; /** * Gets the display value for a cell */ getCellValue(item: any, column: TableColumn): string; /** * Gets CSS classes for column header */ getHeaderClasses(column: TableColumn): string; /** * Gets CSS classes for table cell */ getCellClasses(column: TableColumn): string; /** * Handles action button click */ onAction(action: string, item: any): void; /** * Track by function for ngFor */ trackByFn(index: number, item: any): any; static ɵfac: i0.ɵɵFactoryDeclaration<JuvoTableComponent, never>; static ɵcmp: i0.ɵɵComponentDeclaration<JuvoTableComponent, "juvo-table", never, { "data$": { "alias": "data$"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "loading$": { "alias": "loading$"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "paginator": { "alias": "paginator"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "sortMode": { "alias": "sortMode"; "required": false; }; "showGridlines": { "alias": "showGridlines"; "required": false; }; "striped": { "alias": "striped"; "required": false; }; "hoverable": { "alias": "hoverable"; "required": false; }; "size": { "alias": "size"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "loadingMessage": { "alias": "loadingMessage"; "required": false; }; }, { "rowSelected": "rowSelected"; "selectionChange": "selectionChange"; "rowClicked": "rowClicked"; "sortChange": "sortChange"; "pageChange": "pageChange"; "actionTriggered": "actionTriggered"; }, never, never, true, never>; }