You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.7 KiB
104 lines
3.7 KiB
"use client";
|
|
|
|
import React, { FC, Fragment, useState } from "react";
|
|
import { Dialog, Transition } from "@headlessui/react";
|
|
import { XMarkIcon } from "@heroicons/react/24/solid";
|
|
import ButtonPrimary from "@/shared/ButtonPrimary";
|
|
import GuestsInput from "@/app/(client-components)/(HeroSearchForm2Mobile)/GuestsInput";
|
|
|
|
interface ModalSelectGuestsProps {
|
|
renderChildren?: (p: { openModal: () => void }) => React.ReactNode;
|
|
}
|
|
|
|
const ModalSelectGuests: FC<ModalSelectGuestsProps> = ({ renderChildren }) => {
|
|
const [showModal, setShowModal] = useState(false);
|
|
|
|
// FOR RESET ALL DATA WHEN CLICK CLEAR BUTTON
|
|
//
|
|
function closeModal() {
|
|
setShowModal(false);
|
|
}
|
|
|
|
function openModal() {
|
|
setShowModal(true);
|
|
}
|
|
|
|
const renderButtonOpenModal = () => {
|
|
return renderChildren ? (
|
|
renderChildren({ openModal })
|
|
) : (
|
|
<button onClick={openModal}>Select Date</button>
|
|
);
|
|
};
|
|
|
|
return (
|
|
<>
|
|
{renderButtonOpenModal()}
|
|
<Transition appear show={showModal} as={Fragment}>
|
|
<Dialog
|
|
as="div"
|
|
className="HeroSearchFormMobile__Dialog relative z-50"
|
|
onClose={closeModal}
|
|
>
|
|
<div className="fixed inset-0 bg-neutral-100 dark:bg-neutral-900">
|
|
<div className="flex h-full">
|
|
<Transition.Child
|
|
as={Fragment}
|
|
enter="ease-out transition-transform"
|
|
enterFrom="opacity-0 translate-y-52"
|
|
enterTo="opacity-100 translate-y-0"
|
|
leave="ease-in transition-transform"
|
|
leaveFrom="opacity-100 translate-y-0"
|
|
leaveTo="opacity-0 translate-y-52"
|
|
>
|
|
<Dialog.Panel className="relative h-full overflow-hidden flex-1 flex flex-col justify-between ">
|
|
<>
|
|
<div className="absolute left-4 top-4">
|
|
<button
|
|
className="focus:outline-none focus:ring-0"
|
|
onClick={closeModal}
|
|
>
|
|
<XMarkIcon className="w-5 h-5 text-black dark:text-white" />
|
|
</button>
|
|
</div>
|
|
|
|
<div className="flex-1 pt-12 p-1 flex flex-col overflow-hidden">
|
|
<div className="flex-1 flex flex-col overflow-hidden bg-white dark:bg-neutral-800">
|
|
<div className="flex-1 flex flex-col transition-opacity animate-[myblur_0.4s_ease-in-out] overflow-auto">
|
|
<div
|
|
className={`flex-1 relative flex z-10 overflow-hidden`}
|
|
>
|
|
<GuestsInput />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div className="px-4 py-3 bg-white dark:bg-neutral-900 border-t border-neutral-200 dark:border-neutral-700 flex justify-between">
|
|
<button
|
|
type="button"
|
|
className="underline font-semibold flex-shrink-0"
|
|
onClick={() => {}}
|
|
>
|
|
Clear data
|
|
</button>
|
|
<ButtonPrimary
|
|
sizeClass="px-6 py-3 !rounded-xl"
|
|
onClick={() => {
|
|
closeModal();
|
|
}}
|
|
>
|
|
Save
|
|
</ButtonPrimary>
|
|
</div>
|
|
</>
|
|
</Dialog.Panel>
|
|
</Transition.Child>
|
|
</div>
|
|
</div>
|
|
</Dialog>
|
|
</Transition>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default ModalSelectGuests;
|