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.

120 lines (119 loc) 4.11 kB
import { EventEmitter } from '@angular/core'; import { Observable } from 'rxjs'; import * as i0 from "@angular/core"; /** * List column configuration interface * @interface ListColumn * @since 2.1.0 */ export interface ListColumn { key: string; label: string; sortable?: boolean; width?: string; type?: 'text' | 'number' | 'date' | 'boolean' | 'custom'; } /** * List Component * * @description * A simple list component for displaying tabular data with basic functionality. * Originally designed for backoffice applications requiring data presentation. * Supports sorting, custom columns, and item selection. * * @example * ```html * <!-- Basic list --> * <juvo-list * [data$]="listData$" * [columns]="[ * { key: 'name', label: 'Name', sortable: true }, * { key: 'email', label: 'Email' }, * { key: 'status', label: 'Status', type: 'boolean' } * ]" * (itemSelected)="onItemSelected($event)"> * </juvo-list> * * <!-- List with loading state --> * <juvo-list * [data$]="userData$" * [columns]="userColumns" * [loading$]="userLoading$" * [selectable]="true" * (itemSelected)="handleSelection($event)"> * </juvo-list> * ``` * * @selector juvo-list * @since 2.1.0 * @author Juvo Rafa Team */ export declare class JuvoListComponent { /** Observable data source */ data$: Observable<any[]>; /** Column configuration */ columns: ListColumn[]; /** Loading state observable */ loading$: Observable<boolean>; /** Whether items are selectable @default false */ selectable: boolean; /** Whether to show header @default true */ showHeader: boolean; /** Empty state message */ emptyMessage: string; /** Loading message */ loadingMessage: string; /** List size variant @default "medium" */ size: 'small' | 'medium' | 'large'; /** Whether to show borders @default true */ bordered: boolean; /** Whether to show striped rows @default true */ striped: boolean; /** Emitted when an item is selected */ itemSelected: EventEmitter<any>; /** Emitted when an item is clicked */ itemClicked: EventEmitter<any>; /** Emitted when column header is clicked for sorting */ columnSort: EventEmitter<{ column: ListColumn; direction: 'asc' | 'desc'; }>; selectedItems: any[]; sortColumn?: string; sortDirection: 'asc' | 'desc'; /** * Gets CSS classes for the list container * @returns Combined CSS classes */ get containerClasses(): string; /** * Handles item selection */ onItemSelect(item: any): void; /** * Handles item click */ onItemClick(item: any): void; /** * Handles column header click for sorting */ onColumnHeaderClick(column: ListColumn): void; /** * Checks if an item is selected */ isSelected(item: any): boolean; /** * Gets the display value for a cell */ getCellValue(item: any, column: ListColumn): string; /** * Gets CSS classes for column header */ getHeaderClasses(column: ListColumn): string; /** * Track by function for ngFor performance */ trackByFn(index: number, item: any): any; static ɵfac: i0.ɵɵFactoryDeclaration<JuvoListComponent, never>; static ɵcmp: i0.ɵɵComponentDeclaration<JuvoListComponent, "juvo-list", never, { "data$": { "alias": "data$"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "loading$": { "alias": "loading$"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "loadingMessage": { "alias": "loadingMessage"; "required": false; }; "size": { "alias": "size"; "required": false; }; "bordered": { "alias": "bordered"; "required": false; }; "striped": { "alias": "striped"; "required": false; }; }, { "itemSelected": "itemSelected"; "itemClicked": "itemClicked"; "columnSort": "columnSort"; }, never, never, true, never>; }