Skip to content

BbDatePickerInput

Combines date selection with text input behavior.

import { BbDatePickerInput } from 'bitboss-ui';

On this page

Props

NameTypeDefaultDescription
adaptiveboolean | undefined`config.adaptive` (`true`)

On mobile the calendar opens inside a bottom off-canvas sheet instead of a floating popover, mirroring the adaptive behaviour of BbPopover/BbSelect. When unset, falls back to the global config.adaptive.

ampmboolean | undefinedfalse

12-hour display with an AM/PM segment (requires type="datetime"). Purely a field-composition concern: modelValue and the time model stay 24-hour regardless. Type A/P (or ArrowUp/Down) to set the meridiem.

append:iconstring | undefined-

Name of the icon to be added at the end of the input.

autocompletestring | undefined"off"

Guides the browser as to the type of information expected in the field.

autofocusBooleanish | undefined-

Sets autofocus on page load.

clearableboolean | undefinedfalse

Displays a clear button when the input has a value and is being interacted with.

compactboolean | undefinedfalse

Sets the component in a compact state.

descriptionstring | undefined-

Descriptive text displayed below the label and above the input. Unlike the hint it is always visible, and it is linked to the input via aria-describedby (after any errors / warnings, before the hint).

directionInputDirection | undefined-

Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like xx xxxxx.

disableCalendarboolean | "mobile" | "desktop" | undefinedfalse

Disables the calendar: hides the trigger button and prevents the popover from opening. Use 'desktop' to disable it on desktop only (keeping the calendar for mobile, complementing disableWriting: 'mobile') or 'mobile' to disable it on mobile only.

disabledboolean | undefinedfalse

Disables the component.

disableWritingboolean | "mobile" | "desktop" | undefinedfalse

Disables typing into the input. Use 'mobile' to disable typing only on mobile, 'desktop' to disable typing only on desktop.

errorsstring | string[] | undefined-

Can be a string or an array of string containing the messages to display. They render in an aria-live="polite" region (announced when they appear) and, while the list is non-empty, are referenced FIRST from the control's aria-describedby, so the reason the field is invalid is re-read whenever the control regains focus.

firstDayOfWeek0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined-

Defines the first day of the week with 0 meaning Sunday and 6 meaning Saturday.

floatingboolean | undefinedfalse

If true the date will have a format YYYY-MM-DD instead of the default ISO string.

hasErrorsboolean | undefinedfalse

Define if the component should be in an error state. It usually attaches a CSS class for styling purposes.

hasWarningsboolean | undefinedfalse

Define if the component should be in a warning state. Same chrome as errors with --bb-warn; errors take priority.

hideLabelboolean | undefinedfalse

Visually hides the label of the input while maintaining accessibility.

hintstring | undefined-

Text box to be displayed near the input, usually to indicate instructions.

idstring | undefined-

The identifier of the component.

labelrequiredstring-

Text content of the label of the element.

labelMode"outside" | "floating" | "inside" | undefined-

Label rendering mode.

labelPosition"left" | "center" | "right" | undefined-

Sets the text alignment of the label.

loadingboolean | undefinedfalse

Sets the component in a loading state, usually triggering some visual styles.

maxstring | undefined-

Maximum selectable date in YYYY-MM-DD format — or, with type="datetime", YYYY-MM-DDTHH:mm to tighten the boundary day to a minute. Values outside both patterns throw during setup to surface configuration mistakes.

minstring | undefined-

Minimum selectable date in YYYY-MM-DD format — or, with type="datetime", YYYY-MM-DDTHH:mm to tighten the boundary day to a minute. Values outside both patterns throw during setup to surface configuration mistakes.

modelValuerequiredstring | string[] | null-

Used by v-model. Can be null, a single string, or an array of strings based on whether a range or single date is needed.

namestring | undefined-

Defines the name of the input.

offCanvasPropsPartial<BbOffCanvasProps> | undefined-

