Skip to content

BbDatePickerInput

Enter a calendar day, range, month, year, or dated time in a labelled segmented field.

import { BbDatePickerInput } from 'bitboss-ui';

On this page

Use it for

Use BbDatePickerInput when people type or pick a date in a labelled form field.

Use something else when

  • BbDatePicker: the calendar opens from your own cell, chip, or button
  • BbTimePickerInput: the value is a recurring wall-clock time with no date
  • BbSelect: the choice is a short fixed list of periods

Pass Through

Hover or tap a part to outline it. Toggles flip loading, errors and warnings when the component has them — only parts highlight.

$
Date format MM/DD/YYYYUSD
Guidance while the control is focused.

Choose the value contract before adding validation or layout.

Calendar day or instant

Use floating when “2027-01-01” must stay that day everywhere. Use the default offset timestamp for an instant, and utc only when the receiving API requires Z.

Pick the same day — say 1 January 2027 — in all three fields and compare what each one emits.

Date format MM/DD/YYYY
null
Date format MM/DD/YYYY
null
Date format MM/DD/YYYY
null

The default emits a local-offset ISO timestamp. utc emits the same instant in UTC. floating emits only YYYY-MM-DD; it cannot be combined meaningfully with utc.

Coming from v2The default timezone output changed

v2 emitted UTC Z timestamps. v3 emits the local offset by default. Add utc to preserve the v2 wire format, or choose floating for a calendar day. Reading accepts all three forms, so stored values do not need rewriting.

For server-rendered pages, seed a floating value or start empty. A zoned instant may display different local digits on the server and in the browser.

A date field

Use a stable id, a visible label, and name when native form submission or FormData must include the value.

Date format MM/DD/YYYY

Model: "2026-08-30"

The field uses separate day, month, and year inputs. Typing auto-advances, separators move to the next segment, and a pasted date is distributed across them. Incomplete input does not update the model.

Date ranges

Set range for a check-in/check-out window and keep the model as an array.

Date format MM/DD/YYYY - MM/DD/YYYY

4 nights — ["2026-09-07","2026-09-11"]

Use [] for an empty range; null and scalar values throw during setup. A reversed typed range is swapped on commit and emits end_before_start.

Bounds and invalid input

Use min and max for a continuous window and selectable for rules such as weekdays or closures.

Date format MM/DD/YYYY

Bookable between 2026-08-30 and 2026-10-31. Closed: 2026-09-07, 2026-09-21, 2026-10-12.

Malformed bounds throw during setup. A typed disabled date is normalized on commit and reported through error; turn that payload into an application message with errors. Clear the message on active, not on the model update that normalization itself caused.

Other calendar values

Set type="month" or type="year" for calendar labels. They emit YYYY-MM or YYYY, force floating, and ignore timezone props.

Use type="datetime" only when a time belongs to a specific date.

Date format MM/DD/YYYY HH:MM

v-model → 2026-08-31 · v-model:time → 09:30

Date format MM/DD/YYYY HH:MM

12-hour fields, quarter-hour column — and still 14:30 in the model.

With floating, bind v-model:time; otherwise the selected time has no carrier. The companion model is always a 24-hour HH:mm or HH:mm:ss string.

Migrating from v2

Coming from v2Renamed and removed date-field props
  • Replace datetime with type="datetime".
  • Replace allow-writing with the inverted disable-writing.
  • Replace hide-popover with disable-calendar.
  • Replace offcanvas-props with off-canvas-props.
  • Remove width; constrain the calendar with CSS only when needed.
  • Replace has-warning with has-warnings.

The v2 token not-mobile becomes mobile for the inverted writing prop and desktop for disable-calendar.

The adaptive mobile sheet is now enabled by default. Set :adaptive="false" to retain a popover on every viewport.

adaptive opens the calendar in a bottom sheet on mobile. Pass options through offCanvasProps, or set :adaptive="false" for viewport-independent tests. Shared label, message, state, and validated-field props follow BbTextInput.