createNavigationController

Creates the low-level grid navigation controller

Available since @roku-sdk/flex-grid 3.3.0

import { createNavigationController } from "@roku-sdk/flex-grid";
createNavigationController(cfg: NavigationConfig): NavigationController

Deprecated.

Use the grid handle and public focus strategies instead. Will be removed from the public exports in the next major version.

Description

Creates the low-level grid navigation controller.

Parameters

NameTypeDescription
cfgNavigationConfig

Return values

Returns NavigationController.

Types

NavigationConfig

Deprecated.

Use the grid handle and public focus strategies instead. Will be removed from the public exports in the next major version.

Configuration consumed by the low-level navigation controller.

NameTypeDescription
calcScrollTargetX(targetCol: number, baselineSx: number) => number
calcScrollTargetY(targetRow: number) => number
colAccessor<number>
doesRowContentFit(row: number) => boolean
findNearestColForRow(destRow: number, sourceFocusX: number) => number
focusXAccessor<number>
getAliveRowSlot(r: number) => unknown
getFirstFloatingCol?(row: number) => number
getNumVisibleCols?(row: number) => numberReturns the number of fully visible columns in the current viewport for the given row. Used by fastforward/rewind paging to compute the page size (floor of fully visible columns). When omitted, fastforward/rewind keys are not handled.
getRowItemCount(row: number) => number
getRowNumCols?(row: number) => numberReturns the logical column count for a given row (falls back to numCols()).
getRowY(r: number) => number
getTweenDuration?() => numberCurrent tween duration (seconds) for scroll/focus highlights.
holdDelayMsnumber
isFixedFocusboolean
isWrapboolean
keypressEnd?() => void
keypressStart?(key: string) => void
msPerStepnumber
noWrapOnLeftboolean
numCols() => number
numRows() => number
onHorizontalNav?() => voidCalled when left/right navigation moves focus to a different column.
onHorizontalSmoothScrollStart?() => voidCalled when held horizontal smooth scroll starts.
onVerticalNav?() => voidCalled when up/down navigation moves focus to a different row.
onVerticalScrollEnd?() => voidCalled when vertical scroll session ends (key release without smooth scroll, or after settle).
onVerticalSmoothScrollStart?() => voidCalled when held vertical smooth scroll starts.
requestLayout?() => voidRequest a layout pass when the target row is not yet alive in the window.
rowAccessor<number>
rowColMapMap<number, number>
rowFloatScrollXMapMap<number, number>
scrollXAccessor<number>
scrollYAccessor<number>
setCol(c: number) => void
setFocusedRowY(y: number) => void
setFocusedSlotRef(ref: unknown) => void
setFocusSettling?(v: boolean) => voidHolds the focus-highlight easing steady while it glides to the focused item after a held smooth scroll is released. Set true synchronously at settle start.
setForceSnapRows?(v: boolean) => voidSnap all row-slot Y positions on the next layout pass (used after jumpTo).
setRow(r: number, options: { clearPrev: boolean }) => void
setScrollOverrideX(v: { durationSec: number; ease: string; to: number } | null) => void
setScrollOverrideY(v: { durationSec: number; ease: string; to: number } | null) => void
setScrollStopX(v: number[]) => void
setScrollStopY(v: number[]) => void
setSmoothScrolling(v: boolean) => voidCalled immediately when smooth scroll starts/stops (before any setTimeout).
settleStopCount?numberNumber of stop candidates to send to the tween on settle (default 3).
setTweenDuration?(sec: number) => voidTemporarily override tween duration (e.g. snap jump sets 0).
smoothScrollboolean
usesDirectScrollXForRow?(row: number) => booleanWhen true, horizontal scroll for the row comes from calcScrollTargetX, not rowFloatScrollXMap baseline.

NavigationController

Deprecated.

Use the grid handle and public focus strategies instead. Will be removed from the public exports in the next major version.

Low-level navigation controls used by the grid implementation.

NameTypeDescription
pendingSettleX(index: number, stopPos: number) => void | null
pendingSettleY(index: number, stopPos: number) => void | null
smoothScrollboolean
cancelSmoothScrollX() => void
cancelSmoothScrollY() => void
handleKeyEvent(key: RemoteKeyName, press: boolean) => boolean
isHoldTimerYActive() => boolean
isSmoothScrollingX() => boolean
isSmoothScrollingY() => boolean
jumpTo(row: number, col: number, animate: boolean) => void
resetHoldState() => void
settleFromSmoothScrollX() => void
settleFromSmoothScrollY() => void
updateAnimStartTimeX(startTime: [number, number]) => void
updateAnimStartTimeY(startTime: [number, number]) => void

What’s Next

Did this page help you?