Props for the phone sheet. A pt inside it, object or colon keys, styles only that sheet. Extra props forwarded to the BbOffCanvas sheet when adaptive is active on mobile (e.g. title, size, persistent). Spread over the defaults: the sheet is draggable (the time wheels and the year list never drag it) and hides its ✕ (picking, backdrop, Escape and drag close it); pass { hideClose: false } to bring the ✕ back. A pt inside it styles ONLY the sheet, in BbOffCanvas's part words (root, header, title, description, content, footer, close; state open), object ({ pt: { header: '…' } }) or colon keys ({ 'pt:header': '…' }) alike. It merges after what this component forwards to its sheet, so it wins a conflict and drops nothing — see the passthrough guide § Inside the sheet. For this component it is the only way to style the sheet's header, title and ✕: its own pt:header is the calendar's navigation bar.

persistentHintboolean | undefinedfalse

Keeps the hint displayed.

placeholderstring | undefined-

String displayed when there's no data.

prepend:iconstring | undefined-

Name of the icon to be added at the start of the input.

ptPtMap<BbDatePickerInputPtPart, BbDatePickerInputPtState> | undefined-

Passthrough, object form: the same keys as the pt:* attributes without the prefix. See the pt:<part> row.

pt:activatorPtValue | undefined-
pt:activator:activePtValue | undefined-
pt:activator:disabledPtValue | undefined-
pt:activator:errorsPtValue | undefined-
pt:activator:has-valuePtValue | undefined-
pt:activator:highlightedPtValue | undefined-
pt:activator:in-rangePtValue | undefined-
pt:activator:loadingPtValue | undefined-
pt:activator:openPtValue | undefined-
pt:activator:outsidePtValue | undefined-
pt:activator:range-endPtValue | undefined-
pt:activator:range-startPtValue | undefined-
pt:activator:readonlyPtValue | undefined-
pt:activator:selectedPtValue | undefined-
pt:activator:todayPtValue | undefined-
pt:activator:warningsPtValue | undefined-
pt:arrowPtValue | undefined-
pt:arrow:activePtValue | undefined-
pt:arrow:disabledPtValue | undefined-
pt:arrow:errorsPtValue | undefined-
pt:arrow:has-valuePtValue | undefined-
pt:arrow:highlightedPtValue | undefined-
pt:arrow:in-rangePtValue | undefined-
pt:arrow:loadingPtValue | undefined-
pt:arrow:openPtValue | undefined-
pt:arrow:outsidePtValue | undefined-
pt:arrow:range-endPtValue | undefined-
pt:arrow:range-startPtValue | undefined-
pt:arrow:readonlyPtValue | undefined-
pt:arrow:selectedPtValue | undefined-
pt:arrow:todayPtValue | undefined-
pt:arrow:warningsPtValue | undefined-
pt:boxPtValue | undefined-
pt:box:activePtValue | undefined-
pt:box:disabledPtValue | undefined-
pt:box:errorsPtValue | undefined-
pt:box:has-valuePtValue | undefined-
pt:box:highlightedPtValue | undefined-
pt:box:in-rangePtValue | undefined-
pt:box:loadingPtValue | undefined-
pt:box:openPtValue | undefined-
pt:box:outsidePtValue | undefined-
pt:box:range-endPtValue | undefined-
pt:box:range-startPtValue | undefined-
pt:box:readonlyPtValue | undefined-
pt:box:selectedPtValue | undefined-
pt:box:todayPtValue | undefined-
pt:box:warningsPtValue | undefined-
pt:clearPtValue | undefined-
pt:clear:activePtValue | undefined-
pt:clear:disabledPtValue | undefined-
pt:clear:errorsPtValue | undefined-
pt:clear:has-valuePtValue | undefined-
pt:clear:highlightedPtValue | undefined-
pt:clear:in-rangePtValue | undefined-
pt:clear:loadingPtValue | undefined-
pt:clear:openPtValue | undefined-
pt:clear:outsidePtValue | undefined-
pt:clear:range-endPtValue | undefined-
pt:clear:range-startPtValue | undefined-
pt:clear:readonlyPtValue | undefined-
pt:clear:selectedPtValue | undefined-
pt:clear:todayPtValue | undefined-
pt:clear:warningsPtValue | undefined-
pt:column-headerPtValue | undefined-
pt:column-header:activePtValue | undefined-
pt:column-header:disabledPtValue | undefined-
pt:column-header:errorsPtValue | undefined-
pt:column-header:has-valuePtValue | undefined-
pt:column-header:highlightedPtValue | undefined-
pt:column-header:in-rangePtValue | undefined-
pt:column-header:loadingPtValue | undefined-
pt:column-header:openPtValue | undefined-
pt:column-header:outsidePtValue | undefined-
pt:column-header:range-endPtValue | undefined-
pt:column-header:range-startPtValue | undefined-
pt:column-header:readonlyPtValue | undefined-
pt:column-header:selectedPtValue | undefined-
pt:column-header:todayPtValue | undefined-
pt:column-header:warningsPtValue | undefined-
pt:dayPtValue | undefined-
pt:day-buttonPtValue | undefined-
pt:day-button:activePtValue | undefined-
pt:day-button:disabledPtValue | undefined-
pt:day-button:errorsPtValue | undefined-
pt:day-button:has-valuePtValue | undefined-
pt:day-button:highlightedPtValue | undefined-
pt:day-button:in-rangePtValue | undefined-
pt:day-button:loadingPtValue | undefined-
pt:day-button:openPtValue | undefined-
pt:day-button:outsidePtValue | undefined-
pt:day-button:range-endPtValue | undefined-
pt:day-button:range-startPtValue | undefined-
pt:day-button:readonlyPtValue | undefined-
pt:day-button:selectedPtValue | undefined-
pt:day-button:todayPtValue | undefined-
pt:day-button:warningsPtValue | undefined-
pt:day:activePtValue | undefined-
pt:day:disabledPtValue | undefined-
pt:day:errorsPtValue | undefined-
pt:day:has-valuePtValue | undefined-
pt:day:highlightedPtValue | undefined-
pt:day:in-rangePtValue | undefined-
pt:day:loadingPtValue | undefined-
pt:day:openPtValue | undefined-
pt:day:outsidePtValue | undefined-
pt:day:range-endPtValue | undefined-
pt:day:range-startPtValue | undefined-
pt:day:readonlyPtValue | undefined-
pt:day:selectedPtValue | undefined-
pt:day:todayPtValue | undefined-
pt:day:warningsPtValue | undefined-
pt:descriptionPtValue | undefined-
pt:description:activePtValue | undefined-
pt:description:disabledPtValue | undefined-
pt:description:errorsPtValue | undefined-
pt:description:has-valuePtValue | undefined-
pt:description:highlightedPtValue | undefined-
pt:description:in-rangePtValue | undefined-
pt:description:loadingPtValue | undefined-
pt:description:openPtValue | undefined-
pt:description:outsidePtValue | undefined-
pt:description:range-endPtValue | undefined-
pt:description:range-startPtValue | undefined-
pt:description:readonlyPtValue | undefined-
pt:description:selectedPtValue | undefined-
pt:description:todayPtValue | undefined-
pt:description:warningsPtValue | undefined-
pt:headerPtValue | undefined-
pt:header:activePtValue | undefined-
pt:header:disabledPtValue | undefined-
pt:header:errorsPtValue | undefined-
pt:header:has-valuePtValue | undefined-
pt:header:highlightedPtValue | undefined-
pt:header:in-rangePtValue | undefined-
pt:header:loadingPtValue | undefined-
pt:header:openPtValue | undefined-
pt:header:outsidePtValue | undefined-
pt:header:range-endPtValue | undefined-
pt:header:range-startPtValue | undefined-
pt:header:readonlyPtValue | undefined-
pt:header:selectedPtValue | undefined-
pt:header:todayPtValue | undefined-
pt:header:warningsPtValue | undefined-
pt:hintPtValue | undefined-
pt:hint:activePtValue | undefined-
pt:hint:disabledPtValue | undefined-
pt:hint:errorsPtValue | undefined-
pt:hint:has-valuePtValue | undefined-
pt:hint:highlightedPtValue | undefined-
pt:hint:in-rangePtValue | undefined-
pt:hint:loadingPtValue | undefined-
pt:hint:openPtValue | undefined-
pt:hint:outsidePtValue | undefined-
pt:hint:range-endPtValue | undefined-
pt:hint:range-startPtValue | undefined-
pt:hint:readonlyPtValue | undefined-
pt:hint:selectedPtValue | undefined-
pt:hint:todayPtValue | undefined-
pt:hint:warningsPtValue | undefined-
pt:iconPtValue | undefined-
pt:icon:activePtValue | undefined-
pt:icon:disabledPtValue | undefined-
pt:icon:errorsPtValue | undefined-
pt:icon:has-valuePtValue | undefined-
pt:icon:highlightedPtValue | undefined-
pt:icon:in-rangePtValue | undefined-
pt:icon:loadingPtValue | undefined-
pt:icon:openPtValue | undefined-
pt:icon:outsidePtValue | undefined-
pt:icon:range-endPtValue | undefined-
pt:icon:range-startPtValue | undefined-
pt:icon:readonlyPtValue | undefined-
pt:icon:selectedPtValue | undefined-
pt:icon:todayPtValue | undefined-
pt:icon:warningsPtValue | undefined-
pt:inputPtValue | undefined-
pt:input:activePtValue | undefined-
pt:input:disabledPtValue | undefined-
pt:input:errorsPtValue | undefined-
pt:input:has-valuePtValue | undefined-
pt:input:highlightedPtValue | undefined-
pt:input:in-rangePtValue | undefined-
pt:input:loadingPtValue | undefined-
pt:input:openPtValue | undefined-
pt:input:outsidePtValue | undefined-
pt:input:range-endPtValue | undefined-
pt:input:range-startPtValue | undefined-
pt:input:readonlyPtValue | undefined-
pt:input:selectedPtValue | undefined-
pt:input:todayPtValue | undefined-
pt:input:warningsPtValue | undefined-
pt:labelPtValue | undefined-
pt:label:activePtValue | undefined-
pt:label:disabledPtValue | undefined-
pt:label:errorsPtValue | undefined-
pt:label:has-valuePtValue | undefined-
pt:label:highlightedPtValue | undefined-
pt:label:in-rangePtValue | undefined-
pt:label:loadingPtValue | undefined-
pt:label:openPtValue | undefined-
pt:label:outsidePtValue | undefined-
pt:label:range-endPtValue | undefined-
pt:label:range-startPtValue | undefined-
pt:label:readonlyPtValue | undefined-
pt:label:selectedPtValue | undefined-
pt:label:todayPtValue | undefined-
pt:label:warningsPtValue | undefined-
pt:messagePtValue | undefined-
pt:message:activePtValue | undefined-
pt:message:disabledPtValue | undefined-
pt:message:errorsPtValue | undefined-
pt:message:has-valuePtValue | undefined-
pt:message:highlightedPtValue | undefined-
pt:message:in-rangePtValue | undefined-
pt:message:loadingPtValue | undefined-
pt:message:openPtValue | undefined-
pt:message:outsidePtValue | undefined-
pt:message:range-endPtValue | undefined-
pt:message:range-startPtValue | undefined-
pt:message:readonlyPtValue | undefined-
pt:message:selectedPtValue | undefined-
pt:message:todayPtValue | undefined-
pt:message:warningsPtValue | undefined-
pt:monthPtValue | undefined-
pt:month-itemPtValue | undefined-
pt:month-item:activePtValue | undefined-
pt:month-item:disabledPtValue | undefined-
pt:month-item:errorsPtValue | undefined-
pt:month-item:has-valuePtValue | undefined-
pt:month-item:highlightedPtValue | undefined-
pt:month-item:in-rangePtValue | undefined-
pt:month-item:loadingPtValue | undefined-
pt:month-item:openPtValue | undefined-
pt:month-item:outsidePtValue | undefined-
pt:month-item:range-endPtValue | undefined-
pt:month-item:range-startPtValue | undefined-
pt:month-item:readonlyPtValue | undefined-
pt:month-item:selectedPtValue | undefined-
pt:month-item:todayPtValue | undefined-
pt:month-item:warningsPtValue | undefined-
pt:month:activePtValue | undefined-
pt:month:disabledPtValue | undefined-
pt:month:errorsPtValue | undefined-
pt:month:has-valuePtValue | undefined-
pt:month:highlightedPtValue | undefined-
pt:month:in-rangePtValue | undefined-
pt:month:loadingPtValue | undefined-
pt:month:openPtValue | undefined-
pt:month:outsidePtValue | undefined-
pt:month:range-endPtValue | undefined-
pt:month:range-startPtValue | undefined-
pt:month:readonlyPtValue | undefined-
pt:month:selectedPtValue | undefined-
pt:month:todayPtValue | undefined-
pt:month:warningsPtValue | undefined-
pt:panelPtValue | undefined-
pt:panel:activePtValue | undefined-
pt:panel:disabledPtValue | undefined-
pt:panel:errorsPtValue | undefined-
pt:panel:has-valuePtValue | undefined-
pt:panel:highlightedPtValue | undefined-
pt:panel:in-rangePtValue | undefined-
pt:panel:loadingPtValue | undefined-
pt:panel:openPtValue | undefined-
pt:panel:outsidePtValue | undefined-
pt:panel:range-endPtValue | undefined-
pt:panel:range-startPtValue | undefined-
pt:panel:readonlyPtValue | undefined-
pt:panel:selectedPtValue | undefined-
pt:panel:todayPtValue | undefined-
pt:panel:warningsPtValue | undefined-
pt:prefixPtValue | undefined-
pt:prefix:activePtValue | undefined-
pt:prefix:disabledPtValue | undefined-
pt:prefix:errorsPtValue | undefined-
pt:prefix:has-valuePtValue | undefined-
pt:prefix:highlightedPtValue | undefined-
pt:prefix:in-rangePtValue | undefined-
pt:prefix:loadingPtValue | undefined-
pt:prefix:openPtValue | undefined-
pt:prefix:outsidePtValue | undefined-
pt:prefix:range-endPtValue | undefined-
pt:prefix:range-startPtValue | undefined-
pt:prefix:readonlyPtValue | undefined-
pt:prefix:selectedPtValue | undefined-
pt:prefix:todayPtValue | undefined-
pt:prefix:warningsPtValue | undefined-
pt:rootPtValue | undefined-
pt:root:activePtValue | undefined-
pt:root:disabledPtValue | undefined-
pt:root:errorsPtValue | undefined-
pt:root:has-valuePtValue | undefined-
pt:root:highlightedPtValue | undefined-
pt:root:in-rangePtValue | undefined-
pt:root:loadingPtValue | undefined-
pt:root:openPtValue | undefined-
pt:root:outsidePtValue | undefined-
pt:root:range-endPtValue | undefined-
pt:root:range-startPtValue | undefined-
pt:root:readonlyPtValue | undefined-
pt:root:selectedPtValue | undefined-
pt:root:todayPtValue | undefined-
pt:root:warningsPtValue | undefined-
pt:sheetPtValue | undefined-
pt:sheet:activePtValue | undefined-
pt:sheet:disabledPtValue | undefined-
pt:sheet:errorsPtValue | undefined-
pt:sheet:has-valuePtValue | undefined-
pt:sheet:highlightedPtValue | undefined-
pt:sheet:in-rangePtValue | undefined-
pt:sheet:loadingPtValue | undefined-
pt:sheet:openPtValue | undefined-
pt:sheet:outsidePtValue | undefined-
pt:sheet:range-endPtValue | undefined-
pt:sheet:range-startPtValue | undefined-
pt:sheet:readonlyPtValue | undefined-
pt:sheet:selectedPtValue | undefined-
pt:sheet:todayPtValue | undefined-
pt:sheet:warningsPtValue | undefined-
pt:spinnerPtValue | undefined-
pt:spinner:activePtValue | undefined-
pt:spinner:disabledPtValue | undefined-
pt:spinner:errorsPtValue | undefined-
pt:spinner:has-valuePtValue | undefined-
pt:spinner:highlightedPtValue | undefined-
pt:spinner:in-rangePtValue | undefined-
pt:spinner:loadingPtValue | undefined-
pt:spinner:openPtValue | undefined-
pt:spinner:outsidePtValue | undefined-
pt:spinner:range-endPtValue | undefined-
pt:spinner:range-startPtValue | undefined-
pt:spinner:readonlyPtValue | undefined-
pt:spinner:selectedPtValue | undefined-
pt:spinner:todayPtValue | undefined-
pt:spinner:warningsPtValue | undefined-
pt:suffixPtValue | undefined-
pt:suffix:activePtValue | undefined-
pt:suffix:disabledPtValue | undefined-
pt:suffix:errorsPtValue | undefined-
pt:suffix:has-valuePtValue | undefined-
pt:suffix:highlightedPtValue | undefined-
pt:suffix:in-rangePtValue | undefined-
pt:suffix:loadingPtValue | undefined-
pt:suffix:openPtValue | undefined-
pt:suffix:outsidePtValue | undefined-
pt:suffix:range-endPtValue | undefined-
pt:suffix:range-startPtValue | undefined-
pt:suffix:readonlyPtValue | undefined-
pt:suffix:selectedPtValue | undefined-
pt:suffix:todayPtValue | undefined-
pt:suffix:warningsPtValue | undefined-
pt:yearPtValue | undefined-
pt:year-itemPtValue | undefined-
pt:year-item:activePtValue | undefined-
pt:year-item:disabledPtValue | undefined-
pt:year-item:errorsPtValue | undefined-
pt:year-item:has-valuePtValue | undefined-
pt:year-item:highlightedPtValue | undefined-
pt:year-item:in-rangePtValue | undefined-
pt:year-item:loadingPtValue | undefined-
pt:year-item:openPtValue | undefined-
pt:year-item:outsidePtValue | undefined-
pt:year-item:range-endPtValue | undefined-
pt:year-item:range-startPtValue | undefined-
pt:year-item:readonlyPtValue | undefined-
pt:year-item:selectedPtValue | undefined-
pt:year-item:todayPtValue | undefined-
pt:year-item:warningsPtValue | undefined-
pt:year:activePtValue | undefined-
pt:year:disabledPtValue | undefined-
pt:year:errorsPtValue | undefined-
pt:year:has-valuePtValue | undefined-
pt:year:highlightedPtValue | undefined-
pt:year:in-rangePtValue | undefined-
pt:year:loadingPtValue | undefined-
pt:year:openPtValue | undefined-
pt:year:outsidePtValue | undefined-
pt:year:range-endPtValue | undefined-
pt:year:range-startPtValue | undefined-
pt:year:readonlyPtValue | undefined-
pt:year:selectedPtValue | undefined-
pt:year:todayPtValue | undefined-
pt:year:warningsPtValue | undefined-
rangeboolean | undefinedfalse

