Skip to content

BbDatePicker

Open a calendar from your own trigger to assign a day, range, month, year, or dated time.

import { BbDatePicker } from 'bitboss-ui';

On this page

Use it for

Use BbDatePicker to assign a date from a trigger you own, such as a due-date cell or booking chip.

Use something else when

  • BbDatePickerInput: people must type the value or submit it as a labelled form field
  • BbTimePicker: the value is a recurring wall-clock time with no date
  • BbPopover: the panel contains something other than a calendar

Pass Through

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

Decide whether the model represents a calendar label or an instant before building the trigger.

Choose the value first

Use floating for due dates, birthdays, report filters, and other calendar days. It emits YYYY-MM-DD, with no time or timezone to shift the day.

Model — null

Leave floating off when the value is an instant that different timezones may display differently. The model then carries a local offset; add utc only when the receiving API requires a Z timestamp. type="month" and type="year" always emit calendar labels (YYYY-MM and YYYY).

Coming from v2datetime → type

The v3 alpha boolean datetime was removed. Use type="datetime" on both the component and the v-bb-date directive.

Ranges and multiple dates

Use range for one continuous window. Keep its model as an array, including [] for the empty state.

["2026-09-07","2026-09-11"]

Use multiple for a set of independent days, months, or years.

2026-09-07, 2026-09-21, 2026-10-12

multiple cannot be combined with range or type="datetime"; both combinations throw.

Date and time

Use type="datetime" when the date and time identify one scheduled occurrence.

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

With floating, bind v-model:time: it is the only place the time is stored. Without floating, the time is already part of the instant. ampm changes only the display; the time model remains 24-hour.

Available and marked days

Set a continuous window with min and max, then use selectable for rules such as weekdays or stock availability.

No day picked

Use append:day for a lightweight marker. Use day only when you need to replace the day number. Do not add a parallel click guard: rejected dates are already disabled and announced as such.

Coming from v2Per-date slot names

v2 slot names used raw dates such as #2024-03-15. Replace hyphens with underscores: #2024_03_15.

Trigger and mobile surface

Spread the activator slot's props onto the clickable element. They provide the click handler, anchor, accessible label, and open state.

Give the picker a specific label, such as “Due date for task”. Focus enters the calendar on open and returns to the trigger on close. The grid already supports arrow keys, Home, End, Page Up, Page Down, Enter, and Space.

On mobile, adaptive opens the calendar in a bottom sheet. Pass sheet options through offCanvasProps; set :adaptive="false" for viewport-independent tests. Use the activator prop for an existing element, or v-bb-date for a bare table cell that does not need slot state.

Coming from v2The mobile sheet is on by default

v3 inherits adaptive from the plugin, where it defaults to true. Set :adaptive="false" to retain a popover on every viewport.