Skip to main content

Class: HardwareUiControl<E, P>

An abstract implementation of a component that forms the base of a Garmin-like UI control system. Subclasses should implement an appropriate event handler interface (using the utility type UiControlEventHandlers<Events>) and have their props implement the corresponding prop event handler interface (using the utility type UiControlPropEventHandlers<Events>).

Type parameters

NameTypeDescription
Eextends Record<string, any> = Record<string, any>An event definition type for events supported by this control.
Pextends HardwareUiControlProps = HardwareUiControlPropsThe component prop type for this control.

Hierarchy

Constructors

constructor

new HardwareUiControl<E, P>(props): HardwareUiControl<E, P>

Creates an instance of a HardwareUiControl.

Type parameters

NameType
Eextends Record<string, any> = Record<string, any>
Pextends HardwareUiControlProps = HardwareUiControlProps

Parameters

NameTypeDescription
propsPThe props for this component.

Returns

HardwareUiControl<E, P>

Overrides

DisplayComponent.constructor

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:155

Properties

context

Optional context: [] = undefined

The context on this component, if any.

Inherited from

DisplayComponent.context

Defined in

src/sdk/components/FSComponent.ts:64


contextType

Optional Readonly contextType: readonly [] = undefined

The type of context for this component, if any.

Inherited from

DisplayComponent.contextType

Defined in

src/sdk/components/FSComponent.ts:67


focusedIndex

Protected focusedIndex: number = -1

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:139


props

props: P & ComponentProps

The properties of the component.

Inherited from

DisplayComponent.props

Defined in

src/sdk/components/FSComponent.ts:61


registeredControls

Protected registeredControls: undefined | HardwareUiControl<E, HardwareUiControlProps>[]

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:137

Accessors

isDisabled

get isDisabled(): boolean

Gets whether or not the control is currently disabled.

Returns

boolean

True if disabled, false otherwise.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:177


isFocused

get isFocused(): boolean

Gets whether or not the control is currently focused.

Returns

boolean

True if disabled, false otherwise.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:185


isIsolated

get isIsolated(): boolean

Gets whether or not the control is currently in scroll isolation.

Returns

boolean

True if currently in scroll isolation, false otherwise.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:193


length

get length(): number

Gets the current number of registered child controls.

Returns

number

The current number of registered child controls.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:165

Methods

blur

blur(): void

Blurs, or removes focus, from the component.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:593


clearRegistered

clearRegistered(): void

Clears the list of registered components.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:793


destroy

destroy(): void

Destroys this component.

Returns

void

Overrides

DisplayComponent.destroy

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:923


focus

focus(focusPosition): boolean

Brings focus to the control. Focusing the control will also blur the currently focused control, if any.

Parameters

NameTypeDescription
focusPositionFocusPositionThe focus position to activate for descendents of this control.

Returns

boolean

Whether this control was successfully focused.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:410


getChild

getChild(index): undefined | HardwareUiControl<E, HardwareUiControlProps>

Gets a child control at the specified index.

Parameters

NameTypeDescription
indexnumberThe index of the child control to get.

Returns

undefined | HardwareUiControl<E, HardwareUiControlProps>

The specified child control.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:859


getContext

getContext(context): never

Gets a context data subscription from the context collection.

Parameters

NameTypeDescription
contextneverThe context to get the subscription for.

Returns

never

The requested context.

Throws

An error if no data for the specified context type could be found.

Inherited from

DisplayComponent.getContext

Defined in

src/sdk/components/FSComponent.ts:106


getFocusPositionOnScroll

getFocusPositionOnScroll(direction): FocusPosition

Gets the focus position to apply when this control is focused from a scroll.

Parameters

NameTypeDescription
directionScrollDirectionThe direction of the scroll.

Returns

FocusPosition

The focus position to apply when this control is focused from a scroll.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:250


getFocusedIndex

getFocusedIndex(): number

Gets the current focused index in the registered controls collection.

Returns

number

The index of the focused control in the collection of registered controls.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:824


getMostRecentFocusedIndex

getMostRecentFocusedIndex(): number

Gets the most recent focused index (including the current focused index, if one exists) in the registered controls collection.

Returns

number

The index of the most recently focused control in the collection of registered controls.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:833


indexOf

indexOf(child): number

Gets the index of a specified child control within the registered child controls collection.

Parameters

NameTypeDescription
childHardwareUiControl<E, HardwareUiControlProps>The child to get the index of.

Returns

number

The index of the child, or -1 if not found.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:873


onAfterRender

onAfterRender(thisNode): void

A callback that is called after the component is rendered.

Parameters

NameTypeDescription
thisNodeVNodeThe component's VNode.

Returns

void

Overrides

DisplayComponent.onAfterRender

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:900


onAfterScroll

onAfterScroll(control, index): void

An event called when a scroll operation has completed.

Parameters

NameTypeDescription
controlHardwareUiControl<E, HardwareUiControlProps>The control that was scrolled to.
indexnumberThe index of the control in the collection of registered controls.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:284


onBeforeRender

onBeforeRender(): void