Selects a range of dates between two dates. It selects all of the days between start and end.

readonlyboolean | undefinedfalse

Sets the input in a readonly state.

requiredboolean | undefinedfalse

Sets the input as required.

reverseboolean | undefinedfalse

Reverses the layout. Applicable in every direction the order of the label and the input is swapped.

secondsboolean | undefinedfalse

Adds the seconds segment (requires type="datetime"). Without it, an incoming value carrying seconds displays truncated and is left untouched until the user commits an edit, at which point seconds zero out.

selectable((date: string) => boolean) | undefined-

Function that accepts a string object and returns a boolean. false meaning the date cannot be selected.

stepnumber | undefined1

Minute granularity for the calendar's minute column and arrow stepping (requires type="datetime"). Constrains what the component produces, never what it accepts: a typed off-grid value (e.g. 10:07 with step: 15) is emitted verbatim, and no column row highlights for it.

timestring | string[] | null | undefined-

Companion model for the time part (v-model:time), always 24-hour HH:mm / HH:mm:ss regardless of display. With floating it is the only carrier of the time; otherwise it mirrors the time inside modelValue (same digits) and writing it rewrites the model's time part. Requires type="datetime".

transitionDurationnumber | undefined-

Transition duration, in milliseconds, for the popover appearance.

typeDatePickerType | undefined"date"

