diff --git a/lib/EventTypeInput.ts b/lib/eventTypeInput.ts similarity index 92% rename from lib/EventTypeInput.ts rename to lib/eventTypeInput.ts index ac0799d3..f3d9f66e 100644 --- a/lib/EventTypeInput.ts +++ b/lib/eventTypeInput.ts @@ -3,6 +3,7 @@ export enum EventTypeCustomInputType { Text = 'text', TextLong = 'textLong', Number = 'number', + Bool = 'bool', } export interface EventTypeCustomInput { diff --git a/pages/[user]/book.tsx b/pages/[user]/book.tsx index fb9165e9..0030af8f 100644 --- a/pages/[user]/book.tsx +++ b/pages/[user]/book.tsx @@ -13,6 +13,7 @@ import PhoneInput from 'react-phone-number-input'; import {LocationType} from '../../lib/location'; import Avatar from '../../components/Avatar'; import Button from '../../components/ui/Button'; +import {EventTypeCustomInputType} from "../../lib/eventTypeInput"; dayjs.extend(utc); dayjs.extend(timezone); @@ -49,12 +50,31 @@ export default function Book(props) { const bookingHandler = event => { event.preventDefault(); + let notes = ""; + if (props.eventType.customInputs) { + notes = props.eventType.customInputs.map(input => { + const data = event.target["custom_" + input.id]; + if (!!data) { + if (input.type === EventTypeCustomInputType.Bool) { + return input.label + "\n" + (data.value ? "Yes" : "No") + } else { + return input.label + "\n" + data.value + } + } + }).join("\n\n") + } + if (!!notes && !!event.target.notes.value) { + notes += "Additional notes:\n" + event.target.notes.value; + } else { + notes += event.target.notes.value; + } + let payload = { start: dayjs(date).format(), end: dayjs(date).add(props.eventType.length, 'minute').format(), name: event.target.name.value, email: event.target.email.value, - notes: event.target.notes.value, + notes: notes, timeZone: preferredTimeZone, eventTypeId: props.eventType.id, rescheduleUid: rescheduleUid @@ -143,9 +163,38 @@ export default function Book(props) { {}} /> )} + {props.eventType.customInputs && props.eventType.customInputs.sort((a,b) => a.id - b.id).map(input => ( +
+ {input.type !== EventTypeCustomInputType.Bool && + } + {input.type === EventTypeCustomInputType.TextLong && + +