DateInput

DateInput 是一个允许用户使用键盘输入和编辑日期和时间值的组件。日期值的每个部分都显示在一个单独可编辑的片段中。


安装

上述命令仅用于单独安装。如果 @nextui-org/react 已全局安装,则可以跳过此步骤。

导入

用法

禁用

只读

必填

变体

标签位置

您可以通过将 labelPlacement 属性设置为 insideoutsideoutside-left 来更改标签的位置。

注意:如果未传递 label,则 labelPlacement 属性默认将为 outside

起始和结束内容

您可以使用 startContentendContent 属性在 DateInput 的开头和结尾添加内容。

带有描述

您可以通过传递 description 属性来向输入框添加描述。

带有错误消息

您可以结合使用 isInvaliderrorMessage 属性来显示无效输入。

您还可以将错误消息作为函数传递。这允许基于 ValidationResult 进行动态错误消息处理。

受控

您可以使用 valueonChange 属性来控制输入值。

时区

当提供 ZonedDateTime 对象作为值时,DateInput 可以感知时区。在这种情况下,将显示时区缩写,并且在操作值时会考虑诸如夏令时之类的时区问题。

@internationalized/date 包含将多种格式的字符串解析为 ZonedDateTime 对象的功能。

粒度

粒度属性允许您控制 DateInput 显示的最小单位。默认情况下,该值以“day”粒度(年、月和日)显示,并且 CalendarDateTimeZonedDateTime 值以“minute”粒度显示。

@internationalized/date 包含将多种格式的字符串解析为 ZonedDateTime 对象的功能。

最小日期和最大日期

minValue 和 maxValue 属性也可用于确保该值在特定范围内。

@internationalized/date 包含将多种格式的字符串解析为 ZonedDateTime 对象的功能。

国际日历

DateInput 支持选择世界各地使用的许多日历系统中的日期,包括公历、希伯来历、印度历、伊斯兰历、佛历等等。日期会自动以用户区域设置的相应日历系统显示。可以使用传递给 Unicode 日历区域设置扩展来覆盖日历系统,该扩展被传递给 I18nProvider 组件。

@internationalized/date 包含将多种格式的字符串解析为 ZonedDateTime 对象的功能。

隐藏时区

当向 DateInput 提供 ZonedDateTime 对象作为值时,默认情况下会显示时区缩写。但是,如果时区缩写显示在其他位置,或者根据用例是隐式的,则可以使用 hideTimeZone 选项将其隐藏。

@internationalized/date 包含将多种格式的字符串解析为 ZonedDateTime 对象的功能。

小时制

默认情况下,DateInput 根据用户的区域设置以 12 小时或 24 小时格式显示时间。但是,如果特定用例需要,可以使用 hourCycle 属性覆盖此设置。此示例强制 DateInput 使用 24 小时制时间,无论区域设置如何。

@internationalized/date 包含将多种格式的字符串解析为 ZonedDateTime 对象的功能。

插槽

  • base:输入包装器,它处理对齐、放置和整体外观。
  • label:日期输入的标签,它是在日期输入的上方、内部或左侧显示的标签。
  • inputWrapper:包装 label(当它在内部时)和 innerWrapper
  • input:日期输入元素。
  • innerWrapper:包装 inputstartContentendContent
  • clearButton:清除按钮,它位于输入的末尾。
  • helperWrapper:包装 descriptionerrorMessage
  • description: 日期输入的描述。
  • errorMessage: 日期输入的错误消息。

数据属性

DateInputbase 元素上具有以下属性

  • data-slot: 所有插槽都有这个属性。该元素代表哪个插槽(例如 slot)。
  • data-invalid: 当日期输入无效时。基于 isInvalid 属性。
  • data-required: 当日期输入为必填时。基于 isRequired 属性。
  • data-readonly: 当日期输入为只读时。基于 isReadOnly 属性。
  • data-disabled: 当日期输入被禁用时。基于 isDisabled 属性。
  • data-has-helper: 当日期输入有辅助文本时(errorMessagedescription)。基于这两个属性。
  • data-has-start-content: 当日期输入有开始内容时。基于 startContent 属性。
  • data-has-end-content: 当日期输入有结束内容时。基于 endContent 属性。

辅助功能

  • 使用原生 <input> 元素构建。
  • 支持视觉和 ARIA 标签。
  • 支持 change、剪贴板、组合、选择和 input 事件。
  • 通过 ARIA 向辅助技术暴露必填和无效状态。
  • 支持通过 ARIA 链接到输入的描述和错误消息辅助文本。
  • 每个日期和时间单位都显示为单独可聚焦和可编辑的段,这允许用户使用键盘以任何日期格式和区域设置轻松编辑日期。
  • 可以使用易于使用的数字键盘编辑日期段,并且可以使用基于触摸的屏幕阅读器访问所有交互。

API

DateInput 属性

属性类型默认值
label
ReactNode
value
DateValue
defaultValue
DateValue
variant
flat | bordered | faded | underlined
"flat"
color
default | primary | secondary | success | warning | danger
"default"
size
sm | md | lg
"md"
radius
none | sm | md | lg | full
placeholderValue
DateValue
minValue
DateValue
maxValue
DateValue
locale
string
description
ReactNode
errorMessage
ReactNode | (v: ValidationResult) => ReactNode
labelPlacement
inside | outside | outside-left
"inside"
isRequired
boolean
false
isReadOnly
boolean
isDisabled
boolean
false
isInvalid
boolean
false
autoFocus
boolean
false
hideTimeZone
boolean
false
disableAnimation
boolean
false

DateInput 事件

属性类型默认值
onChange
(value: ZonedDateTime | CalendarDate | CalendarDateTime) => void
onFocus
(e: FocusEvent<HTMLInputElement>) => void
onBlur
(e: FocusEvent<HTMLInputElement>) => void
onFocusChange
(isFocused: boolean) => void
onKeyDown
(e: KeyboardEvent) => void
onKeyUp
(e: KeyboardEvent) => void