What the field edits, and therefore its segments and emitted shape. - date (default) — DD/MM/YYYY. - datetime — adds the time segments and the calendar's time rail. - monthMM/YYYY, emitting YYYY-MM. - yearYYYY, emitting YYYY. month/year are calendar labels: they force floating, ignore utc, and make the time props (seconds, ampm, step, v-model:time) inert.

utcboolean | undefinedfalse

Emits values as UTC ISO strings (...Z) instead of ISO strings carrying the local offset (...+01:00). Emission-only: incoming values are parsed identically either way, so the prop can be added or removed without touching stored values. Fields always display local time — UTC is a backend concern. Ignored when floating is set (a plain date has no zone).

variantInputVariantType | undefined'outline'

Visual variant of the field box — the same names and tokens as the BbButton variants. Colours only: height, padding and border width are identical across variants, so a form never reflows when one changes. 'ghost' has no border in any state (errors and warnings show through the icon and the messages); every variant keeps the focus ring. Register extra names with the plugin's inputVariants option.

warningsstring | string[] | undefined-

Warning messages to display beneath the field, in their own aria-live region and amber (--bb-text-warn). A string or array; a non-empty list implies the warning state. Errors suppress warnings when both are set. While displayed they are also referenced from the control's aria-describedby, after any errors and before the description/hint.

