ngx-com 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -428,6 +428,7 @@ class ComPaginator {
|
|
|
428
428
|
pageIndex: newPageIndex,
|
|
429
429
|
previousPageIndex: currentPageIndex,
|
|
430
430
|
pageSize: newPageSize,
|
|
431
|
+
previousPageSize: previousPageSize,
|
|
431
432
|
length: this.length(),
|
|
432
433
|
});
|
|
433
434
|
}
|
|
@@ -467,10 +468,12 @@ class ComPaginator {
|
|
|
467
468
|
}
|
|
468
469
|
// ─── Private Methods ───
|
|
469
470
|
emitPageEvent(newPageIndex) {
|
|
471
|
+
const pageSize = this.pageSize();
|
|
470
472
|
this.page.emit({
|
|
471
473
|
pageIndex: newPageIndex,
|
|
472
474
|
previousPageIndex: this.pageIndex(),
|
|
473
|
-
pageSize
|
|
475
|
+
pageSize,
|
|
476
|
+
previousPageSize: pageSize,
|
|
474
477
|
length: this.length(),
|
|
475
478
|
});
|
|
476
479
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-com-components-paginator.mjs","sources":["../../../projects/com/components/paginator/paginator.models.ts","../../../projects/com/components/paginator/paginator.variants.ts","../../../projects/com/components/paginator/paginator.component.ts","../../../projects/com/components/paginator/index.ts","../../../projects/com/components/paginator/ngx-com-components-paginator.ts"],"sourcesContent":["/**\n * Event emitted when the paginator changes page index or page size.\n */\nexport interface PageEvent {\n /** The current zero-based page index. */\n pageIndex: number;\n /** The previous zero-based page index. */\n previousPageIndex: number;\n /** The current page size. */\n pageSize: number;\n /** The total number of items being paged. */\n length: number;\n}\n\n/**\n * Function signature for custom range label formatting.\n * Used for i18n and custom label display.\n *\n * @param page Current page index (zero-based)\n * @param pageSize Number of items per page\n * @param length Total number of items\n * @returns Formatted string to display (e.g., \"1 – 10 of 100\")\n */\nexport type RangeLabelFn = (page: number, pageSize: number, length: number) => string;\n\n/**\n * Default range label function.\n * Produces output like \"1 – 10 of 100\" or \"0 of 0\" when empty.\n */\nexport function defaultRangeLabel(page: number, pageSize: number, length: number): string {\n if (length === 0 || pageSize === 0) {\n return `0 of ${length}`;\n }\n\n const startIndex = page * pageSize;\n // Ensure end index doesn't exceed length\n const endIndex = Math.min(startIndex + pageSize, length);\n\n return `${startIndex + 1} – ${endIndex} of ${length}`;\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\n\n// ─── Types ───\n\nexport type PaginatorSize = 'sm' | 'md';\nexport type PaginatorLayout = 'compact' | 'spread';\n\n// ─── Container Variants ───\n\n/**\n * CVA variants for the paginator container.\n * Controls overall layout and spacing.\n */\nexport const paginatorContainerVariants: (props?: {\n size?: PaginatorSize;\n layout?: PaginatorLayout;\n}) => string = cva(\n [\n 'flex items-center',\n 'text-foreground',\n 'select-none',\n ],\n {\n variants: {\n size: {\n sm: 'gap-3 text-xs',\n md: 'gap-4 text-sm',\n },\n layout: {\n compact: 'justify-end',\n spread: 'justify-between',\n },\n },\n defaultVariants: {\n size: 'md',\n layout: 'compact',\n },\n }\n);\n\n// ─── Button Variants ───\n\n/**\n * CVA variants for paginator navigation buttons.\n * Controls button sizing, borders, and interactive states.\n */\nexport const paginatorButtonVariants: (props?: {\n size?: PaginatorSize;\n}) => string = cva(\n [\n 'inline-flex items-center justify-center',\n 'rounded-control',\n 'border border-border',\n 'bg-transparent',\n 'transition-colors duration-normal',\n 'cursor-pointer',\n 'hover:bg-muted hover:text-muted-foreground',\n 'focus-visible:outline-[1px] focus-visible:outline-offset-2 focus-visible:outline-ring',\n 'disabled:cursor-not-allowed disabled:bg-disabled disabled:text-disabled-foreground disabled:border-disabled',\n ],\n {\n variants: {\n size: {\n sm: 'h-7 w-7',\n md: 'h-9 w-9',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\n// ─── Range Label Variants ───\n\n/**\n * CVA variants for the range label text.\n * Controls typography and color.\n */\nexport const paginatorRangeLabelVariants: (props?: {\n size?: PaginatorSize;\n}) => string = cva(\n [\n 'text-muted-foreground',\n 'whitespace-nowrap',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\n// ─── Page Size Selector Variants ───\n\n/**\n * CVA variants for the page size select element.\n * Controls sizing and styling of the native select.\n */\nexport const paginatorSelectVariants: (props?: {\n size?: PaginatorSize;\n}) => string = cva(\n [\n 'appearance-none',\n 'rounded-control',\n 'border border-border',\n 'bg-transparent',\n 'text-foreground',\n 'cursor-pointer',\n 'transition-colors duration-normal',\n 'hover:bg-muted',\n 'focus-visible:outline-[1px] focus-visible:outline-offset-2 focus-visible:outline-ring',\n 'disabled:cursor-not-allowed disabled:bg-disabled disabled:text-disabled-foreground disabled:border-disabled',\n 'pr-6', // Space for custom dropdown arrow\n ],\n {\n variants: {\n size: {\n sm: 'h-7 px-2 text-xs',\n md: 'h-9 px-3 text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\n// ─── Variant Types ───\n\n// ─── Page Button Variants ───\n\n/**\n * CVA variants for numbered page buttons.\n * Controls button sizing, active state, and interactive states.\n */\nexport const paginatorPageButtonVariants: (props?: {\n size?: PaginatorSize;\n active?: boolean;\n}) => string = cva(\n [\n 'inline-flex items-center justify-center',\n 'rounded-control',\n 'font-medium',\n 'transition-colors duration-normal',\n 'cursor-pointer',\n 'focus-visible:outline-[1px] focus-visible:outline-offset-2 focus-visible:outline-ring',\n 'disabled:cursor-not-allowed disabled:bg-disabled disabled:text-disabled-foreground',\n ],\n {\n variants: {\n size: {\n sm: 'h-7 min-w-7 px-1.5 text-xs',\n md: 'h-9 min-w-9 px-2 text-sm',\n },\n active: {\n true: 'bg-primary text-primary-foreground',\n false: 'bg-transparent text-foreground hover:bg-muted hover:text-muted-foreground',\n },\n },\n defaultVariants: {\n size: 'md',\n active: false,\n },\n }\n);\n\n// ─── Ellipsis Variants ───\n\n/**\n * CVA variants for the ellipsis indicator.\n * Controls sizing and styling of the \"...\" text.\n */\nexport const paginatorEllipsisVariants: (props?: {\n size?: PaginatorSize;\n}) => string = cva(\n [\n 'inline-flex items-center justify-center',\n 'text-muted-foreground',\n 'select-none',\n ],\n {\n variants: {\n size: {\n sm: 'h-7 w-7 text-xs',\n md: 'h-9 w-9 text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\n// ─── Variant Types ───\n\nexport type PaginatorContainerVariants = VariantProps<typeof paginatorContainerVariants>;\nexport type PaginatorButtonVariants = VariantProps<typeof paginatorButtonVariants>;\nexport type PaginatorRangeLabelVariants = VariantProps<typeof paginatorRangeLabelVariants>;\nexport type PaginatorSelectVariants = VariantProps<typeof paginatorSelectVariants>;\nexport type PaginatorPageButtonVariants = VariantProps<typeof paginatorPageButtonVariants>;\nexport type PaginatorEllipsisVariants = VariantProps<typeof paginatorEllipsisVariants>;\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n output,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport type {\n InputSignal,\n InputSignalWithTransform,\n OutputEmitterRef,\n Signal,\n} from '@angular/core';\nimport { ComIcon } from 'ngx-com/components/icon';\nimport { defaultRangeLabel, type PageEvent, type RangeLabelFn } from './paginator.models';\nimport {\n paginatorContainerVariants,\n paginatorButtonVariants,\n paginatorRangeLabelVariants,\n paginatorSelectVariants,\n paginatorPageButtonVariants,\n paginatorEllipsisVariants,\n type PaginatorSize,\n type PaginatorLayout,\n} from './paginator.variants';\n\n/** Represents a page number or ellipsis marker in the page range. */\nexport type PageRangeItem = number | 'ellipsis';\n\n/**\n * Paginator component — provides navigation for paginated content.\n *\n * Displays navigation controls, optional page size selector, and range label\n * showing current position within the data set. Supports numbered page buttons\n * when `showPageNumbers` is enabled.\n *\n * @tokens `--color-foreground`, `--color-muted-foreground`,\n * `--color-border`, `--color-muted`,\n * `--color-disabled`, `--color-disabled-foreground`,\n * `--color-ring`, `--color-primary`, `--color-primary-foreground`\n *\n * @example Basic usage\n * ```html\n * <com-paginator\n * [length]=\"100\"\n * [pageSize]=\"10\"\n * [pageIndex]=\"0\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n *\n * @example With page size options\n * ```html\n * <com-paginator\n * [length]=\"100\"\n * [pageSize]=\"10\"\n * [pageIndex]=\"0\"\n * [pageSizeOptions]=\"[5, 10, 25, 50]\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n *\n * @example With first/last buttons\n * ```html\n * <com-paginator\n * [length]=\"100\"\n * [pageSize]=\"10\"\n * [pageIndex]=\"0\"\n * [showFirstLastButtons]=\"true\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n *\n * @example With numbered page buttons\n * ```html\n * <com-paginator\n * [length]=\"97\"\n * [pageSize]=\"10\"\n * [showPageNumbers]=\"true\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n *\n * @example Spread layout (summary left, controls right)\n * ```html\n * <com-paginator\n * [length]=\"97\"\n * [pageSize]=\"10\"\n * [showPageNumbers]=\"true\"\n * layout=\"spread\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n *\n * @example Small size\n * ```html\n * <com-paginator\n * [length]=\"50\"\n * [pageSize]=\"10\"\n * size=\"sm\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n *\n * @example Custom range label (i18n)\n * ```html\n * <com-paginator\n * [length]=\"100\"\n * [pageSize]=\"10\"\n * [rangeLabel]=\"customLabel\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n * ```ts\n * customLabel = (page, pageSize, length) => `Seite ${page + 1} von ${Math.ceil(length / pageSize)}`;\n * ```\n */\n@Component({\n selector: 'com-paginator',\n exportAs: 'comPaginator',\n template: `\n <nav\n role=\"navigation\"\n [attr.aria-label]=\"ariaLabel()\"\n [class]=\"containerClasses()\"\n >\n @if (showPageNumbers()) {\n <!-- Spread Layout: Summary on left -->\n @if (layout() === 'spread') {\n <span [class]=\"rangeLabelClasses()\">\n {{ rangeLabelText() }}\n </span>\n }\n\n <!-- Navigation Controls -->\n <div\n class=\"flex items-center gap-1\"\n role=\"group\"\n aria-label=\"Page navigation\"\n (keydown)=\"onPageButtonsKeydown($event)\"\n >\n <!-- Previous Page -->\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [disabled]=\"disabled() || !hasPreviousPage()\"\n aria-label=\"Previous page\"\n (click)=\"previousPage()\"\n >\n <com-icon name=\"chevron-left\" [size]=\"iconSize()\" />\n </button>\n\n <!-- Page Numbers -->\n @for (item of pageRange(); track trackPageItem($index, item)) {\n @if (item === 'ellipsis') {\n <span\n [class]=\"ellipsisClasses()\"\n aria-hidden=\"true\"\n >…</span>\n } @else {\n <button\n #pageBtn\n type=\"button\"\n [class]=\"item === pageIndex() ? activePageButtonClasses() : inactivePageButtonClasses()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'Page ' + (item + 1)\"\n [attr.aria-current]=\"item === pageIndex() ? 'page' : null\"\n [tabindex]=\"item === pageIndex() ? 0 : -1\"\n (click)=\"goToPage(item)\"\n >{{ item + 1 }}</button>\n }\n }\n\n <!-- Next Page -->\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [disabled]=\"disabled() || !hasNextPage()\"\n aria-label=\"Next page\"\n (click)=\"nextPage()\"\n >\n <com-icon name=\"chevron-right\" [size]=\"iconSize()\" />\n </button>\n </div>\n\n <!-- Compact Layout: Summary on right -->\n @if (layout() === 'compact') {\n <span [class]=\"rangeLabelClasses()\">\n {{ rangeLabelText() }}\n </span>\n }\n } @else {\n <!-- Original Layout (no page numbers) -->\n\n <!-- Page Size Selector -->\n @if (!hidePageSize() && pageSizeOptions().length > 0) {\n <div class=\"flex items-center gap-2\">\n <label\n [id]=\"pageSizeLabelId()\"\n [attr.for]=\"pageSizeSelectId()\"\n class=\"text-muted-foreground\"\n [class.text-xs]=\"size() === 'sm'\"\n [class.text-sm]=\"size() === 'md'\"\n >\n Items per page:\n </label>\n <div class=\"relative\">\n <select\n [id]=\"pageSizeSelectId()\"\n [attr.aria-labelledby]=\"pageSizeLabelId()\"\n [class]=\"selectClasses()\"\n [disabled]=\"disabled()\"\n [value]=\"pageSize()\"\n (change)=\"onPageSizeChange($event)\"\n >\n @for (option of pageSizeOptions(); track option) {\n <option [value]=\"option\">{{ option }}</option>\n }\n </select>\n <com-icon\n name=\"chevron-down\"\n size=\"xs\"\n class=\"pointer-events-none absolute right-1.5 top-1/2 -translate-y-1/2 text-muted-foreground\"\n />\n </div>\n </div>\n }\n\n <!-- Range Label -->\n <span [class]=\"rangeLabelClasses()\">\n {{ rangeLabelText() }}\n </span>\n\n <!-- Navigation Buttons -->\n <div class=\"flex items-center gap-1\">\n <!-- First Page -->\n @if (showFirstLastButtons()) {\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [disabled]=\"disabled() || !hasPreviousPage()\"\n aria-label=\"First page\"\n (click)=\"firstPage()\"\n >\n <com-icon name=\"chevrons-left\" [size]=\"iconSize()\" />\n </button>\n }\n\n <!-- Previous Page -->\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [disabled]=\"disabled() || !hasPreviousPage()\"\n aria-label=\"Previous page\"\n (click)=\"previousPage()\"\n >\n <com-icon name=\"chevron-left\" [size]=\"iconSize()\" />\n </button>\n\n <!-- Next Page -->\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [disabled]=\"disabled() || !hasNextPage()\"\n aria-label=\"Next page\"\n (click)=\"nextPage()\"\n >\n <com-icon name=\"chevron-right\" [size]=\"iconSize()\" />\n </button>\n\n <!-- Last Page -->\n @if (showFirstLastButtons()) {\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [disabled]=\"disabled() || !hasNextPage()\"\n aria-label=\"Last page\"\n (click)=\"lastPage()\"\n >\n <com-icon name=\"chevrons-right\" [size]=\"iconSize()\" />\n </button>\n }\n </div>\n }\n </nav>\n `,\n styles: `\n com-paginator {\n display: block;\n }\n `,\n imports: [ComIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'com-paginator',\n },\n})\nexport class ComPaginator {\n // ─── View Queries ───\n\n /** Page number buttons for keyboard navigation. */\n private readonly pageButtons = viewChildren<ElementRef<HTMLButtonElement>>('pageBtn');\n\n // ─── Inputs ───\n\n /** Total number of items being paged. */\n readonly length: InputSignal<number> = input<number>(0);\n\n /** Number of items to display per page. */\n readonly pageSize: InputSignal<number> = input<number>(10);\n\n /** Current zero-based page index. */\n readonly pageIndex: InputSignal<number> = input<number>(0);\n\n /** Available page size options. Hides selector if empty. */\n readonly pageSizeOptions: InputSignal<number[]> = input<number[]>([]);\n\n /** Whether to show first/last navigation buttons. */\n readonly showFirstLastButtons: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n /** Whether to show numbered page buttons. */\n readonly showPageNumbers: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n /** Whether all controls are disabled. */\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n /** Whether to hide the page size selector. */\n readonly hidePageSize: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n /** Size variant. */\n readonly size: InputSignal<PaginatorSize> = input<PaginatorSize>('md');\n\n /** Layout variant. Only applies when showPageNumbers is true. */\n readonly layout: InputSignal<PaginatorLayout> = input<PaginatorLayout>('compact');\n\n /** Number of pages to show on each side of the current page. */\n readonly siblingCount: InputSignal<number> = input<number>(1);\n\n /** Number of pages to always show at the start and end. */\n readonly boundaryCount: InputSignal<number> = input<number>(1);\n\n /** Accessible label for the nav element. */\n readonly ariaLabel: InputSignal<string> = input<string>('Pagination', { alias: 'aria-label' });\n\n /** Custom function for range label formatting. */\n readonly rangeLabel: InputSignal<RangeLabelFn> = input<RangeLabelFn>(defaultRangeLabel);\n\n // ─── Outputs ───\n\n /** Emits when page index or page size changes. */\n readonly page: OutputEmitterRef<PageEvent> = output<PageEvent>();\n\n // ─── Computed ───\n\n /** Total number of pages. */\n protected readonly numberOfPages: Signal<number> = computed(() => {\n const size = this.pageSize();\n const len = this.length();\n if (size === 0 || len === 0) {\n return 0;\n }\n return Math.ceil(len / size);\n });\n\n /** Whether there is a previous page. */\n protected readonly hasPreviousPage: Signal<boolean> = computed(() => {\n return this.pageIndex() > 0 && this.pageSize() > 0;\n });\n\n /** Whether there is a next page. */\n protected readonly hasNextPage: Signal<boolean> = computed(() => {\n const total = this.numberOfPages();\n return total > 0 && this.pageIndex() < total - 1;\n });\n\n /** The formatted range label text. */\n protected readonly rangeLabelText: Signal<string> = computed(() => {\n const fn = this.rangeLabel();\n return fn(this.pageIndex(), this.pageSize(), this.length());\n });\n\n /** Icon size based on component size. */\n protected readonly iconSize: Signal<'xs' | 'sm'> = computed(() => {\n return this.size() === 'sm' ? 'xs' : 'sm';\n });\n\n /** Unique ID for page size label. */\n protected readonly pageSizeLabelId: Signal<string> = computed(() => {\n return `com-paginator-page-size-label-${uniqueId++}`;\n });\n\n /** Unique ID for page size select element. */\n protected readonly pageSizeSelectId: Signal<string> = computed(() => {\n return `com-paginator-page-size-select-${uniqueId++}`;\n });\n\n /** Classes for the container. */\n protected readonly containerClasses: Signal<string> = computed(() =>\n paginatorContainerVariants({\n size: this.size(),\n layout: this.showPageNumbers() ? this.layout() : 'compact',\n })\n );\n\n /** Classes for navigation buttons. */\n protected readonly buttonClasses: Signal<string> = computed(() =>\n paginatorButtonVariants({ size: this.size() })\n );\n\n /** Classes for the range label. */\n protected readonly rangeLabelClasses: Signal<string> = computed(() =>\n paginatorRangeLabelVariants({ size: this.size() })\n );\n\n /** Classes for the page size select. */\n protected readonly selectClasses: Signal<string> = computed(() =>\n paginatorSelectVariants({ size: this.size() })\n );\n\n /** Classes for the ellipsis indicator. */\n protected readonly ellipsisClasses: Signal<string> = computed(() =>\n paginatorEllipsisVariants({ size: this.size() })\n );\n\n /** Cached classes for active page button. */\n protected readonly activePageButtonClasses: Signal<string> = computed(() =>\n paginatorPageButtonVariants({ size: this.size(), active: true })\n );\n\n /** Cached classes for inactive page button. */\n protected readonly inactivePageButtonClasses: Signal<string> = computed(() =>\n paginatorPageButtonVariants({ size: this.size(), active: false })\n );\n\n /**\n * Computed page range for numbered pagination.\n * Returns array like [0, 'ellipsis', 3, 4, 5, 'ellipsis', 9] (zero-indexed).\n */\n protected readonly pageRange: Signal<PageRangeItem[]> = computed(() => {\n const totalPages = this.numberOfPages();\n const current = this.pageIndex();\n const siblings = this.siblingCount();\n const boundaries = this.boundaryCount();\n\n if (totalPages === 0) return [];\n\n // If all pages fit without ellipses, show them all\n const totalSlots = 2 * boundaries + 2 * siblings + 3;\n if (totalPages <= totalSlots) {\n return this.range(0, totalPages - 1);\n }\n\n // Collect all page indices that should be visible (Set auto-deduplicates)\n const pages = new Set<number>();\n\n // Boundary pages (always visible)\n for (let i = 0; i < boundaries; i++) pages.add(i);\n for (let i = totalPages - boundaries; i < totalPages; i++) pages.add(i);\n\n // Sibling pages around current (including current)\n const siblingStart = Math.max(0, current - siblings);\n const siblingEnd = Math.min(totalPages - 1, current + siblings);\n for (let i = siblingStart; i <= siblingEnd; i++) pages.add(i);\n\n // Convert to sorted array and insert ellipses at gaps\n const sorted = Array.from(pages).sort((a, b) => a - b);\n const result: PageRangeItem[] = [];\n\n for (let i = 0; i < sorted.length; i++) {\n const page = sorted[i]!;\n const prevPage = sorted[i - 1];\n if (prevPage !== undefined && page - prevPage > 1) {\n result.push('ellipsis');\n }\n result.push(page);\n }\n\n return result;\n });\n\n // ─── Navigation Methods ───\n\n /** Navigate to the first page. */\n firstPage(): void {\n if (this.hasPreviousPage()) {\n this.emitPageEvent(0);\n }\n }\n\n /** Navigate to the previous page. */\n previousPage(): void {\n if (this.hasPreviousPage()) {\n this.emitPageEvent(this.pageIndex() - 1);\n }\n }\n\n /** Navigate to the next page. */\n nextPage(): void {\n if (this.hasNextPage()) {\n this.emitPageEvent(this.pageIndex() + 1);\n }\n }\n\n /** Navigate to the last page. */\n lastPage(): void {\n if (this.hasNextPage()) {\n this.emitPageEvent(this.numberOfPages() - 1);\n }\n }\n\n /** Navigate to a specific page by index (zero-based). */\n goToPage(pageIndex: number): void {\n if (pageIndex >= 0 && pageIndex < this.numberOfPages() && pageIndex !== this.pageIndex()) {\n this.emitPageEvent(pageIndex);\n }\n }\n\n /** Handle page size selection change. */\n protected onPageSizeChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const newPageSize = Number(select.value);\n const previousPageSize = this.pageSize();\n const currentPageIndex = this.pageIndex();\n\n // Calculate new page index to keep the first item on the current page visible\n const startIndex = currentPageIndex * previousPageSize;\n const newPageIndex = Math.floor(startIndex / newPageSize);\n\n this.page.emit({\n pageIndex: newPageIndex,\n previousPageIndex: currentPageIndex,\n pageSize: newPageSize,\n length: this.length(),\n });\n }\n\n /** Handle keyboard navigation within page buttons (roving tabindex). */\n protected onPageButtonsKeydown(event: KeyboardEvent): void {\n const target = event.target as HTMLButtonElement;\n\n // Get enabled buttons from viewChildren query\n const buttons = this.pageButtons()\n .map((ref) => ref.nativeElement)\n .filter((btn) => !btn.disabled);\n\n const currentIndex = buttons.indexOf(target);\n if (currentIndex === -1) return;\n\n let newIndex: number;\n switch (event.key) {\n case 'ArrowLeft':\n newIndex = currentIndex > 0 ? currentIndex - 1 : buttons.length - 1;\n break;\n case 'ArrowRight':\n newIndex = currentIndex < buttons.length - 1 ? currentIndex + 1 : 0;\n break;\n case 'Home':\n newIndex = 0;\n break;\n case 'End':\n newIndex = buttons.length - 1;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n buttons[newIndex]?.focus();\n }\n\n /** Track function for page items. */\n protected trackPageItem(index: number, item: PageRangeItem): string {\n return item === 'ellipsis' ? `ellipsis-${index}` : `page-${item}`;\n }\n\n // ─── Private Methods ───\n\n private emitPageEvent(newPageIndex: number): void {\n this.page.emit({\n pageIndex: newPageIndex,\n previousPageIndex: this.pageIndex(),\n pageSize: this.pageSize(),\n length: this.length(),\n });\n }\n\n /** Generate a range of numbers from start to end (inclusive). */\n private range(start: number, end: number): number[] {\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n }\n}\n\n/** Counter for generating unique IDs. */\nlet uniqueId = 0;\n","// Public API for the paginator component\n\n// Main component\nexport { ComPaginator } from './paginator.component';\nexport type { PageRangeItem } from './paginator.component';\n\n// Models\nexport { defaultRangeLabel } from './paginator.models';\nexport type { PageEvent, RangeLabelFn } from './paginator.models';\n\n// Variants\nexport {\n paginatorContainerVariants,\n paginatorButtonVariants,\n paginatorRangeLabelVariants,\n paginatorSelectVariants,\n paginatorPageButtonVariants,\n paginatorEllipsisVariants,\n} from './paginator.variants';\n\nexport type {\n PaginatorSize,\n PaginatorLayout,\n PaginatorContainerVariants,\n PaginatorButtonVariants,\n PaginatorRangeLabelVariants,\n PaginatorSelectVariants,\n PaginatorPageButtonVariants,\n PaginatorEllipsisVariants,\n} from './paginator.variants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-com-components-paginator.mjs","sources":["../../../projects/com/components/paginator/paginator.models.ts","../../../projects/com/components/paginator/paginator.variants.ts","../../../projects/com/components/paginator/paginator.component.ts","../../../projects/com/components/paginator/index.ts","../../../projects/com/components/paginator/ngx-com-components-paginator.ts"],"sourcesContent":["/**\n * Event emitted when the paginator changes page index or page size.\n */\nexport interface PageEvent {\n /** The current zero-based page index. */\n pageIndex: number;\n /** The previous zero-based page index. */\n previousPageIndex: number;\n /** The current page size. */\n pageSize: number;\n /** The previous page size before the event. */\n previousPageSize: number;\n /** The total number of items being paged. */\n length: number;\n}\n\n/**\n * Function signature for custom range label formatting.\n * Used for i18n and custom label display.\n *\n * @param page Current page index (zero-based)\n * @param pageSize Number of items per page\n * @param length Total number of items\n * @returns Formatted string to display (e.g., \"1 – 10 of 100\")\n */\nexport type RangeLabelFn = (page: number, pageSize: number, length: number) => string;\n\n/**\n * Default range label function.\n * Produces output like \"1 – 10 of 100\" or \"0 of 0\" when empty.\n */\nexport function defaultRangeLabel(page: number, pageSize: number, length: number): string {\n if (length === 0 || pageSize === 0) {\n return `0 of ${length}`;\n }\n\n const startIndex = page * pageSize;\n // Ensure end index doesn't exceed length\n const endIndex = Math.min(startIndex + pageSize, length);\n\n return `${startIndex + 1} – ${endIndex} of ${length}`;\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\n\n// ─── Types ───\n\nexport type PaginatorSize = 'sm' | 'md';\nexport type PaginatorLayout = 'compact' | 'spread';\n\n// ─── Container Variants ───\n\n/**\n * CVA variants for the paginator container.\n * Controls overall layout and spacing.\n */\nexport const paginatorContainerVariants: (props?: {\n size?: PaginatorSize;\n layout?: PaginatorLayout;\n}) => string = cva(\n [\n 'flex items-center',\n 'text-foreground',\n 'select-none',\n ],\n {\n variants: {\n size: {\n sm: 'gap-3 text-xs',\n md: 'gap-4 text-sm',\n },\n layout: {\n compact: 'justify-end',\n spread: 'justify-between',\n },\n },\n defaultVariants: {\n size: 'md',\n layout: 'compact',\n },\n }\n);\n\n// ─── Button Variants ───\n\n/**\n * CVA variants for paginator navigation buttons.\n * Controls button sizing, borders, and interactive states.\n */\nexport const paginatorButtonVariants: (props?: {\n size?: PaginatorSize;\n}) => string = cva(\n [\n 'inline-flex items-center justify-center',\n 'rounded-control',\n 'border border-border',\n 'bg-transparent',\n 'transition-colors duration-normal',\n 'cursor-pointer',\n 'hover:bg-muted hover:text-muted-foreground',\n 'focus-visible:outline-[1px] focus-visible:outline-offset-2 focus-visible:outline-ring',\n 'disabled:cursor-not-allowed disabled:bg-disabled disabled:text-disabled-foreground disabled:border-disabled',\n ],\n {\n variants: {\n size: {\n sm: 'h-7 w-7',\n md: 'h-9 w-9',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\n// ─── Range Label Variants ───\n\n/**\n * CVA variants for the range label text.\n * Controls typography and color.\n */\nexport const paginatorRangeLabelVariants: (props?: {\n size?: PaginatorSize;\n}) => string = cva(\n [\n 'text-muted-foreground',\n 'whitespace-nowrap',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\n// ─── Page Size Selector Variants ───\n\n/**\n * CVA variants for the page size select element.\n * Controls sizing and styling of the native select.\n */\nexport const paginatorSelectVariants: (props?: {\n size?: PaginatorSize;\n}) => string = cva(\n [\n 'appearance-none',\n 'rounded-control',\n 'border border-border',\n 'bg-transparent',\n 'text-foreground',\n 'cursor-pointer',\n 'transition-colors duration-normal',\n 'hover:bg-muted',\n 'focus-visible:outline-[1px] focus-visible:outline-offset-2 focus-visible:outline-ring',\n 'disabled:cursor-not-allowed disabled:bg-disabled disabled:text-disabled-foreground disabled:border-disabled',\n 'pr-6', // Space for custom dropdown arrow\n ],\n {\n variants: {\n size: {\n sm: 'h-7 px-2 text-xs',\n md: 'h-9 px-3 text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\n// ─── Variant Types ───\n\n// ─── Page Button Variants ───\n\n/**\n * CVA variants for numbered page buttons.\n * Controls button sizing, active state, and interactive states.\n */\nexport const paginatorPageButtonVariants: (props?: {\n size?: PaginatorSize;\n active?: boolean;\n}) => string = cva(\n [\n 'inline-flex items-center justify-center',\n 'rounded-control',\n 'font-medium',\n 'transition-colors duration-normal',\n 'cursor-pointer',\n 'focus-visible:outline-[1px] focus-visible:outline-offset-2 focus-visible:outline-ring',\n 'disabled:cursor-not-allowed disabled:bg-disabled disabled:text-disabled-foreground',\n ],\n {\n variants: {\n size: {\n sm: 'h-7 min-w-7 px-1.5 text-xs',\n md: 'h-9 min-w-9 px-2 text-sm',\n },\n active: {\n true: 'bg-primary text-primary-foreground',\n false: 'bg-transparent text-foreground hover:bg-muted hover:text-muted-foreground',\n },\n },\n defaultVariants: {\n size: 'md',\n active: false,\n },\n }\n);\n\n// ─── Ellipsis Variants ───\n\n/**\n * CVA variants for the ellipsis indicator.\n * Controls sizing and styling of the \"...\" text.\n */\nexport const paginatorEllipsisVariants: (props?: {\n size?: PaginatorSize;\n}) => string = cva(\n [\n 'inline-flex items-center justify-center',\n 'text-muted-foreground',\n 'select-none',\n ],\n {\n variants: {\n size: {\n sm: 'h-7 w-7 text-xs',\n md: 'h-9 w-9 text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\n// ─── Variant Types ───\n\nexport type PaginatorContainerVariants = VariantProps<typeof paginatorContainerVariants>;\nexport type PaginatorButtonVariants = VariantProps<typeof paginatorButtonVariants>;\nexport type PaginatorRangeLabelVariants = VariantProps<typeof paginatorRangeLabelVariants>;\nexport type PaginatorSelectVariants = VariantProps<typeof paginatorSelectVariants>;\nexport type PaginatorPageButtonVariants = VariantProps<typeof paginatorPageButtonVariants>;\nexport type PaginatorEllipsisVariants = VariantProps<typeof paginatorEllipsisVariants>;\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n output,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport type {\n InputSignal,\n InputSignalWithTransform,\n OutputEmitterRef,\n Signal,\n} from '@angular/core';\nimport { ComIcon } from 'ngx-com/components/icon';\nimport { defaultRangeLabel, type PageEvent, type RangeLabelFn } from './paginator.models';\nimport {\n paginatorContainerVariants,\n paginatorButtonVariants,\n paginatorRangeLabelVariants,\n paginatorSelectVariants,\n paginatorPageButtonVariants,\n paginatorEllipsisVariants,\n type PaginatorSize,\n type PaginatorLayout,\n} from './paginator.variants';\n\n/** Represents a page number or ellipsis marker in the page range. */\nexport type PageRangeItem = number | 'ellipsis';\n\n/**\n * Paginator component — provides navigation for paginated content.\n *\n * Displays navigation controls, optional page size selector, and range label\n * showing current position within the data set. Supports numbered page buttons\n * when `showPageNumbers` is enabled.\n *\n * @tokens `--color-foreground`, `--color-muted-foreground`,\n * `--color-border`, `--color-muted`,\n * `--color-disabled`, `--color-disabled-foreground`,\n * `--color-ring`, `--color-primary`, `--color-primary-foreground`\n *\n * @example Basic usage\n * ```html\n * <com-paginator\n * [length]=\"100\"\n * [pageSize]=\"10\"\n * [pageIndex]=\"0\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n *\n * @example With page size options\n * ```html\n * <com-paginator\n * [length]=\"100\"\n * [pageSize]=\"10\"\n * [pageIndex]=\"0\"\n * [pageSizeOptions]=\"[5, 10, 25, 50]\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n *\n * @example With first/last buttons\n * ```html\n * <com-paginator\n * [length]=\"100\"\n * [pageSize]=\"10\"\n * [pageIndex]=\"0\"\n * [showFirstLastButtons]=\"true\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n *\n * @example With numbered page buttons\n * ```html\n * <com-paginator\n * [length]=\"97\"\n * [pageSize]=\"10\"\n * [showPageNumbers]=\"true\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n *\n * @example Spread layout (summary left, controls right)\n * ```html\n * <com-paginator\n * [length]=\"97\"\n * [pageSize]=\"10\"\n * [showPageNumbers]=\"true\"\n * layout=\"spread\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n *\n * @example Small size\n * ```html\n * <com-paginator\n * [length]=\"50\"\n * [pageSize]=\"10\"\n * size=\"sm\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n *\n * @example Custom range label (i18n)\n * ```html\n * <com-paginator\n * [length]=\"100\"\n * [pageSize]=\"10\"\n * [rangeLabel]=\"customLabel\"\n * (page)=\"onPageChange($event)\"\n * />\n * ```\n * ```ts\n * customLabel = (page, pageSize, length) => `Seite ${page + 1} von ${Math.ceil(length / pageSize)}`;\n * ```\n */\n@Component({\n selector: 'com-paginator',\n exportAs: 'comPaginator',\n template: `\n <nav\n role=\"navigation\"\n [attr.aria-label]=\"ariaLabel()\"\n [class]=\"containerClasses()\"\n >\n @if (showPageNumbers()) {\n <!-- Spread Layout: Summary on left -->\n @if (layout() === 'spread') {\n <span [class]=\"rangeLabelClasses()\">\n {{ rangeLabelText() }}\n </span>\n }\n\n <!-- Navigation Controls -->\n <div\n class=\"flex items-center gap-1\"\n role=\"group\"\n aria-label=\"Page navigation\"\n (keydown)=\"onPageButtonsKeydown($event)\"\n >\n <!-- Previous Page -->\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [disabled]=\"disabled() || !hasPreviousPage()\"\n aria-label=\"Previous page\"\n (click)=\"previousPage()\"\n >\n <com-icon name=\"chevron-left\" [size]=\"iconSize()\" />\n </button>\n\n <!-- Page Numbers -->\n @for (item of pageRange(); track trackPageItem($index, item)) {\n @if (item === 'ellipsis') {\n <span\n [class]=\"ellipsisClasses()\"\n aria-hidden=\"true\"\n >…</span>\n } @else {\n <button\n #pageBtn\n type=\"button\"\n [class]=\"item === pageIndex() ? activePageButtonClasses() : inactivePageButtonClasses()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'Page ' + (item + 1)\"\n [attr.aria-current]=\"item === pageIndex() ? 'page' : null\"\n [tabindex]=\"item === pageIndex() ? 0 : -1\"\n (click)=\"goToPage(item)\"\n >{{ item + 1 }}</button>\n }\n }\n\n <!-- Next Page -->\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [disabled]=\"disabled() || !hasNextPage()\"\n aria-label=\"Next page\"\n (click)=\"nextPage()\"\n >\n <com-icon name=\"chevron-right\" [size]=\"iconSize()\" />\n </button>\n </div>\n\n <!-- Compact Layout: Summary on right -->\n @if (layout() === 'compact') {\n <span [class]=\"rangeLabelClasses()\">\n {{ rangeLabelText() }}\n </span>\n }\n } @else {\n <!-- Original Layout (no page numbers) -->\n\n <!-- Page Size Selector -->\n @if (!hidePageSize() && pageSizeOptions().length > 0) {\n <div class=\"flex items-center gap-2\">\n <label\n [id]=\"pageSizeLabelId()\"\n [attr.for]=\"pageSizeSelectId()\"\n class=\"text-muted-foreground\"\n [class.text-xs]=\"size() === 'sm'\"\n [class.text-sm]=\"size() === 'md'\"\n >\n Items per page:\n </label>\n <div class=\"relative\">\n <select\n [id]=\"pageSizeSelectId()\"\n [attr.aria-labelledby]=\"pageSizeLabelId()\"\n [class]=\"selectClasses()\"\n [disabled]=\"disabled()\"\n [value]=\"pageSize()\"\n (change)=\"onPageSizeChange($event)\"\n >\n @for (option of pageSizeOptions(); track option) {\n <option [value]=\"option\">{{ option }}</option>\n }\n </select>\n <com-icon\n name=\"chevron-down\"\n size=\"xs\"\n class=\"pointer-events-none absolute right-1.5 top-1/2 -translate-y-1/2 text-muted-foreground\"\n />\n </div>\n </div>\n }\n\n <!-- Range Label -->\n <span [class]=\"rangeLabelClasses()\">\n {{ rangeLabelText() }}\n </span>\n\n <!-- Navigation Buttons -->\n <div class=\"flex items-center gap-1\">\n <!-- First Page -->\n @if (showFirstLastButtons()) {\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [disabled]=\"disabled() || !hasPreviousPage()\"\n aria-label=\"First page\"\n (click)=\"firstPage()\"\n >\n <com-icon name=\"chevrons-left\" [size]=\"iconSize()\" />\n </button>\n }\n\n <!-- Previous Page -->\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [disabled]=\"disabled() || !hasPreviousPage()\"\n aria-label=\"Previous page\"\n (click)=\"previousPage()\"\n >\n <com-icon name=\"chevron-left\" [size]=\"iconSize()\" />\n </button>\n\n <!-- Next Page -->\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [disabled]=\"disabled() || !hasNextPage()\"\n aria-label=\"Next page\"\n (click)=\"nextPage()\"\n >\n <com-icon name=\"chevron-right\" [size]=\"iconSize()\" />\n </button>\n\n <!-- Last Page -->\n @if (showFirstLastButtons()) {\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [disabled]=\"disabled() || !hasNextPage()\"\n aria-label=\"Last page\"\n (click)=\"lastPage()\"\n >\n <com-icon name=\"chevrons-right\" [size]=\"iconSize()\" />\n </button>\n }\n </div>\n }\n </nav>\n `,\n styles: `\n com-paginator {\n display: block;\n }\n `,\n imports: [ComIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'com-paginator',\n },\n})\nexport class ComPaginator {\n // ─── View Queries ───\n\n /** Page number buttons for keyboard navigation. */\n private readonly pageButtons = viewChildren<ElementRef<HTMLButtonElement>>('pageBtn');\n\n // ─── Inputs ───\n\n /** Total number of items being paged. */\n readonly length: InputSignal<number> = input<number>(0);\n\n /** Number of items to display per page. */\n readonly pageSize: InputSignal<number> = input<number>(10);\n\n /** Current zero-based page index. */\n readonly pageIndex: InputSignal<number> = input<number>(0);\n\n /** Available page size options. Hides selector if empty. */\n readonly pageSizeOptions: InputSignal<number[]> = input<number[]>([]);\n\n /** Whether to show first/last navigation buttons. */\n readonly showFirstLastButtons: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n /** Whether to show numbered page buttons. */\n readonly showPageNumbers: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n /** Whether all controls are disabled. */\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n /** Whether to hide the page size selector. */\n readonly hidePageSize: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n /** Size variant. */\n readonly size: InputSignal<PaginatorSize> = input<PaginatorSize>('md');\n\n /** Layout variant. Only applies when showPageNumbers is true. */\n readonly layout: InputSignal<PaginatorLayout> = input<PaginatorLayout>('compact');\n\n /** Number of pages to show on each side of the current page. */\n readonly siblingCount: InputSignal<number> = input<number>(1);\n\n /** Number of pages to always show at the start and end. */\n readonly boundaryCount: InputSignal<number> = input<number>(1);\n\n /** Accessible label for the nav element. */\n readonly ariaLabel: InputSignal<string> = input<string>('Pagination', { alias: 'aria-label' });\n\n /** Custom function for range label formatting. */\n readonly rangeLabel: InputSignal<RangeLabelFn> = input<RangeLabelFn>(defaultRangeLabel);\n\n // ─── Outputs ───\n\n /** Emits when page index or page size changes. */\n readonly page: OutputEmitterRef<PageEvent> = output<PageEvent>();\n\n // ─── Computed ───\n\n /** Total number of pages. */\n protected readonly numberOfPages: Signal<number> = computed(() => {\n const size = this.pageSize();\n const len = this.length();\n if (size === 0 || len === 0) {\n return 0;\n }\n return Math.ceil(len / size);\n });\n\n /** Whether there is a previous page. */\n protected readonly hasPreviousPage: Signal<boolean> = computed(() => {\n return this.pageIndex() > 0 && this.pageSize() > 0;\n });\n\n /** Whether there is a next page. */\n protected readonly hasNextPage: Signal<boolean> = computed(() => {\n const total = this.numberOfPages();\n return total > 0 && this.pageIndex() < total - 1;\n });\n\n /** The formatted range label text. */\n protected readonly rangeLabelText: Signal<string> = computed(() => {\n const fn = this.rangeLabel();\n return fn(this.pageIndex(), this.pageSize(), this.length());\n });\n\n /** Icon size based on component size. */\n protected readonly iconSize: Signal<'xs' | 'sm'> = computed(() => {\n return this.size() === 'sm' ? 'xs' : 'sm';\n });\n\n /** Unique ID for page size label. */\n protected readonly pageSizeLabelId: Signal<string> = computed(() => {\n return `com-paginator-page-size-label-${uniqueId++}`;\n });\n\n /** Unique ID for page size select element. */\n protected readonly pageSizeSelectId: Signal<string> = computed(() => {\n return `com-paginator-page-size-select-${uniqueId++}`;\n });\n\n /** Classes for the container. */\n protected readonly containerClasses: Signal<string> = computed(() =>\n paginatorContainerVariants({\n size: this.size(),\n layout: this.showPageNumbers() ? this.layout() : 'compact',\n })\n );\n\n /** Classes for navigation buttons. */\n protected readonly buttonClasses: Signal<string> = computed(() =>\n paginatorButtonVariants({ size: this.size() })\n );\n\n /** Classes for the range label. */\n protected readonly rangeLabelClasses: Signal<string> = computed(() =>\n paginatorRangeLabelVariants({ size: this.size() })\n );\n\n /** Classes for the page size select. */\n protected readonly selectClasses: Signal<string> = computed(() =>\n paginatorSelectVariants({ size: this.size() })\n );\n\n /** Classes for the ellipsis indicator. */\n protected readonly ellipsisClasses: Signal<string> = computed(() =>\n paginatorEllipsisVariants({ size: this.size() })\n );\n\n /** Cached classes for active page button. */\n protected readonly activePageButtonClasses: Signal<string> = computed(() =>\n paginatorPageButtonVariants({ size: this.size(), active: true })\n );\n\n /** Cached classes for inactive page button. */\n protected readonly inactivePageButtonClasses: Signal<string> = computed(() =>\n paginatorPageButtonVariants({ size: this.size(), active: false })\n );\n\n /**\n * Computed page range for numbered pagination.\n * Returns array like [0, 'ellipsis', 3, 4, 5, 'ellipsis', 9] (zero-indexed).\n */\n protected readonly pageRange: Signal<PageRangeItem[]> = computed(() => {\n const totalPages = this.numberOfPages();\n const current = this.pageIndex();\n const siblings = this.siblingCount();\n const boundaries = this.boundaryCount();\n\n if (totalPages === 0) return [];\n\n // If all pages fit without ellipses, show them all\n const totalSlots = 2 * boundaries + 2 * siblings + 3;\n if (totalPages <= totalSlots) {\n return this.range(0, totalPages - 1);\n }\n\n // Collect all page indices that should be visible (Set auto-deduplicates)\n const pages = new Set<number>();\n\n // Boundary pages (always visible)\n for (let i = 0; i < boundaries; i++) pages.add(i);\n for (let i = totalPages - boundaries; i < totalPages; i++) pages.add(i);\n\n // Sibling pages around current (including current)\n const siblingStart = Math.max(0, current - siblings);\n const siblingEnd = Math.min(totalPages - 1, current + siblings);\n for (let i = siblingStart; i <= siblingEnd; i++) pages.add(i);\n\n // Convert to sorted array and insert ellipses at gaps\n const sorted = Array.from(pages).sort((a, b) => a - b);\n const result: PageRangeItem[] = [];\n\n for (let i = 0; i < sorted.length; i++) {\n const page = sorted[i]!;\n const prevPage = sorted[i - 1];\n if (prevPage !== undefined && page - prevPage > 1) {\n result.push('ellipsis');\n }\n result.push(page);\n }\n\n return result;\n });\n\n // ─── Navigation Methods ───\n\n /** Navigate to the first page. */\n firstPage(): void {\n if (this.hasPreviousPage()) {\n this.emitPageEvent(0);\n }\n }\n\n /** Navigate to the previous page. */\n previousPage(): void {\n if (this.hasPreviousPage()) {\n this.emitPageEvent(this.pageIndex() - 1);\n }\n }\n\n /** Navigate to the next page. */\n nextPage(): void {\n if (this.hasNextPage()) {\n this.emitPageEvent(this.pageIndex() + 1);\n }\n }\n\n /** Navigate to the last page. */\n lastPage(): void {\n if (this.hasNextPage()) {\n this.emitPageEvent(this.numberOfPages() - 1);\n }\n }\n\n /** Navigate to a specific page by index (zero-based). */\n goToPage(pageIndex: number): void {\n if (pageIndex >= 0 && pageIndex < this.numberOfPages() && pageIndex !== this.pageIndex()) {\n this.emitPageEvent(pageIndex);\n }\n }\n\n /** Handle page size selection change. */\n protected onPageSizeChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const newPageSize = Number(select.value);\n const previousPageSize = this.pageSize();\n const currentPageIndex = this.pageIndex();\n\n // Calculate new page index to keep the first item on the current page visible\n const startIndex = currentPageIndex * previousPageSize;\n const newPageIndex = Math.floor(startIndex / newPageSize);\n\n this.page.emit({\n pageIndex: newPageIndex,\n previousPageIndex: currentPageIndex,\n pageSize: newPageSize,\n previousPageSize: previousPageSize,\n length: this.length(),\n });\n }\n\n /** Handle keyboard navigation within page buttons (roving tabindex). */\n protected onPageButtonsKeydown(event: KeyboardEvent): void {\n const target = event.target as HTMLButtonElement;\n\n // Get enabled buttons from viewChildren query\n const buttons = this.pageButtons()\n .map((ref) => ref.nativeElement)\n .filter((btn) => !btn.disabled);\n\n const currentIndex = buttons.indexOf(target);\n if (currentIndex === -1) return;\n\n let newIndex: number;\n switch (event.key) {\n case 'ArrowLeft':\n newIndex = currentIndex > 0 ? currentIndex - 1 : buttons.length - 1;\n break;\n case 'ArrowRight':\n newIndex = currentIndex < buttons.length - 1 ? currentIndex + 1 : 0;\n break;\n case 'Home':\n newIndex = 0;\n break;\n case 'End':\n newIndex = buttons.length - 1;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n buttons[newIndex]?.focus();\n }\n\n /** Track function for page items. */\n protected trackPageItem(index: number, item: PageRangeItem): string {\n return item === 'ellipsis' ? `ellipsis-${index}` : `page-${item}`;\n }\n\n // ─── Private Methods ───\n\n private emitPageEvent(newPageIndex: number): void {\n const pageSize = this.pageSize();\n this.page.emit({\n pageIndex: newPageIndex,\n previousPageIndex: this.pageIndex(),\n pageSize,\n previousPageSize: pageSize,\n length: this.length(),\n });\n }\n\n /** Generate a range of numbers from start to end (inclusive). */\n private range(start: number, end: number): number[] {\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n }\n}\n\n/** Counter for generating unique IDs. */\nlet uniqueId = 0;\n","// Public API for the paginator component\n\n// Main component\nexport { ComPaginator } from './paginator.component';\nexport type { PageRangeItem } from './paginator.component';\n\n// Models\nexport { defaultRangeLabel } from './paginator.models';\nexport type { PageEvent, RangeLabelFn } from './paginator.models';\n\n// Variants\nexport {\n paginatorContainerVariants,\n paginatorButtonVariants,\n paginatorRangeLabelVariants,\n paginatorSelectVariants,\n paginatorPageButtonVariants,\n paginatorEllipsisVariants,\n} from './paginator.variants';\n\nexport type {\n PaginatorSize,\n PaginatorLayout,\n PaginatorContainerVariants,\n PaginatorButtonVariants,\n PaginatorRangeLabelVariants,\n PaginatorSelectVariants,\n PaginatorPageButtonVariants,\n PaginatorEllipsisVariants,\n} from './paginator.variants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED