Usage

Render a short checklist

This type is used by Scroll

tsx
import { For, Scroll, Text, store } from 'kuito';

export function PackingList() {
  const state = store({ items: [{ title: 'Passport' }, { title: 'Tickets' }] });
  return (
    <Scroll>
      <For each={state.items} fallback={<Text>Add your first item</Text>}>
        {(item, index) => <Text padding={12}>{`${index.value + 1}. ${item.title}`}</Text>}
      </For>
    </Scroll>
  );
}

Type declaration

ts
export interface ScrollProps extends Omit<ContainerProps, 'keyboard' | 'ref'>, ScrollNativeProps {
  /** Scrolls sideways; changing it remounts the view, as the native axis is fixed. */
  horizontal?: Prop<boolean>;
  ref?: ElementRef<ScrollHandle>;
  /** Moves with the view every frame on the UI thread: `scrollMotion()`, given to one view. */
  motion?: ScrollMotion;
  onScroll?: (event: ScrollEvent) => void;
  /** Where it came to rest: after a fling, a drag or a `scrollTo`, once per rest. */
  onScrollEnd?: (event: ScrollEndEvent) => void;
  /** Called once each time the content end comes within the threshold. */
  onReachEnd?: (event: KuitoEvent<'reachend'>) => void;
  /** Enables pull-to-refresh. */
  onRefresh?: (event: KuitoEvent<'refresh'>) => void;
}

Members 108

