import React from "react"; import { XmPagination as XmPaginationElement, CustomEvent, } from "../lit/components/pagination/index.js"; /** * A generic type for strongly typing custom events with their targets * @template T - The type of the event target (extends EventTarget) * @template D - The type of the detail payload for the custom event */ type TypedEvent = E & { target: T; }; /** `XmPagination` component event */ export type XmPaginationElementEvent = TypedEvent< XmPaginationElement, E >; export type { XmPaginationElement, CustomEvent }; export interface XmPaginationProps extends Pick< React.AllHTMLAttributes, | "children" | "dir" | "hidden" | "id" | "lang" | "slot" | "style" | "title" | "translate" | "onClick" | "onFocus" | "onBlur" > { /** undefined */ page?: XmPaginationElement["page"]; /** undefined */ total?: XmPaginationElement["total"]; /** undefined */ siblings?: XmPaginationElement["siblings"]; /** undefined */ size?: XmPaginationElement["size"]; /** Offset/limit mode (AD-18): set `limit` + `total-items` (+ `offset`) instead of `page` + `total`. The page-based API stays available and unchanged; in this mode the control ALSO emits xm-pagination-offset-change. */ offset?: XmPaginationElement["offset"]; /** undefined */ limit?: XmPaginationElement["limit"]; /** undefined */ totalItems?: XmPaginationElement["totalItems"]; /** A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the class selectors or functions like the method `Document.getElementsByClassName()`. */ className?: string; /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */ exportparts?: string; /** Used for labels to link them with their inputs (using input id). */ htmlFor?: string; /** Used to help React identify which items have changed, are added, or are removed within a list. */ key?: number | string; /** Contains a space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the ::part pseudo-element. */ part?: string; /** A mutable ref object whose `.current` property is initialized to the passed argument (`initialValue`). The returned object will persist for the full lifetime of the component. */ ref?: React.Ref; /** Allows developers to make HTML elements focusable, allow or prevent them from being sequentially focusable (usually with the `Tab` key, hence the name) and determine their relative ordering for sequential focus navigation. */ tabIndex?: number; /** Fired when the page changes (`detail.page`). */ onXmPaginationPageChange?: (event: XmPaginationElementEvent) => void; /** Fired on commit with the new value in `detail`. */ onChange?: (event: XmPaginationElementEvent) => void; /** Fired in offset/limit mode (`detail.offset`, `detail.limit`). */ onXmPaginationOffsetChange?: (event: XmPaginationElementEvent) => void; } /** * * * ## Attributes & Properties * * Component attributes and properties that can be applied to the element or by using JavaScript. * * - `page`: undefined * - `total`: undefined * - `siblings`: undefined * - `size`: undefined * - `offset`: Offset/limit mode (AD-18): set `limit` + `total-items` (+ `offset`) instead * of `page` + `total`. The page-based API stays available and unchanged; in * this mode the control ALSO emits xm-pagination-offset-change. * - `limit`: undefined * - `total-items`/`totalItems`: undefined * * ## Events * * Events that will be emitted by the component. * * - `xm-pagination-page-change`: Fired when the page changes (`detail.page`). * - `change`: Fired on commit with the new value in `detail`. * - `xm-pagination-offset-change`: Fired in offset/limit mode (`detail.offset`, `detail.limit`). */ export const XmPagination: React.ForwardRefExoticComponent;