Flexible Selection
Pick a single date, several dates or a range, with an integrated time picker in the same element.
Newed UI - Component Library
Date/Time Picker (Multi-Mode) is the date and time input Bubble was always missing. Built to replace the native element and go far beyond what most plugins offer, it brings single, multiple, and range date selection together with a fully integrated time picker in one polished component. Fully customizable through over 100 properties, giving you complete control over every visual and behavioral detail.
No data collected This plugin does not collect user data.
Pick a single date, several dates or a range, with an integrated time picker in the same element.
Built in support for any BCP 47 locale and IANA timezone, with automatic fallbacks and correct handling across regions.
Preselect dates and times, block specific days, weekdays or time ranges, and set selection limits with clear visual feedback.
Over 100 properties for colors, shapes, animations and glass effects, with every visual state under your control.
Open and close the panel with Enter, Space and Escape, with an accessible label and description read by screen readers.
Read the dates from exposed states, trigger Reset and Focus from any workflow, and react to the value changed event.
Place the plugin element wherever you need it.
Adjust the settings to match your use case.
Use the value changed event to capture confirmed selections and read the exposed states to use the selected values anywhere in your app.
The properties below cover everything that is not natively available for Bubble inputs. For basic settings such as font, background, borders, padding, and box shadow, use Bubble's native properties.
Sets the selection mode to date only, time only, or both.
datetimedatetimedefaultdatetime
Sets the date selection mode to single date, multiple dates, or date range.
singlemultiplerangedefaultsingle
Use BCP 47 format with a hyphen (e.g. en-US, pt-BR) to format dates, month names, weekday labels and timepicker column labels. Invalid values automatically fall back to en-US. Consult the documentation for a list of supported languages.
defaulten-US
Sets whether the component uses the user’s system timezone or a custom timezone.
localcustomdefaultlocal
Only used when timezone mode is set to custom. Always use a valid IANA identifier (e.g. America/New_York, Europe/London). Invalid values automatically fall back to UTC.
defaultUTC
Text displayed in the input while it has no value.
defaultSelect a datetime...
Color of the placeholder text.
default#AAAAAA
Controls whether the input icon is displayed.
defaultyes
Icon displayed in the input. With auto, the icon follows the input type (date, datetime or time) in its outline version.
autocalendarcalendar outlinecalendar simplecalendar simple outlinecalendar eventcalendar event outlinecalendar rangecalendar range outlinecalendar clockcalendar clock outlineclockclock outlinealarmalarm outlinedefaultauto
Icon size in pixels. When empty, it is calculated from the input font size.
defaultno default
optionalColor of the input icon.
default#CACACA
Whether the icon appears to the left or right of the input text.
leftrightdefaultleft
Sets the date format displayed in the input and tooltip.
31/12/202031/12/2012/31/202012/31/202020/12/3131-12-202031-12-2012-31-202012-31-202020-12-3131.12.202031.12.2012.31.202012.31.202020.12.31default31/12/2020
Sets the time format displayed in the input, tooltip, and time picker. It also controls whether the time picker uses a 12-hour or 24-hour format and whether the AM/PM tabs are displayed.
1:22 pm01:22 pm1:22:44 pm01:22:44 pm1:22 PM01:22 PM1:22:44 PM01:22:44 PM13:2213:22:44default1:22 pm
Displays the time alongside dates in the input label when the mode is range + datetime.
defaultno
Displays a tooltip on hover showing all selected dates.
defaultno
Time (in milliseconds) before the tooltip appears after hover.
default400
Sets the default date for the single mode. Applied when the component loads or is reset, and updated when the source value changes. User-confirmed values are preserved. In datetime and time modes, the default time fields override its time.
defaultno default
optionalSets the default list of dates for the multiple mode. Applied when the component loads or is reset, and updated when the source list changes. User-confirmed values are preserved. In datetime mode, the default time fields override the time of each date.
defaultno default
optionalSets the default start date for the range mode. Applied when the component loads or is reset, and updated when the source value changes. User-confirmed values are preserved. In datetime mode, the default time fields override the start and end time of the range.
defaultno default
optionalSets the default end date for the range mode. Applied when the component loads or is reset, and updated when the source value changes. User-confirmed values are preserved. In datetime mode, the default time fields override the start and end time of the range.
defaultno default
optionalSets the default hour (0-23). When a default date is configured, overrides its hour in datetime and time modes. Without a default date, sets the input value in time mode, or only preselects it in the time picker in datetime mode. No effect in date mode.
defaultno default
optionalSets the default minute (0-59). When a default date is configured, overrides its minute in datetime and time modes. Without a default date, sets the input value in time mode, or only preselects it in the time picker in datetime mode. No effect in date mode.
defaultno default
optionalSets the default second (0-59). When a default date is configured, overrides its second in datetime and time modes. Without a default date, sets the input value in time mode, or only preselects it in the time picker in datetime mode. No effect in date mode.
defaultno default
optionalSets the maximum number of selections. A value of 0 means there is no limit. In multiple mode, it limits the number of dates that can be selected. In range mode, it limits the number of days in the selected range. This property has no effect in single mode.
default0
Message displayed inside the panel when the selection limit is reached.
defaultMaximum selections reached!
Font color of the limit reached message.
default#FF6666
Sets the minimum selectable date. Earlier dates are blocked.
defaultno default
optionalSets the maximum selectable date. Later dates are blocked.
defaultno default
optionalSets the list of specific dates blocked from selection.
defaultno default
optionalDisables all Mondays from selection. A disabled weekday inside a range rejects the entire interval.
defaultno
Disables all Tuesdays from selection. A disabled weekday inside a range rejects the entire interval.
defaultno
Disables all Wednesdays from selection. A disabled weekday inside a range rejects the entire interval.
defaultno
Disables all Thursdays from selection. A disabled weekday inside a range rejects the entire interval.
defaultno
Disables all Fridays from selection. A disabled weekday inside a range rejects the entire interval.
defaultno
Disables Saturdays from selection. A disabled weekday inside a range rejects the entire interval.
defaultno
Disables all Sundays from selection. A disabled weekday inside a range rejects the entire interval.
defaultno
Sets the minimum selectable hour in the time picker columns (0–23). Options outside the limit are shown as disabled.
defaultno default
optionalSets the maximum selectable hour in the time picker columns (0–23). Options outside the limit are shown as disabled.
defaultno default
optionalSets the minimum selectable minute in the time picker columns (0–59). Options outside the limit are shown as disabled.
defaultno default
optionalSets the maximum selectable minute in the time picker columns (0–59). Options outside the limit are shown as disabled.Maximum selectable minute in the time picker columns (0–59). Options outside the limit are shown as disabled.aximum selectable minute in the time picker columns (0–59). Options outside the limit are shown as disabled.Maximum selectable minute in the time picker columns (0–59). Options outside the limit are shown as disabled.
defaultno default
optionalColor of the divider lines inside the panel.
default#EEEEEE
Background color of navigation elements on hover.
default#F4F4F4
Color of navigation texts and icons in the panel.
defaultno default
optionalPreferred or forced opening direction of the floating panel relative to the input.
auto-topauto-bottomtopbottomdefaultauto-bottom
Opening animation of the floating panel.
nonedropelasticexpandfadepopslidezoomdefaultfade
Background color of the floating panel.
default#FFFFFF
Border color of the floating panel.
defaultno default
optionalIntensity of the glassmorphism effect on the floating panel.
nonesubtlelightmediumstrongintensedefaultnone
Sets which view level is displayed when the calendar opens.
daysmonthsyearsdefaultdays
Controls the capitalization style of the weekday labels in the calendar header.
capitalizelowercaseuppercasedefaultcapitalize
Color of the weekday labels in the calendar header.
default#AAAAAA
Displays only the first letter of the weekday.
defaultno
Sets which day starts the calendar in days view mode.
sundaymondaydefaultsunday
Displays the days of the previous and next months in the calendar.
defaultyes
Controls the click behavior on adjacent month cells.
disable interactionenable selection onlyenable go to onlyenable selection and go todefaultdisable interaction
Displays the seconds column in the time picker. Only takes effect when the configured time display format includes seconds (ss).
defaultno
Border color of the hour, minute, and second columns.
default#EEEEEE
Color of the column title labels (Hours, Minutes, Seconds).
default#AAAAAA
Sets the interval between options in the hour column. The current value (default or selected) is always included even outside the step.
default1
Sets the interval between options in the minute column. The current value (default or selected) is always included even outside the step.
default1
Sets the interval between options in the second column. The current value (default or selected) is always included even outside the step.
default1
Sets the shape of day cells in the calendar.
circlesquaredefaultcircle
Sets the shape of options in the time picker columns.
circlesquaredefaultcircle
Background color of today's date and the current time option.
defaultno default
optionalBorder color of today's date cell.
default#4DBEFF
Text color of today's date and the current month/year in their selectors.
default#4DBEFF
Background color of available cells.
defaultno default
optionalBorder color of available cells.
defaultno default
optionalText color of available cells.
defaultno default
optionalBackground color of cells on hover.
default#F4F4F4
Border color of cells on hover.
defaultno default
optionalText color of cells on hover.
defaultno default
optionalBackground color of selected cells.
default#4DBEFF
Border color of selected cells.
default#4DBEFF
Text color of selected cells.
default#FFFFFF
Background color of blocked cells.
default#F4F4F4
Border color of blocked cells.
default#EEEEEE
Text color of blocked cells.
default#AAAAAA
Applies strikethrough to blocked calendar day cells.
defaultno
Applies strikethrough to blocked time picker options.
defaultno
Disables the component, preventing any interaction.
defaultno
Input background color when disabled.
default#F4F4F4
Input border color when disabled.
default#CACACA
Input font color when disabled.
default#CACACA
Marks the field as required and enables input validation. When enabled, the element evaluates whether a value is selected and publishes the **is valid**state accordingly.
defaultno
Input background color when invalid (required with no value).
default#FFDEDE
Input border color when invalid (required with no value).
default#FF6666
Input background color when focused.
default#FFFFFF
Input border color when focused.
default#30B3FE
Name read by screen readers. When empty, uses the placeholder or the visible label.
defaultno default
optionalHint read by screen readers after the name. Empty for none.
defaultno default
optionalValues the element exposes for the rest of the page to read.
The confirmed date when the selection mode is single. Empty if no date is confirmed or another selection mode is active. In time mode, the date portion is irrelevant, use the time portion or use the state 'selected time (total seconds)' to read only the confirmed time in seconds.
The list of confirmed dates when the selection mode is multiple. Empty if no date is confirmed or another selection mode is active.
The confirmed start and end dates as a date range when the selection mode is range. Empty until both dates are confirmed or another selection mode is active.
All dates within the confirmed range interval, inclusive of start and end. Empty until both dates are confirmed or another selection mode is active.
The month of the confirmed value, from 1 (January) to 12 (December). In multiple mode, uses the first confirmed date; in range mode, the start date. Does not change when navigating the calendar. Empty if no value is confirmed.
The year of the confirmed value. In multiple mode, uses the first confirmed date; in range mode, the start date. Does not change when navigating the calendar. Empty if no value is confirmed.
The month currently displayed in the calendar, from 1 (January) to 12 (December). Updates when the user navigates, even without selecting a date.
The year currently displayed in the calendar. Updates when the user navigates, even without selecting a date.
All dates of the displayed month that can be selected under the current restrictions (minimum and maximum date, disabled dates and weekdays).
All dates of the displayed month that cannot be selected under the current restrictions.
The confirmed time as total seconds since midnight (e.g. 14:30 = 52200). In multiple mode, uses the first confirmed date; in range mode, the start date. Empty if no value is confirmed.
The confirmed time as total minutes since midnight (e.g. 14:30 = 870). May be decimal when the time has seconds. In multiple mode, uses the first confirmed date; in range mode, the start date. Empty if no value is confirmed.
The confirmed time as total hours since midnight (e.g. 14:30 = 14.5). May be decimal. In multiple mode, uses the first confirmed date; in range mode, the start date. Empty if no value is confirmed.
The second part of the confirmed time, from 0 to 59 (e.g. 14:30:15 = 15). Empty if no value is confirmed.
The minute part of the confirmed time, from 0 to 59 (e.g. 14:30 = 30). Empty if no value is confirmed.
The hour part of the confirmed time, from 0 to 23 (e.g. 14:30 = 14). Empty if no value is confirmed.
The locale used to format dates and labels. Falls back to en-US when the configured locale is invalid, so it may differ from the configured value.
The IANA timezone used by the component. In custom mode, it falls back to UTC when the configured timezone id is invalid.
True when the input is enabled and can be opened; false when it is disabled.
True when the input is configured as required.
True when the field is not required, or when it is required and has a confirmed and valid value; false otherwise.
True when the panel is open.
Where a workflow can start.
Triggered when the confirmed selection changes, whether the user confirms a selection via the confirmation button or the component is reset.
What a workflow can tell the element to do.
The actions can be triggered from any workflow event. The plugin also responds to Bubble's native reset actions (Reset a group/popup).
Resets the component to its initial state, reapplying default values if configured, or returning to an empty state, and updates the exposed states accordingly.
Focuses the input and opens its panel programmatically. Ignored if the component is disabled.
Date/Time Picker is a fully customizable date and time input for Bubble. It supports single, multiple, and range date selection with an integrated time picker, locale and timezone support, and over 100 properties for complete visual and behavioral control.
The native Bubble date input only supports single date selection and offers almost no customization. Date/Time Picker adds multiple and range selection, an integrated time picker, locale and timezone support, disabled dates and weekdays, time limits, glassmorphism effects, animations, and much more, all in one component.
No. Place the element on the page, configure the properties in the editor, and connect it to your workflows. All properties have descriptions and most have sensible defaults, so you can get started quickly without deep technical knowledge.
Yes. The Input type property lets you choose between date only, time only, or date and time combined. Each mode shows only the relevant panels and exposes the appropriate value format.
Yes. The Date selection mode property supports single, multiple, and range selection. In multiple mode each click toggles a date. In range mode the first click sets the start and the second sets the end.
Yes. You can set a minimum and maximum date, disable specific dates via a list, disable entire weekdays, and set minimum and maximum hour and minute limits for the time picker. All restrictions are applied dynamically and revalidated whenever they change.
Yes. The plugin uses Luxon internally for all date operations. You can configure any BCP 47 locale code and any IANA timezone. Invalid values fall back to en-US and UTC respectively, without breaking the component.
That combination is not supported and has no valid semantic meaning. The component will display a visual warning in the editor and block rendering until the configuration is corrected.
Yes. The plugin exposes a Focus action, which focuses the input and opens its panel, and a Reset action. Both can be triggered from any workflow and respect the current state of the component, including the disabled state.
Make sure that: 1 - The component is not disabled via the This input is disabled? property 2 - The input type and selection mode combination is valid (time only does not support multiple or range) 3 - If triggering via workflow, confirm the Focus action is correctly connected 4 - Check that the element is visible on the page, hidden elements cannot open the panel
Make sure that: 1 - You are reading the correct exposed state for the active selection mode (value_single, value_multiple, or value_range) 2 - The user has confirmed the selection by clicking the confirm button 3 - The workflow is triggered by the value changed event, not by a condition check before confirmation
Yes. Most visual properties support Bubble's predefined styles. A few fields such as Input icon size, Max selections and Limit reached label are intentionally non-dynamic to allow them to be configured and saved as part of a style, making it easy to apply consistent settings across all inputs that share the same style.