MARKETPLACE
PLUGINS
WHEEL TIME PICKER & TIME CALCULATOR
Wheel Time Picker & Time Calculator logo

Wheel Time Picker & Time Calculator

Published August 2026
   •    Updated this week

Plugin details

A clean, reliable and fully configurable time selection and time calculation toolkit for Bubble — built for scheduling forms, bookings, appointments, availability flows and duration-based workflows.
The plugin includes two complementary elements:

• Time Picker Wheel Selector — a polished, validated wheel-based time input.
• Time Calculator — a non-visual utility that adds minutes to a time and exposes the calculated result, including day offsets.

✦ TIME PICKER WHEEL SELECTOR

• Elegant dual-wheel selector for Hours and Minutes
• 24-hour time format (HH:mm)
• Explicit Cancel and Confirm actions
• Click the field or clock icon to open the selector
• Selected values are automatically centred in the wheels
• Popup panel is rendered safely above surrounding Bubble elements
• Works reliably inside forms, groups, popups and layouts with overflow restrictions

✦ VALIDATION

• Configure minimum and maximum allowed times
• Configure available minute intervals: 5, 10, 15, 30 or 60 minutes
• Prevents users from selecting unavailable times
• Invalid hour/minute combinations are disabled automatically
• Required field validation with exposed validity state
• Supports ranges such as 08:00 to 18:00 with 15-minute intervals

✦ INPUT MODES

• Picker-only mode enabled by default for maximum data integrity
• Users can only choose values available in the selector
• Optional manual input mode for advanced use cases
• Manual values are normalized automatically:
 930 becomes 09:30
 1616 becomes 16:16
• Manual entries are validated against configured limits and intervals

✦ TIME CALCULATOR

• Non-visual element for time arithmetic
• Adds a configurable number of whole minutes to a base time
• Supports durations from 0 to 10,080 minutes (up to 7 days)
• Exposes the calculated time in HH:mm format
• Exposes calculated hour, minute and total minutes
• Exposes day offset when the result crosses midnight
• Ideal for automatically setting an end time from a selected start time

Example:

23:35 + 30 minutes = 00:05
Day Offset = 1

✦ BUBBLE INTEGRATION

• Exposes selected time, hour, minute and total minutes
• Triggers workflows when the selected time changes
• Supports Bubble's Reset relevant inputs action
• Initial Time can be updated dynamically
• Supports required, disabled and clearable states
• Time Calculator results can be connected directly to another Time Picker's Initial Time property

✦ APPEARANCE

• Uses native Bubble appearance properties
• Supports Bubble background colour, text colour, font, font size, borders, border radius and padding
• Custom Selection Color for selected wheel values and focus state
• Fully configurable Confirm and Cancel buttons:
 background, text, border and hover colours
• Fully configurable clock and clear icons:
 normal and hover colours
• Optional custom labels for Confirm and Cancel buttons
• Responsive popup panel that remains usable even when the element is narrow
• Clean wheel appearance with hidden visual scrollbars and touch/trackpad scrolling

✦ LANGUAGE

• Built-in Portuguese and English interface labels
• Labels include Hour, Minutes, Cancel, Confirm and accessibility descriptions

✦ DEVELOPER FRIENDLY

• Zero external dependencies
• Lightweight vanilla JavaScript implementation
• Secure CSS value validation for dynamic style properties
• Designed for Bubble forms, booking flows, availability systems and appointment scheduling

**Demo Page**
https://nobubble-48765.bubbleapps.io/version-test/time_picker?debug_mode=true

**Editor Page**
https://bubble.io/page?id=nobubble-48765&tab=Workflow&name=time_picker&type=page

## Owner Name
**Gilsénio Ferreira**

Free

For everyone

stars   •   0 ratings
2 installs  
This plugin does not collect or track your personal data.

Other actions

Platform

Web & Native mobile

Contributor details

Gilsénio Ferreira logo
Gilsénio Ferreira
Joined 2022   •   12 Plugins
View contributor profile

Instructions

## Elements Included
This plugin includes two elements:

1. Time Picker Wheel Selector
  A visual input for selecting a validated time.

2. Time Calculator
  A non-visual utility for adding minutes to a time and returning the calculated result.

---

# Time Picker Wheel Selector

## Quick Start

1. Add the "Time Picker Wheel Selector" element to your Bubble page.
2. Set the desired size and appearance in Bubble's Appearance tab.
3. Configure the available time range:
  - Minimum Time
  - Maximum Time
  - Interval Minutes
4. Create workflows using the exposed states or the "When the selected time changes" event.

