baseui
Version:
A React Component library implementing the Base design language
69 lines (68 loc) • 2.2 kB
TypeScript
import type { Override } from '../helpers/overrides';
import type { STATE_CHANGE_TYPE } from './constants';
import type { SIZE } from '../input';
export type Labels = {
prevButton?: string;
nextButton?: string;
preposition?: string;
};
export type Size = keyof typeof SIZE;
export type Callbacks = {
/** Callback for prev button click. */
onPrevClick?: (a: {
event: any;
}) => any;
/** Callback for next button click. */
onNextClick?: (a: {
event: any;
}) => any;
/** Callback for when page changes. */
onPageChange?: (a: {
nextPage: number;
prevPage: number;
}) => any;
};
export type StateReducerFn = (changeType: keyof typeof STATE_CHANGE_TYPE, changes: StatefulContainerState, currentState: StatefulContainerState) => StatefulContainerState;
export type PaginationOverrides = {
Root?: Override;
PrevButton?: Override;
NextButton?: Override;
MaxLabel?: Override;
DropdownContainer?: Override;
Select?: Override;
};
export type PaginationProps = Callbacks & {
/** Max number of pages. */
numPages: number;
/** The current page. */
currentPage: number;
/** Set of labels to use for the buttons and preposition. */
labels?: Labels;
overrides?: PaginationOverrides;
size?: Size;
};
export type StatefulPaginationProps = Callbacks & {
/** Max number of pages. */
numPages: number;
/** Set of labels to use for the buttons and preposition. */
labels?: Labels;
/** Reducer function to manipulate internal state updates. */
stateReducer?: StateReducerFn;
/** Initial state populated into the component */
initialState?: StatefulContainerState;
overrides?: PaginationOverrides;
size?: Size;
};
export type StatefulContainerProps = {
children: any;
numPages: number;
/** Reducer function to manipulate internal state updates. */
stateReducer?: StateReducerFn;
/** Initial state populated into the component */
initialState?: StatefulContainerState;
/** Callback for when page changes. */
onPageChange?: Callbacks['onPageChange'];
};
export type StatefulContainerState = {
currentPage: number;
};