NameTypeRequiredDescription
horizontalProp<boolean>NoScrolls sideways; changing it remounts the view, as the native axis is fixed.
refElementRef<ScrollHandle>No—
motionScrollMotionNoMoves with the view every frame on the UI thread: scrollMotion(), given to one view.
onScroll(event: ScrollEvent) => voidNo—
onScrollEnd(event: ScrollEndEvent) => voidNoWhere it came to rest: after a fling, a drag or a scrollTo, once per rest.
onReachEnd(event: KuitoEvent<"reachend">) => voidNoCalled once each time the content end comes within the threshold.
onRefresh(event: KuitoEvent<"refresh">) => voidNoEnables pull-to-refresh.
opacityAnimatable<number>No—
backgroundColorAnimatable<string>No—
borderRadiusAnimatable<number>No—
borderColorAnimatable<string>No—
widthAnimatable<SizeValue>No—
heightAnimatable<SizeValue>No—
translateXAnimatable<number>No—
translateYAnimatable<number>No—
scaleAnimatable<number>No—
scaleXAnimatable<number>No—
scaleYAnimatable<number>No—
rotateAnimatable<number>NoDegrees.
shadowColorAnimatable<string>No—
shadowRadiusAnimatable<number>No—
shadowOffsetXAnimatable<number>No—
shadowOffsetYAnimatable<number>No—
hiddenProp<boolean>NoTakes the view out of layout and off screen, as CSS display: none.
paddingProp<LengthPercentage>No—
positionProp<"relative" | "absolute">No—
childrenKuitoNodeNo—
idstringNo—
classProp<ClassNames>NoClass names from a .css import or styles(): a string, or a list with falsy entries skipped, following the signals it reads.
styleStyleDeclarationsNoStyles of this view alone, compiled at build time: CSS properties in camelCase. A value that changes must set a native prop (opacity).
onPress(event: PressEvent) => voidNo—
onPressCapture(event: PressEvent) => voidNo—
keystring | numberNo—
paddingTopProp<LengthPercentage>No—
paddingRightProp<LengthPercentage>No—
paddingBottomProp<LengthPercentage>No—
paddingLeftProp<LengthPercentage>No—
minWidthProp<SizeValue>No—
maxWidthProp<SizeValue>No—
minHeightProp<SizeValue>No—
maxHeightProp<SizeValue>No—
aspectRatioProp<number>NoWidth divided by height; sizes the missing side from the other.
topProp<LengthPercentageAuto>No—
rightProp<LengthPercentageAuto>No—
bottomProp<LengthPercentageAuto>No—
leftProp<LengthPercentageAuto>No—
marginProp<LengthPercentageAuto>No—
marginTopProp<LengthPercentageAuto>No—
marginRightProp<LengthPercentageAuto>No—
marginBottomProp<LengthPercentageAuto>No—
marginLeftProp<LengthPercentageAuto>No—
flexGrowProp<number>No—
flexShrinkProp<number>No—
flexBasisProp<SizeValue | "content">No—
flexProp<number>NoA grow factor from a zero basis, as CSS flex: n; 0 is inflexible.
alignSelfProp<"auto" | SelfAlignment>No—
directionProp<"ltr" | "rtl">NoThe way lines run; unset, the parent's, and the app's first language's at the root.
boxSizingProp<"border-box" | "content-box">No—
paddingInlineStartProp<LengthPercentage>NoPadding on the side lines start from: the left in ltr, the right in rtl.
paddingInlineEndProp<LengthPercentage>NoPadding on the side lines end at: the right in ltr, the left in rtl.
marginInlineStartProp<LengthPercentageAuto>NoMargin on the side lines start from: the left in ltr, the right in rtl.
marginInlineEndProp<LengthPercentageAuto>NoMargin on the side lines end at: the right in ltr, the left in rtl.
insetInlineStartProp<LengthPercentageAuto>Noleft in ltr, right in rtl.
insetInlineEndProp<LengthPercentageAuto>Noright in ltr, left in rtl.
roleProp<Role>No—
onAction(event: AccessibilityActionEvent) => voidNoThe screen reader action taken, by name.
accessibleProp<boolean>NoMakes the view one screen reader element, read as its label or its children's text.
labelProp<string>NoWhat a screen reader says for the view.
hintProp<string>NoWhat happens when the view is activated, read after the label.
aria-hiddenProp<boolean>NoScreen readers skip the view and its subtree.
actionsProp<readonly AccessibilityAction[]>NoActions a screen reader offers; onAction receives the one taken.
liveProp<"off" | "polite" | "assertive">NoARIA's aria-live: announces changes to the view's content, on iOS too.
aria-disabledProp<boolean>No—
aria-selectedProp<boolean>No—
aria-checkedProp<boolean | "mixed">No—
aria-busyProp<boolean>No—
aria-expandedProp<boolean>No—
aria-valueminProp<number>No—
aria-valuemaxProp<number>No—
aria-valuenowProp<number>No—
aria-valuetextProp<string>No—
gesturesreadonly Composable[]NoThe view's gestures; several race unless composed with together or orElse.
transitionPartial<Record<"opacity" | "backgroundColor" | "transform" | "borderRadius" | "borderColor" | "shadow" | "width" | "height" | "all", Animation<unknown> | AnimationSpec>>NoHow the animatable props move when they change, enter or leave, by group; a CSS transition compiles to it.
animatePartial<Record<AnimatableProps, string | number>>NoAnimatable props whose every change moves as transition says; the first value applies at once.
enterEffectNoWhere the view enters from: fade.and(slide.up(12)).
exitProp<Effect>NoWhere the view leaves to; it stays on screen until it is there. The renderer gets true, and keeps the view until exited.
layoutAnimation<number>NoHow the view moves to a new frame the layout gives it: layout={spring()}.
overflowProp<"visible" | "hidden" | "clip" | "scroll">Nohidden and scroll clip; as in CSS, either lets a flex item shrink below its content.
borderWidthProp<number>No—
backgroundGradient{ angle: number; colors: string[];}No—
colorProp<string>No—
sharedIdProp<string>NoA view the navigation stack flies to the view with the same sharedId on the screen it pushes or pops to (docs/navigation.md#shared-elements).
alignItemsProp<SelfAlignment>No—
justifyContentProp<ContentAlignment>No—
gapProp<LengthPercentage>No—
rowGapProp<LengthPercentage>No—
columnGapProp<LengthPercentage>No—
flexDirectionProp<"row" | "column" | "row-reverse" | "column-reverse">No—
flexWrapProp<"nowrap" | "wrap" | "wrap-reverse" | "balance">No—
flexLineCountProp<number>NoThe minimum number of lines a wrapping container breaks into (CSS Flexbox 2).
alignContentProp<ContentAlignment>No—
scrollIntervalProp<number>NoAt most one scroll event per this many milliseconds; 50 by default.
reachEndThresholdProp<number>NoDistance from the end, in visible lengths, that counts as the end; 0.5 by default.
refreshingBound<boolean>NoShows the pull-to-refresh spinner while true.
scrollbarProp<boolean>NoShows the scrollbar while scrolling; true by default.
pagingProp<boolean>NoComes to rest a whole view length at a time; false by default.
snapOffsetsProp<readonly number[]>NoOffsets in points where a drag comes to rest, besides the start and the end; ignored while paging.
keyboardProp<{ dismiss?: "none" | "on-drag" | "interactive"; persistTaps?: "never" | "always" | "handled"; inset?: boolean; avoid?: "none" | "padding" | "position";}>No—
onScroll — method signatures

Signatures

ts
(event: ScrollEvent): void

Parameters

NameTypeRequiredDescription
eventScrollEventYes—

Returns

void

onScrollEnd — method signatures

Signatures

ts
(event: ScrollEndEvent): void

Parameters

NameTypeRequiredDescription
eventScrollEndEventYes—

Returns

void

onReachEnd — method signatures

Signatures

ts
(event: KuitoEvent<"reachend">): void

Parameters

NameTypeRequiredDescription
eventKuitoEvent<"reachend">Yes—

Returns

void

onRefresh — method signatures

Signatures

ts
(event: KuitoEvent<"refresh">): void

Parameters

NameTypeRequiredDescription
eventKuitoEvent<"refresh">Yes—

Returns

void

onPress — method signatures

Signatures

ts
(event: PressEvent): void

Parameters

NameTypeRequiredDescription
eventPressEventYes—

Returns

void

onPressCapture — method signatures

Signatures

ts
(event: PressEvent): void

Parameters

NameTypeRequiredDescription
eventPressEventYes—

Returns

void

onAction — method signatures

Signatures

ts
(event: AccessibilityActionEvent): void

Parameters

NameTypeRequiredDescription
eventAccessibilityActionEventYes—

Returns

void

backgroundGradient — nested fields

backgroundGradient fields

NameTypeRequiredDescription
anglenumberYes—
colorsstring[]Yes—
Generated from the public TypeScript declarations: signatures, props and defaults come from the checked source, descriptions from its JSDoc. No defaults are invented.