Merge branch 'main' into bugfix/unify-email-sending
This commit is contained in:
commit
bd28636af5
13 files changed
+168
-92
No files matched your search
@@ -175,14 +175,16 @@ export default function Type(props): Type {
|
||||
organizerTimeZone={props.eventType.timeZone || props.user.timeZone}
|
||||
inviteeTimeZone={timeZone()}
|
||||
eventLength={props.eventType.length}
|
||||
minimumBookingNotice={props.eventType.minimumBookingNotice}
|
||||
/>
|
||||
{selectedDate && (
|
||||
<AvailableTimes
|
||||
workingHours={props.workingHours}
|
||||
timeFormat={timeFormat}
|
||||
organizerTimeZone={props.eventType.timeZone || props.user.timeZone}
|
||||
eventLength={props.eventType.length}
|
||||
minimumBookingNotice={props.eventType.minimumBookingNotice}
|
||||
eventTypeId={props.eventType.id}
|
||||
eventLength={props.eventType.length}
|
||||
date={selectedDate}
|
||||
user={props.user}
|
||||
/>
|
||||
@@ -246,6 +248,7 @@ export const getServerSideProps: GetServerSideProps = async (context: GetServerS
|
||||
"periodStartDate",
|
||||
"periodEndDate",
|
||||
"periodCountCalendarDays",
|
||||
"minimumBookingNotice",
|
||||
]
|
||||
);
|
||||
|
||||
|
||||
@@ -264,7 +264,7 @@ export default function Book(props: any): JSX.Element {
|
||||
{input.type !== EventTypeCustomInputType.Bool && (
|
||||
<label
|
||||
htmlFor={input.label}
|
||||
className="block text-sm font-medium text-gray-700 mb-1">
|
||||
className="block text-sm font-medium text-gray-700 dark:text-white mb-1">
|
||||
{input.label}
|
||||
</label>
|
||||
)}
|
||||
@@ -284,7 +284,7 @@ export default function Book(props: any): JSX.Element {
|
||||
name={"custom_" + input.id}
|
||||
id={"custom_" + input.id}
|
||||
required={input.required}
|
||||
className="shadow-sm dark:bg-gray-700 dark:border-gray-900 focus:ring-blue-500 focus:border-blue-500 block w-full sm:text-sm border-gray-300 rounded-md"
|
||||
className="shadow-sm dark:bg-gray-700 dark:text-white dark:border-gray-900 focus:ring-blue-500 focus:border-blue-500 block w-full sm:text-sm border-gray-300 rounded-md"
|
||||
placeholder=""
|
||||
/>
|
||||
)}
|
||||
@@ -294,7 +294,7 @@ export default function Book(props: any): JSX.Element {
|
||||
name={"custom_" + input.id}
|
||||
id={"custom_" + input.id}
|
||||
required={input.required}
|
||||
className="shadow-sm dark:bg-gray-700 dark:border-gray-900 focus:ring-blue-500 focus:border-blue-500 block w-full sm:text-sm border-gray-300 rounded-md"
|
||||
className="shadow-sm dark:bg-gray-700 dark:text-white dark:border-gray-900 focus:ring-blue-500 focus:border-blue-500 block w-full sm:text-sm border-gray-300 rounded-md"
|
||||
placeholder=""
|
||||
/>
|
||||
)}
|
||||
|
||||
@@ -55,6 +55,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||
periodStartDate: req.body.periodStartDate,
|
||||
periodEndDate: req.body.periodEndDate,
|
||||
periodCountCalendarDays: req.body.periodCountCalendarDays,
|
||||
minimumBookingNotice: req.body.minimumBookingNotice,
|
||||
};
|
||||
|
||||
if (req.method == "POST") {
|
||||
|
||||
@@ -66,7 +66,8 @@ type EventTypeInput = {
|
||||
periodStartDate?: Date | string;
|
||||
periodEndDate?: Date | string;
|
||||
periodCountCalendarDays?: boolean;
|
||||
enteredRequiresConfirmation: boolean;
|
||||
requiresConfirmation: boolean;
|
||||
minimumBookingNotice: number;
|
||||
};
|
||||
|
||||
const PERIOD_TYPES = [
|
||||
@@ -92,7 +93,6 @@ export default function EventTypePage({
|
||||
}: Props): JSX.Element {
|
||||
const router = useRouter();
|
||||
|
||||
console.log(eventType);
|
||||
const inputOptions: OptionBase[] = [
|
||||
{ value: EventTypeCustomInputType.Text, label: "Text" },
|
||||
{ value: EventTypeCustomInputType.TextLong, label: "Multiline Text" },
|
||||
@@ -174,6 +174,7 @@ export default function EventTypePage({
|
||||
const lengthRef = useRef<HTMLInputElement>();
|
||||
const isHiddenRef = useRef<HTMLInputElement>();
|
||||
const requiresConfirmationRef = useRef<HTMLInputElement>();
|
||||
const minimumBookingNoticeRef = useRef<HTMLInputElement>();
|
||||
const eventNameRef = useRef<HTMLInputElement>();
|
||||
const periodDaysRef = useRef<HTMLInputElement>();
|
||||
const periodDaysTypeRef = useRef<HTMLSelectElement>();
|
||||
@@ -190,6 +191,7 @@ export default function EventTypePage({
|
||||
const enteredDescription: string = descriptionRef.current.value;
|
||||
const enteredLength: number = parseInt(lengthRef.current.value);
|
||||
const enteredIsHidden: boolean = isHiddenRef.current.checked;
|
||||
const enteredMinimumBookingNotice: number = parseInt(minimumBookingNoticeRef.current.value);
|
||||
const enteredRequiresConfirmation: boolean = requiresConfirmationRef.current.checked;
|
||||
const enteredEventName: string = eventNameRef.current.value;
|
||||
|
||||
@@ -200,14 +202,6 @@ export default function EventTypePage({
|
||||
const enteredPeriodStartDate = periodStartDate ? periodStartDate.toDate() : null;
|
||||
const enteredPeriodEndDate = periodEndDate ? periodEndDate.toDate() : null;
|
||||
|
||||
console.log("values", {
|
||||
type,
|
||||
periodDaysTypeRef,
|
||||
enteredPeriodDays,
|
||||
enteredPeriodDaysType,
|
||||
enteredPeriodStartDate,
|
||||
enteredPeriodEndDate,
|
||||
});
|
||||
// TODO: Add validation
|
||||
|
||||
const payload: EventTypeInput = {
|
||||
@@ -226,6 +220,7 @@ export default function EventTypePage({
|
||||
periodStartDate: enteredPeriodStartDate,
|
||||
periodEndDate: enteredPeriodEndDate,
|
||||
periodCountCalendarDays: enteredPeriodDaysType,
|
||||
minimumBookingNotice: enteredMinimumBookingNotice,
|
||||
requiresConfirmation: enteredRequiresConfirmation,
|
||||
};
|
||||
|
||||
@@ -671,6 +666,25 @@ export default function EventTypePage({
|
||||
|
||||
<fieldset className="my-8">
|
||||
<Text variant="largetitle">When can people book this event?</Text>
|
||||
<div className="my-4">
|
||||
<label htmlFor="minimumAdvance" className="block text-sm font-medium text-gray-700">
|
||||
Minimum booking notice
|
||||
</label>
|
||||
<div className="mt-1 relative rounded-md shadow-sm">
|
||||
<input
|
||||
ref={minimumBookingNoticeRef}
|
||||
type="number"
|
||||
name="minimumAdvance"
|
||||
id="minimumAdvance"
|
||||
required
|
||||
className="focus:ring-blue-500 focus:border-blue-500 block w-full pr-20 sm:text-sm border-gray-300 rounded-md"
|
||||
defaultValue={eventType.minimumBookingNotice}
|
||||
/>
|
||||
<div className="absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 text-sm">
|
||||
minutes
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr className="my-8" />
|
||||
<section className="space-y-12">
|
||||
<div className="mb-4">
|
||||
@@ -1019,6 +1033,7 @@ export const getServerSideProps: GetServerSideProps<Props> = async ({ req, query
|
||||
periodEndDate: true,
|
||||
periodCountCalendarDays: true,
|
||||
requiresConfirmation: true,
|
||||
minimumBookingNotice: true,
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
+6
-6
@@ -159,14 +159,14 @@ export default function Success(props) {
|
||||
"https://outlook.live.com/calendar/0/deeplink/compose?body=" +
|
||||
props.eventType.description +
|
||||
"&enddt=" +
|
||||
date.add(props.eventType.length, "minute").format() +
|
||||
date.add(props.eventType.length, "minute").utc().format() +
|
||||
"&path=%2Fcalendar%2Faction%2Fcompose&rru=addevent&startdt=" +
|
||||
date.format() +
|
||||
date.utc().format() +
|
||||
"&subject=" +
|
||||
eventName
|
||||
) + (location ? "&location=" + location : "")
|
||||
}>
|
||||
<a className="mx-2 btn-wide btn-white">
|
||||
<a className="mx-2 btn-wide btn-white" target="_blank">
|
||||
<svg
|
||||
className="inline-block w-4 h-4 mr-1 -mt-1"
|
||||
fill="currentColor"
|
||||
@@ -183,14 +183,14 @@ export default function Success(props) {
|
||||
"https://outlook.office.com/calendar/0/deeplink/compose?body=" +
|
||||
props.eventType.description +
|
||||
"&enddt=" +
|
||||
date.add(props.eventType.length, "minute").format() +
|
||||
date.add(props.eventType.length, "minute").utc().format() +
|
||||
"&path=%2Fcalendar%2Faction%2Fcompose&rru=addevent&startdt=" +
|
||||
date.format() +
|
||||
date.utc().format() +
|
||||
"&subject=" +
|
||||
eventName
|
||||
) + (location ? "&location=" + location : "")
|
||||
}>
|
||||
<a className="mx-2 btn-wide btn-white">
|
||||
<a className="mx-2 btn-wide btn-white" target="_blank">
|
||||
<svg
|
||||
className="inline-block w-4 h-4 mr-1 -mt-1"
|
||||
fill="currentColor"
|
||||
|
||||
Reference in new issue
Block a user