DocsAPI referenceUI machinespagination

pagination machine

The public state machine contract for @grassroot/ui-machines/pagination. The machine owns behaviour; the matching headless layer owns composition.

@grassroot/ui-machines/pagination

Package

14 exports
View source packages/ui-machines/src/pagination/index.ts

Service example

pagination.tsts
import { createService } from "@grassroot/statechart";
import { paginationMachine } from "@grassroot/ui-machines/pagination";
const service = createService(paginationMachine, { input: {} });
service.start();
service.send({ type: "…" });
service.stop();

Exports

DeclarationView source
PaginationChangeReasonts
type PaginationChangeReason = "pointer" | "keyboard" | "programmatic";
DeclarationView source
PaginationCommandts
type PaginationCommand = CommandObject & {
readonly type: "PAGE_CHANGE_REQUEST";
readonly page: number;
readonly reason: PaginationChangeReason;
};
Name
Kind
Type
Requirement
page
property
number
required
reason
property
PaginationChangeReason
required
type
property
string
required
Name
page
Kind
property
Type
number
Requirement
required
Name
reason
Kind
property
Type
PaginationChangeReason
Requirement
required
Name
type
Kind
property
Type
string
Requirement
required
DeclarationView source
PaginationContextts
type PaginationContext = {
readonly mode: "controlled" | "uncontrolled";
readonly page: number;
readonly total: number;
readonly pageSize: number;
readonly siblingCount: number;
readonly pageCount: number;
readonly range: readonly (number | "…")[];
};
Name
Kind
Type
Requirement
mode
property
"controlled" | "uncontrolled"
required
page
property
number
required
pageCount
property
number
required
pageSize
property
number
required
range
property
readonly (number | "…")[]
required
siblingCount
property
number
required
total
property
number
required
Name
mode
Kind
property
Type
"controlled" | "uncontrolled"
Requirement
required
Name
page
Kind
property
Type
number
Requirement
required
Name
pageCount
Kind
property
Type
number
Requirement
required
Name
pageSize
Kind
property
Type
number
Requirement
required
Name
range
Kind
property
Type
readonly (number | "…")[]
Requirement
required
Name
siblingCount
Kind
property
Type
number
Requirement
required
Name
total
Kind
property
Type
number
Requirement
required
DeclarationView source
PaginationDiagnosticCodests
export declare const PaginationDiagnosticCodes: readonly DiagnosticCatalogueEntry[];
DeclarationView source
PaginationEventts
type PaginationEvent = {
readonly type: "SET_PAGE";
readonly page: number;
readonly reason: PaginationChangeReason;
} | {
readonly type: "PREVIOUS";
readonly reason: Exclude<PaginationChangeReason, "programmatic">;
} | {
readonly type: "NEXT";
readonly reason: Exclude<PaginationChangeReason, "programmatic">;
} | {
readonly type: "FIRST";
readonly reason: PaginationChangeReason;
} | {
readonly type: "LAST";
readonly reason: PaginationChangeReason;
};
DeclarationView source
PaginationInputts
type PaginationInput = {
/** Total records/items. */
readonly total: number;
/** Records/items per page. Values below one normalize to one. */
readonly pageSize: number;
/** Controlled 1-based page. Defining it fixes controlled mode. */
readonly page?: number;
/** Uncontrolled initial 1-based page. Defaults to one. */
readonly defaultPage?: number;
/** Pages to show either side of the current page. Defaults to one. */
readonly siblingCount?: number;
};
Name
Kind
Type
Requirement
Description
defaultPage
property
number
optional
Uncontrolled initial 1-based page. Defaults to one.
page
property
number
optional
Controlled 1-based page. Defining it fixes controlled mode.
pageSize
property
number
required
Records/items per page. Values below one normalize to one.
siblingCount
property
number
optional
Pages to show either side of the current page. Defaults to one.
total
property
number
required
Total records/items.
Name
defaultPage
Kind
property
Type
number
Requirement
optional
Description
Uncontrolled initial 1-based page. Defaults to one.
Name
page
Kind
property
Type
number
Requirement
optional
Description
Controlled 1-based page. Defining it fixes controlled mode.
Name
pageSize
Kind
property
Type
number
Requirement
required
Description
Records/items per page. Values below one normalize to one.
Name
siblingCount
Kind
property
Type
number
Requirement
optional
Description
Pages to show either side of the current page. Defaults to one.
Name
total
Kind
property
Type
number
Requirement
required
Description
Total records/items.
DeclarationView source
paginationMachinets
export declare const paginationMachine: PaginationMachine;
DeclarationView source
PaginationMachinets
type PaginationMachine = Machine<PaginationInput, PaginationStateValue, PaginationContext, PaginationEvent, PaginationCommand>;
DeclarationView source
PaginationMachineStatets
type PaginationMachineState = MachineState<PaginationStateValue, PaginationContext>;

paginationRange

function

Exact port of the frozen ui-core oracle.

DeclarationView source
paginationRangets
declare function paginationRange(page: number, count: number, siblings?: number): (number | "…")[];
Name
Kind
Type
Requirement
page
parameter
number
required
count
parameter
number
required
siblings
parameter
number
optional
return
return value
(number | "…")[]
n/a
Name
page
Kind
parameter
Type
number
Requirement
required
Name
count
Kind
parameter
Type
number
Requirement
required
Name
siblings
Kind
parameter
Type
number
Requirement
optional
Name
return
Kind
return value
Type
(number | "…")[]
Requirement
n/a
DeclarationView source
paginationReplaySequencets
export declare const paginationReplaySequence: readonly PaginationEvent[];
DeclarationView source
paginationSelectorsts
export declare const paginationSelectors: {
page: (snapshot: PaginationSnapshot) => number;
pageCount: (snapshot: PaginationSnapshot) => number;
range: (snapshot: PaginationSnapshot) => readonly (number | "…")[];
canPrevious: (snapshot: PaginationSnapshot) => boolean;
canNext: (snapshot: PaginationSnapshot) => boolean;
};
Name
Kind
Type
Requirement
canNext
property
(snapshot: PaginationSnapshot) => boolean
required
canPrevious
property
(snapshot: PaginationSnapshot) => boolean
required
page
property
(snapshot: PaginationSnapshot) => number
required
pageCount
property
(snapshot: PaginationSnapshot) => number
required
range
property
(snapshot: PaginationSnapshot) => readonly (number | "…")[]
required
Name
canNext
Kind
property
Type
(snapshot: PaginationSnapshot) => boolean
Requirement
required
Name
canPrevious
Kind
property
Type
(snapshot: PaginationSnapshot) => boolean
Requirement
required
Name
page
Kind
property
Type
(snapshot: PaginationSnapshot) => number
Requirement
required
Name
pageCount
Kind
property
Type
(snapshot: PaginationSnapshot) => number
Requirement
required
Name
range
Kind
property
Type
(snapshot: PaginationSnapshot) => readonly (number | "…")[]
Requirement
required
DeclarationView source
PaginationSnapshotts
type PaginationSnapshot = Snapshot<PaginationStateValue, PaginationContext>;
DeclarationView source
PaginationStateValuets
type PaginationStateValue = "ready";