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
  • BbCalendar: the calendar sits in the page, always visible, with no trigger

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

Passthrough

Hover or tap a part to outline it. The toggles turn on loading, errors and warnings where the component has them; only parts get a row.

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.

  • Send the supplier invoice Urgent
  • Draft the Q3 report
  • Renew the SSL certificate
  • Models: ["2026-08-31","2026-09-07",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).

Card statement forin fiscal year

Ranges and multiple dates

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

Revenue for

Model: ["2026-07-01","2026-07-31"]

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

Office closures

Days the booking calendar turns away.

  • Mon, Sep 7
  • Mon, Sep 21
  • Mon, Oct 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.

Publish the release notes

Not before Sun, Aug 30, 14:00

v-model 2026-08-30 · v-model:time 14: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.

Give min and max a time, as in 2026-08-30T14:00, when the bound is a moment: on that day the time rail disables the times outside it.

Available and marked days

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

Weekdays only; dots mark team events

Use day:append for a lightweight marker; each week grows to fit it. Use day only when you need to replace the day number. For one fixed date, name the slot after it: #2026-12-25:append. Do not add a parallel click guard: rejected dates are already disabled and announced as such.

Trigger and mobile surface

The activator slot used above is one of three ways to attach the picker. The activator prop wires a button you already have. v-bb-date turns a table cell into a trigger with no wrapper per row.

Open invoices
CustomerDue
Harbour Freight Co.
Lindqvist Studio
Orto Verde
Next reminder run: Mon, Aug 31

Each way gives the trigger the click handler, the anchor, the accessible name and the open state; with the slot, those are the props you bind. Give every picker a specific label. Screen readers announce the trigger as that label followed by its own text (“Due date for Lindqvist Studio Fri, Sep 11”), so keep the date visible.

On phones, adaptive opens the calendar in a bottom sheet. Title it through offCanvasProps, as both triggers here do, or set :adaptive="false" for viewport-independent tests.