Example configuration:

Minimum Time: 08:00
Maximum Time: 18:00
Interval Minutes: 15

This creates valid selections such as:

08:00
08:15
08:30
08:45
...
17:45
18:00

---

## Value Configuration

### Initial Time

Use the Initial Time property to define an initial value.

Example:

09:30

The expected format is:

HH:mm

Examples:

09:30
14:15
23:45

When a dynamic Bubble value changes, the picker synchronizes with that value.

This makes it possible to connect a Time Calculator result to a second Time Picker automatically.

---

## Minimum Time and Maximum Time

Use these properties to limit the available selection range.

Example:

Minimum Time: 08:00
Maximum Time: 17:30

The picker automatically disables invalid hour/minute combinations outside this range.

Important:

The current version requires Minimum Time to be earlier than or equal to Maximum Time.

Supported:

08:00 to 18:00

Not supported:

22:00 to 02:00

---

## Interval Minutes

Choose the available minute increments:

5
10
15
30
60

Example with a 15-minute interval:

00
15
30
45

Example with a 30-minute interval:

00
30

Example with a 60-minute interval:

00

The selector only allows minute values compatible with the configured interval.

---

## Picker-Only Mode

By default, Allow Manual Input is disabled.

In this mode:

• Clicking the field opens the selector.
• Clicking the clock icon opens the selector.
• Users cannot type a time manually.
• Only valid times available in the wheels can be selected.

This is the recommended mode for booking, availability and scheduling forms because it guarantees that the selected value respects the configured range and minute interval.

---

## Allow Manual Input

Enable Allow Manual Input only if users should be able to type directly into the field.

Manual input is normalized automatically.

Examples:

930 becomes 09:30
1616 becomes 16:16

A manually entered value is accepted only when it:

• Is a valid 24-hour time;
• Respects Minimum Time;
• Respects Maximum Time;
• Respects Interval Minutes.

For example, with an interval of 15 minutes:

16:00 is valid
16:15 is valid
16:30 is valid
16:16 is invalid

---

## Confirm and Cancel Behaviour

The wheel selector keeps changes temporary until the user presses Confirm.

• Confirm: saves the selected hour and minute, updates states and triggers the change event.
• Cancel: discards temporary wheel changes.
• Clicking outside the panel: closes the panel and discards temporary wheel changes.
• Pressing Escape: closes the panel and discards temporary wheel changes.

---

## Clear Behaviour

Enable Allow Clear to show the clear button when a time is selected.

Clicking the clear button:

• Removes the selected time;
• Clears selected time states;
• Triggers the selected time changed event.

---

## Required Behaviour

Enable Required when the field must have a value.

The exposed state is_valid becomes:

yes — when a valid time is selected
no — when the field is empty and Required is enabled

Use this state to control form validation, button availability or workflow conditions.

---

## Button and Icon Appearance

The following optional appearance properties allow complete control over the action buttons:

Confirm button:

• Confirm Button Color
• Confirm Text Color
• Confirm Border Color
• Confirm Hover Color
• Confirm Hover Text Color
• Confirm Button Label

Cancel button:

• Cancel Button Color
• Cancel Text Color
• Cancel Border Color
• Cancel Hover Color
• Cancel Hover Text Color
• Cancel Button Label

Input icons:

• Clock Icon Color
• Clock Icon Hover Color
• Clear Icon Color
• Clear Icon Hover Color

Example:

Confirm Button Label: OK
Confirm Button Color: #3b9df2
Confirm Hover Color: #2563eb
Confirm Text Color: #ffffff

Cancel Button Label: Back
Cancel Button Color: #fb7185
Cancel Hover Color: #ef4444
Cancel Text Color: #ffffff

Clock Icon Color: #2563eb
Clear Icon Color: #ef4444

When a custom property is left empty, the element uses its documented fallback colour.

---

## Language

Use the Language property to choose interface labels.

| Value | Language |
|-------|----------|
| pt | Portuguese |
| en | English |

Portuguese labels:

Hora
Minutos
Cancelar
Confirmar

English labels:

Hour
Minutes
Cancel
Confirm

Custom Confirm and Cancel labels override the language defaults.

---

## Time Picker Exposed States

| State | Type | Description |
|-------|------|-------------|
| selected_time | text | Selected time in HH:mm format |
| selected_hour | number | Selected hour, from 0 to 23 |
| selected_minute | number | Selected minute, from 0 to 59 |
| selected_minutes | number | Total minutes since 00:00 |
| is_valid | yes/no | Whether the field currently has a valid value |
| is_open | yes/no | Whether the selector panel is open |

