Reka UI logoReka
backdrop
Components

Time Field

Alpha
Enables users to input specific times within a designated field.
––
––
AM

Features

  • Full keyboard navigation
  • Can be controlled or uncontrolled
  • Focus is fully managed
  • Localization support
  • Highly composable
  • Accessible by default

Preface

The component depends on the @internationalized/date package, which solves a lot of the problems that come with working with dates and times in JavaScript.

We highly recommend reading through the documentation for the package to get a solid feel for how it works, and you'll need to install it in your project to use the date-related components.

Installation

Install the date package.

sh
$ npm add @internationalized/date

Install the component from your command line.

sh
$ npm add reka-ui

Anatomy

Import all parts and piece them together.

vue
<script setup>
import {
  TimeFieldInput,
  TimeFieldRoot,
} from 'reka-ui'
</script>

<template>
  <TimeFieldRoot>
    <TimeFieldInput />
  </TimeFieldRoot>
</template>

API Reference

Root

Contains all the parts of a time field

PropDefaultType
as
'div'
AsTag | Component

The element or component this component should render as. Can be overwrite by asChild

asChild
boolean

Change the default rendered element for the one passed as a child, merging their props and behavior.

Read our Composition guide for more details.

defaultPlaceholder
TimeValue

The default placeholder date

defaultValue
TimeValue

The default value for the calendar

dir
'ltr' | 'rtl'

The reading direction of the time field when applicable.
If omitted, inherits globally from ConfigProvider or assumes LTR (left-to-right) reading mode.

disabled
false
boolean

Whether or not the time field is disabled

granularity
'hour' | 'minute' | 'second'

The granularity to use for formatting times. Defaults to minute if a Time is provided, otherwise defaults to minute. The field will render segments for each part of the date up to and including the specified granularity

hideTimeZone
boolean

Whether or not to hide the time zone segment of the field

hourCycle
12 | 24

The hour cycle used for formatting times. Defaults to the local preference

id
string

Id of the element

locale
string

The locale to use for formatting dates

maxValue
TimeValue

The maximum date that can be selected

minValue
TimeValue

The minimum date that can be selected

modelValue
TimeValue

The controlled checked state of the field. Can be bound as v-model.

name
string

The name of the field. Submitted with its owning form as part of a name/value pair.

placeholder
TimeValue

The placeholder date, which is used to determine what time to display when no time is selected. This updates as the user navigates the field

readonly
false
boolean

Whether or not the time field is readonly

required
boolean

When true, indicates that the user must set the value before the owning form can be submitted.

EmitPayload
update:modelValue
[date: TimeValue]

Event handler called whenever the model value changes

update:placeholder
[date: TimeValue]

Event handler called whenever the placeholder value changes

Slots (default)Payload
modelValue
TimeValue | undefined

The current time of the field

segments
{ part: SegmentPart; value: string; }[]

The time field segment contents

isInvalid
boolean

Value if the input is invalid

MethodsType
setFocusedElement
(el: HTMLElement) => void

Helper to set the focused element inside the DateField

Data AttributeValue
[data-readonly]Present when readonly
[data-disabled]Present when disabled
[data-invalid]Present when invalid

Input

Contains the time field segments

PropDefaultType
as
'div'
AsTag | Component

The element or component this component should render as. Can be overwrite by asChild

asChild
boolean

Change the default rendered element for the one passed as a child, merging their props and behavior.

Read our Composition guide for more details.

part*
'day' | 'month' | 'year' | 'hour' | 'minute' | 'second' | 'dayPeriod' | 'literal' | 'timeZoneName'

The part of the date to render

Data AttributeValue
[data-disabled]Present when disabled
[data-invalid]Present when invalid
[data-placeholder]Present when no value is set

Accessibility

Keyboard Interactions

KeyDescription
Tab
When focus moves onto the time field, focuses the first segment.
ArrowLeftArrowRight
Navigates between the time field segments.
ArrowUpArrowDown
Increments/changes the value of the segment.
0-9
When the focus is on a numeric TimeFieldInput, it types in the number and focuses the next segment if the next input would result in an invalid value.
Backspace
Deletes a digit from the focused numeric segments.
AP
When the focus is on the day period, it sets it to AM or PM.