v-model

Values kept in sync through v-model.

NameTypeDescription
modelValuestring | string[] | null
timestring | string[] | null | undefined

Events

NameTypeDescription
active(event: "active"): void
error(event: "error", error: DatePickerInputError): void
focus(event: "focus", event: FocusEvent): void
hidden(event: "hidden"): void
hide(event: "hide"): void
inactive(event: "inactive"): void
show(event: "show"): void
shown(event: "shown"): void
update:modelValue(event: "update:modelValue", value: string | string[] | null): void
update:time(event: "update:time", value: string | string[] | null): void

Slots

The listed properties are the ones exposed to the slot scope.

NameTypeDescription
<YYYY_MM_DD>BbCalendarDaySlotProps

One date's button label (e.g. #2024_03_15: the local YYYY-MM-DD through slotKey); beats day. Day grid only.

appendobject

Content rendered after the date fields, at the end of the field box (before the calendar toggle button).

append-outerobject

Content rendered after the entire date picker control, outside the input chrome.

append:<YYYY_MM_DD>BbCalendarDaySlotProps

Content under one date's cell; beats append:day.

append:day{ first: boolean; item: Dayjs; label: string; last: boolean; middle: boolean; outside: boolean; selected: boolean; }

Appends content below each calendar day.

day{ first: boolean; item: Dayjs; label: string; last: boolean; middle: boolean; outside: boolean; selected: boolean; }

Replaces the day button label inside each calendar day.

descriptionBbDatePickerInputDescriptionSlotProps

Replaces the description text. Provided alone (no description prop) it still renders the description region and wires it into aria-describedby.

labelBbDatePickerInputLabelSlotProps

Replaces the default label text rendered above the date picker.

prefixobject

Inline content rendered at the start of the input field area, before the date fields.

prependobject

Content rendered before the date fields, at the start of the field box.

prepend-outerobject

Content rendered before the entire date picker control, outside the input chrome.

suffixobject

Inline content rendered at the end of the input field area, after the date fields.

Changes from v2

Props removed or renamed in 3.0. If you are coming from v2, the answer is here.

  • allowWritingdisableWritingfails silently
  • datetimetypefails silently
  • hasWarninghasWarningsfails silently
  • hidePopoverdisableCalendarfails silently
  • offcanvasPropsoffCanvasPropsfails silently
  • widthremovedfails silently