The appointment booking form embedded inDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/fredy-rizo/despacho-frontend/llms.txt
Use this file to discover all available pages before exploring further.
startComponent.vue lets any website visitor schedule a legal consultation at Lex Consultoría without creating an account or logging in. The form is rendered as a centered 650 px-wide q-card under the Reserva tu Consulta heading, and submits a single JSON payload to the reservations API via the browser’s native fetch. On success, Quasar’s Notify plugin surfaces a blue confirmation toast; on failure, the error is captured in a catch block and logged to the console.
This endpoint does not require authentication. No
Authorization header is sent with the booking request — any visitor can submit a reservation.API Endpoint
Form Fields
All fields map directly to JSON keys in the request body. Thepreferred_hour value is assembled client-side from three separate selects before being sent.
The client’s full name. Bound to the
nombre ref via v-model on a q-input (dense, outlined) with a Bootstrap Icons bi-person prepend icon.The client’s email address. Bound to the
email ref. Rendered in a col-6 column alongside phone.The client’s phone number. Bound to the
telefono ref. Rendered in the right col-6 column with a bi-telephone prepend icon.The legal service area the client needs. Bound to the
servicio ref via a q-select with a bi-list-ul prepend icon. Must be one of the six options below.Allowed values:Derecho civilDerecho familiarDerecho mercantilDerecho penalDerecho laboralDerecho inmobiliario
The client’s preferred consultation date in The
YYYY-MM-DD format. Bound to the fecha ref via a q-input with a calendar icon that opens a q-popup-proxy containing a q-date picker.Date picker configuration:mask="YYYY-MM-DD" prop ensures the value is always stored and sent in ISO date format.The client’s preferred time, formatted as
"H:MM AM/PM" (e.g., "9:30 AM", "2:00 PM"). This value is not a single input — it is composed from three separate q-select fields and concatenated in enviarReserva:| Select | Ref | Options |
|---|---|---|
| Hour | horaSel | "1" through "12" (generated via Array(12)) |
| Minutes | minSel | "00", "10", "20", "30", "40", "50" |
| Period | ampm | "AM", "PM" |
An optional free-text message the client can provide for context. Bound to the
mensaje ref via a q-input with type="textarea" and a bi-chat-square-text prepend icon.The enviarReserva Function
The submit handler enviarReserva is triggered by the ENVIAR RESERVA q-btn. It builds the request headers, assembles the JSON body, calls fetch, and handles the result:
Success Notification
On a successful HTTP response, Quasar’s$q.notify plugin displays a non-blocking toast with the following configuration:
| Property | Value |
|---|---|
color | "blue-4" |
textColor | "white" |
icon | "las la-check" (Line Awesome checkmark) |
message | "Reserva realizada" |
Error Handling
Network failures and JSON parse errors are caught by thecatch block:
Date Picker Details
The date field uses aq-popup-proxy anchored to a calendar icon prepended to the q-input. Clicking the icon opens an inline q-date component in minimal mode:
scale animation. The minimal prop hides the navigation header, rendering a compact month grid directly.
Time Selection Details
Time is split across three adjacentcol-2 columns within the same 12-column row as the date field:
Hour select (col-2)
Hour select (col-2)
horaSel ref. No zero-padding — values are bare string integers.Minutes select (col-2)
Minutes select (col-2)
minSel ref. Values are zero-padded two-digit strings, stepping every 10 minutes.AM/PM select (col-2)
AM/PM select (col-2)
ampm ref. The two options are declared inline — no separate constant needed.`${horaSel.value}:${minSel.value} ${ampm.value}` → e.g., "10:30 AM".