Example:

Selected Time: 08:30
Selected Hour: 8
Selected Minute: 30
Selected Minutes: 510

---

## Time Picker Events

### When the selected time changes

Triggered when:

• The user confirms a new time;
• The user clears the selected time;
• A valid manually typed time is committed, when manual input is enabled.

Use this event to save the value, update availability, calculate durations or continue a booking workflow.

### When the time picker is opened

Triggered when the wheel selection panel opens.

### When the time picker is closed

Triggered when the wheel selection panel closes.

---

## Reset Relevant Inputs

Enable the Bubble plugin option:

"Add a reset function to wipe the content of the element on Reset actions"

The Time Picker supports Bubble's native Reset relevant inputs workflow action.

When reset:

• The selected time is cleared;
• The selector panel is closed;
• All selected time states are cleared;
• is_valid respects the Required configuration.

---

# Time Calculator

## Purpose

Time Calculator is a non-visual element that adds a number of minutes to a base time.

Use it to calculate an end time automatically from a selected start time.

Example:

Base Time: 23:35
Minutes to Add: 30

Result Time: 00:05
Day Offset: 1

---

## Configuration

Add the Time Calculator element to the page and configure:

### Base Time

A time in 24-hour format.

Expected format:

HH:mm

Examples:

09:30
14:15
23:45

The Base Time can be dynamic.

Typical setup:

Time Picker Start's selected_time

### Minutes to Add

The number of whole minutes to add to Base Time.

Supported range:

0 to 10,080 minutes

This represents up to 7 days.

Examples:

10
30
60
90
480
1440
2880

Negative values, decimal values and values above 10,080 are invalid.

---

## Automatic Start and End Time Setup

A common use case is automatically deriving an end time from a start time.

1. Add a Time Picker for the start time.
2. Add a Time Calculator.
3. Add a second Time Picker for the end time.
4. Configure the Time Calculator:

Base Time = Time Picker Start's selected_time
Minutes to Add = 30

5. Configure the end Time Picker:

Initial Time = Time Calculator's result_time

Result:

Start Time: 23:35
Minutes to Add: 30
End Time: 00:05
Day Offset: 1

Whenever the Start Time or Minutes to Add changes, the Time Calculator recalculates and the End Time picker receives the new Initial Time dynamically.

---

## Time Calculator Exposed States

| State | Type | Description |
|-------|------|-------------|
| result_time | text | Calculated time in HH:mm format |
| result_hour | number | Calculated hour, from 0 to 23 |
| result_minute | number | Calculated minute, from 0 to 59 |
| result_minutes | number | Minutes since 00:00 for the calculated time |
| day_offset | number | Number of complete days crossed during the calculation |
| is_valid | yes/no | Whether Base Time and Minutes to Add are valid |

Examples:

| Base Time | Minutes to Add | Result Time | Day Offset |
|-----------|----------------|-------------|------------|
| 09:32 | 10 | 09:42 | 0 |
| 19:34 | 30 | 20:04 | 0 |
| 23:35 | 30 | 00:05 | 1 |
| 09:00 | 1440 | 09:00 | 1 |
| 22:30 | 2880 | 22:30 | 2 |

---

## Day Offset

The result time always stays within a 24-hour day.

When the calculation passes midnight, use day_offset to identify the number of days crossed.

Example:

Base Time: 23:35
Minutes to Add: 30
Result Time: 00:05
Day Offset: 1

In Bubble, you can display a message only when the result is on a later day:

When Time Calculator's day_offset > 0

Suggested text:

The end time occurs on the next day.

For multi-day durations, use:

Ends after Time Calculator's day_offset days.

---

## Invalid Calculator Values

The Time Calculator publishes:

result_time = empty
is_valid = no

when:

• Base Time is empty or invalid;
• Base Time is not in valid 24-hour time format;
• Minutes to Add is negative;
• Minutes to Add is a decimal value;
• Minutes to Add is greater than 10,080.

**Demo Page**
https://nobubble-48765.bubbleapps.io/version-test/time_picker?debug_mode=true

**Editor Page**
https://bubble.io/page?id=nobubble-48765&tab=Workflow&name=time_picker&type=page

## Owner Name
**Gilsénio Ferreira**

Types

This plugin can be found under the following types:
Element   •   Event   •   Action

Categories

This plugin can be found under the following categories:

Resources

Support contact
Documentation
Tutorial

Rating and reviews

No reviews yet

This plugin has not received any reviews.
Bubble