AppointmentInput
Appointment scheduling input widget for selecting time slots.
Examples
Basic Usage
This example runs a form with a single page containing the widget
Example Code
from datetime import datetime, timedelta
from abstra.forms import AppointmentInput, run
def generate_slots():
"""
Generate a list of time slots for the next 14 days, excluding weekends and lunch breaks.
Each slot is 45 minutes long, starting from 10:00 to 18:00 with a 15-minute interval.
"""
slots = []
# Replace with datetime.now() for real-time usage
current_date = datetime(2025, 1, 1)
max_date = current_date + timedelta(days=14)
while current_date < max_date:
if current_date.weekday() < 5:
for hour in range(10, 18):
if hour == 12:
continue
begin = current_date.replace(hour=hour, minute=0)
end = begin + timedelta(minutes=45)
slots.append((begin, end))
current_date += timedelta(days=1)
return [{"begin": begin, "end": end} for begin, end in slots]
# Create a page with the widget
example_page = [
AppointmentInput(
"Welcome to Abstra, please select a demo slot", slots=generate_slots()
),
]
# Run the form
result = run([example_page])
# Print the result
print(result)
Parameters
Name | Description | Type | Default |
---|---|---|---|
label (required) | Text label displayed above the input. | str | None |
slots (required) | List of available time slots. Eg. [{"begin": "2023-10-01T10:00:00", "end": "2023-10-01T11:00:00"}] | List[Dict] | None |
key | Identifier for the widget, defaults to label if not provided. | str | None |
required | Whether a time slot must be selected before proceeding. | bool | True |
hint | Help text displayed below the input. | str | None |
full_width | Whether the input should take up the full width of its container. | bool | False |
disabled | Whether the input is non-interactive. | bool | False |
errors | Pre-defined validation error messages to display. | Union[List[str], str] | None |
State Value
Optional[AppointmentSlot]
: The selected appointment time slot. AppointmentSlot contains begin and end attributes. Eg.: {"begin": "2023-10-01T10:00:00", "end": "2023-10-01T11:00:00"}
info
This is the type of the value that this widget holds. It will show up when accessing widget's state item.
This also defines which value type can be used on initial_state