@ngx-uk-frontend/core
Version:
Core utilities and shared functionality for ngx-uk-frontend libraries
71 lines (70 loc) • 3.74 kB
TypeScript
import * as i0 from "@angular/core";
/**
* Internal interface for pagination items
*/
export interface PageItem {
/** The number/text to display for the item */
number: string;
/** Whether this is the current active page */
current?: boolean;
/** Whether to display this item as an ellipsis */
ellipsis?: boolean;
/** Actual page number for this item */
pageNumber?: number;
/** Unique identifier for tracking in loops */
id: string;
}
/**
* Base directive for pagination components.
* Contains common functionality shared between different design system implementations.
*/
export declare class PaginationDirective {
/** Total number of items */
readonly itemCount: import("@angular/core").InputSignal<number>;
/** Number of items per page */
readonly itemsPerPage: import("@angular/core").InputSignal<number>;
/** Current page number (1-based) */
readonly currentPage: import("@angular/core").InputSignal<number>;
/** Title for the previous button */
readonly previousTitle: import("@angular/core").InputSignal<string>;
/** Label for the previous button (additional context) */
readonly previousLabel: import("@angular/core").InputSignal<string | null>;
/** Title for the next button */
readonly nextTitle: import("@angular/core").InputSignal<string>;
/** Label for the next button (additional context) */
readonly nextLabel: import("@angular/core").InputSignal<string | null>;
/** Output event when a pagination item is clicked */
readonly pageChange: import("@angular/core").OutputEmitterRef<number>;
/** Output event when the previous link is clicked */
readonly previousClick: import("@angular/core").OutputEmitterRef<void>;
/** Output event when the next link is clicked */
readonly nextClick: import("@angular/core").OutputEmitterRef<void>;
/** Counter for generating unique IDs */
private ellipsisCounter;
/** Computed total number of pages */
readonly totalPages: import("@angular/core").Signal<number>;
/** Computed flag for whether previous button should be shown */
readonly hasPreviousPage: import("@angular/core").Signal<boolean>;
/** Computed flag for whether next button should be shown */
readonly hasNextPage: import("@angular/core").Signal<boolean>;
/** Computed pagination items */
readonly computedItems: import("@angular/core").Signal<PageItem[]>;
/**
* Handle page number click
*/
onPageClick(item: PageItem): void;
/**
* Creates a page item for the specified page number
*/
protected createPageItem(pageNumber: number): PageItem;
/**
* Creates an ellipsis item
*/
protected createEllipsisItem(): PageItem;
/**
* Creates an array of sequential page items
*/
protected createSequentialItems(start: number, end: number): PageItem[];
static ɵfac: i0.ɵɵFactoryDeclaration<PaginationDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<PaginationDirective, never, never, { "itemCount": { "alias": "itemCount"; "required": false; "isSignal": true; }; "itemsPerPage": { "alias": "itemsPerPage"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "previousTitle": { "alias": "previousTitle"; "required": false; "isSignal": true; }; "previousLabel": { "alias": "previousLabel"; "required": false; "isSignal": true; }; "nextTitle": { "alias": "nextTitle"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "previousClick": "previousClick"; "nextClick": "nextClick"; }, never, never, true, never>;
}