svecosystem / runed

Magical utilities for your Svelte applications (WIP)
https://runed.dev
MIT License
387 stars 21 forks source link

Add UsePagination #101

Open Tyson910 opened 1 month ago

Tyson910 commented 1 month ago

Describe the feature in detail (code, mocks, or screenshots encouraged)

Create a usePagination rune for pagination component, allowing users to manage active page state and navigate between multiple pages. Implementation would follow these interfaces:

export interface PaginationParams {
  /** Page selected on initial render, defaults to 1 */
  initialPage?: number;

  /** Total amount of pages */
  total: number;

  /** Callback fired after change of each page */
  onChange?: (page: number) => void;
}

export interface PaginationReturn {
  currentPage: number
  pageCount: number
  prev: () => void
  next: () => void
  // not sure if these last 2 are valuable or not
  isFirstPage: boolean
  isLastPage: boolean
}

What type of pull request would this be?

New Feature

Provide relevant links or additional information.

This implementation could follow the UseIdle hook created by VueUse or Mantine