A callback that is called before the component is rendered.

Returns

void

Inherited from

DisplayComponent.onBeforeRender

Defined in

src/sdk/components/FSComponent.ts:80


onBlurred

onBlurred(source): void

An event called when the control is blurred.

Parameters

NameTypeDescription
sourceHardwareUiControl<E, HardwareUiControlProps>The control that emitted this event.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:209


onDisabled

onDisabled(source): void

An event called when the control is disabled.

Parameters

NameTypeDescription
sourceHardwareUiControl<E, HardwareUiControlProps>The control that emitted this event.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:225


onEnabled

onEnabled(source): void

An event called when the control is enabled.

Parameters

NameTypeDescription
sourceHardwareUiControl<E, HardwareUiControlProps>The control that emitted this event.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:217


onFocused

onFocused(source): void

An event called when the control receives focus.

Parameters

NameTypeDescription
sourceHardwareUiControl<E, HardwareUiControlProps>The control that emitted this event.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:201


onInteractionEvent

onInteractionEvent(event): boolean

A method which is called when this control receives an interaction event.

Parameters

NameTypeDescription
eventkeyof EThe event.

Returns

boolean

True if the event was handled, false otherwise.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:337


onRegistered

onRegistered(source): void

An event called when a control is registered with this control.

Parameters

NameTypeDescription
sourceHardwareUiControl<E, HardwareUiControlProps>The control that emitted this event.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:233


onScroll

onScroll(direction): boolean

An event called when the control is scrolled.

Parameters

NameTypeDescription
directionScrollDirectionThe direction that is being requested to scroll.

Returns

boolean

True if this control handled this event, false otherwise.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:263


onUnregistered

onUnregistered(source): void

An event called when a control is unregistered from this control.

Parameters

NameTypeDescription
sourceHardwareUiControl<E, HardwareUiControlProps>The control that emitted this event.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:241


reconcileChildBlur

reconcileChildBlur(index, child): number | BlurReconciliation

Reconciles the focus state of this control's children when this control is focused with no focused children after a child has been blurred.

Parameters

NameTypeDescription
indexnumberThe index of the child control that was blurred. If the child is no longer registered, then this is the index of the child prior to being unregistered.
childHardwareUiControl<E, HardwareUiControlProps>The child control that was blurred.

Returns

number | BlurReconciliation

The index of the child control to focus.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:688


register

register(control, index?): void

Registers a child control with this control.

Parameters

NameTypeDescription
controlHardwareUiControl<E, HardwareUiControlProps>The control to register.
index?numberThe index at which to register the control. If none is provided, the control will be registered at the end of the collection of child controls.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:722


render

render(): VNode

Renders the control.

Returns

VNode

The component VNode.

Overrides

DisplayComponent.render

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:916


scroll

scroll(direction): boolean

Scrolls the currently focused control in the supplied direction.

Parameters

NameTypeDescription
directionScrollDirectionThe direction that is being requested to scroll.

Returns

boolean

True if propagation should be stopped, false otherwise.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:293


setDisabled

setDisabled(isDisabled): void

Sets the component to be disabled, removing the ability for the component to scroll. Setting a component to disabled will also blur the component and its children, if necessary.

Parameters

NameTypeDescription
isDisabledbooleanWhether or not the component is disabled.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:705


setFocusedIndex

setFocusedIndex(index, focusPosition?): void

Sets the current most recently focused child control index. If this control is focused and has children that have focus, this will also switch child focus to the new index.

Parameters

NameTypeDefault valueDescription
indexnumberundefinedThe index of the child control to set most recent focus for.
focusPositionFocusPositionFocusPosition.MostRecentThe focus position to focus the child for, if required.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:843


setIsolated

setIsolated(isolated): void

Sets whether or not this control is in scroll isolation. While scroll isolation is enabled, scroll events will not propagate to the control's parent when the control has focus.

Parameters

NameTypeDescription
isolatedbooleanWhether or not the control is isolated.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:895


setParent

setParent(parent): void

Sets the parent of this control.

Parameters

NameTypeDescription
parentHardwareUiControl<E, HardwareUiControlProps>The parent to set.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:885


triggerEvent

triggerEvent(event, source, ...args): boolean

Triggers an event on this control. The event will first be routed to the deepest focused descendent of this control and will propagate up the control tree until it is handled or there are no more controls to which to propagate.

Parameters

NameTypeDescription
eventkeyof EThe event to trigger.
sourceHardwareUiControl<Record<string, any>, HardwareUiControlProps>The source of the event. Defaults to this if not supplied.
...argsany[]Additional arguments to pass to the event handler.

Returns

boolean

True if the event was handled, false otherwise.

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:348


unregister

unregister(item): void

Unregisters a child control with this control.

Parameters

NameTypeDescription
itemnumber | HardwareUiControl<E, HardwareUiControlProps>The child control or index of a child control to unregister. If a child control is provided, it will attempt to be located in the control's child registry and then removed. If an index is provided, the child control at that registered index will be removed.

Returns

void

Defined in

src/sdk/components/controls/HardwareUiControl.tsx:748