Lazy loads phone input (#1566)

This commit is contained in:
Omar López 2022-01-19 09:24:01 -07:00 committed by GitHub
parent e52e1e3e23
commit 116e6d0938
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 3 deletions

View file

@ -7,6 +7,7 @@ import {
} from "@heroicons/react/solid"; } from "@heroicons/react/solid";
import { EventTypeCustomInputType } from "@prisma/client"; import { EventTypeCustomInputType } from "@prisma/client";
import dayjs from "dayjs"; import dayjs from "dayjs";
import dynamic from "next/dynamic";
import Head from "next/head"; import Head from "next/head";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { useEffect, useMemo, useState } from "react"; import { useEffect, useMemo, useState } from "react";
@ -32,11 +33,13 @@ import CustomBranding from "@components/CustomBranding";
import { EmailInput, Form } from "@components/form/fields"; import { EmailInput, Form } from "@components/form/fields";
import AvatarGroup from "@components/ui/AvatarGroup"; import AvatarGroup from "@components/ui/AvatarGroup";
import { Button } from "@components/ui/Button"; import { Button } from "@components/ui/Button";
import PhoneInput from "@components/ui/form/PhoneInput";
import { BookPageProps } from "../../../pages/[user]/book"; import { BookPageProps } from "../../../pages/[user]/book";
import { TeamBookingPageProps } from "../../../pages/team/[slug]/book"; import { TeamBookingPageProps } from "../../../pages/team/[slug]/book";
/** These are like 40kb that not every user needs */
const PhoneInput = dynamic(() => import("@components/ui/form/PhoneInput"));
type BookingPageProps = BookPageProps | TeamBookingPageProps; type BookingPageProps = BookPageProps | TeamBookingPageProps;
const BookingPage = (props: BookingPageProps) => { const BookingPage = (props: BookingPageProps) => {

View file

@ -1,10 +1,11 @@
import React from "react"; import React from "react";
import { default as BasePhoneInput, PhoneInputProps } from "react-phone-number-input"; import BasePhoneInput, { Props as PhoneInputProps } from "react-phone-number-input";
import "react-phone-number-input/style.css"; import "react-phone-number-input/style.css";
import classNames from "@lib/classNames"; import classNames from "@lib/classNames";
import { Optional } from "@lib/types/utils";
export const PhoneInput = (props: PhoneInputProps) => ( export const PhoneInput = (props: Optional<PhoneInputProps, "onChange">) => (
<BasePhoneInput <BasePhoneInput
{...props} {...props}
className={classNames( className={classNames(

View file

@ -1,3 +1,7 @@
/** Makes selected props from a record non optional */
export type Ensure<T, K extends keyof T> = Omit<T, K> & { export type Ensure<T, K extends keyof T> = Omit<T, K> & {
[EK in K]-?: NonNullable<T[EK]>; [EK in K]-?: NonNullable<T[EK]>;
}; };
/** Makes selected props from a record optional */
export type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;