bewcloud/public/components/calendar/ImportEventsModal.js

60 lines
2.1 KiB
JavaScript
Raw Permalink Normal View History

import { useSignal } from '@preact/signals';
import { useEffect } from 'preact/hooks';
export default function ImportEventsModal({
isOpen,
calendars,
onClickImport,
onClose
}) {
const newCalendarId = useSignal(null);
useEffect(() => {
if (!isOpen) {
newCalendarId.value = null;
} else {
newCalendarId.value = calendars[0].uid;
}
}, [isOpen]);
return h(Fragment, null, h("section", {
class: `fixed ${isOpen ? 'block' : 'hidden'} z-40 w-screen h-screen inset-0 bg-gray-900/60`
}), h("section", {
class: `fixed ${newCalendarId.value ? 'block' : 'hidden'} z-50 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 bg-slate-600 text-white rounded-md px-8 py-6 drop-shadow-lg overflow-y-scroll max-h-[80%]`
}, h("h1", {
class: "text-2xl font-semibold my-5"
}, "Import Events"), h("section", {
class: "py-5 my-2 border-y border-slate-500"
}, h("fieldset", {
class: "block mb-2"
}, h("label", {
class: "text-slate-300 block pb-1",
for: "event_calendar"
}, "Calendar"), h("section", {
class: "flex items-center justify-between"
}, h("select", {
class: "input-field mr-2 w-5/6!",
name: "event_calendar",
id: "event_calendar",
value: newCalendarId.value || '',
onChange: event => {
newCalendarId.value = event.currentTarget.value;
}
}, calendars.map(calendar => h("option", {
key: calendar.uid,
value: calendar.uid
}, calendar.displayName))), h("span", {
class: `w-5 h-5 block rounded-full`,
style: {
backgroundColor: calendars.find(calendar => calendar.uid === newCalendarId.value)?.calendarColor
},
title: calendars.find(calendar => calendar.uid === newCalendarId.value)?.calendarColor
})))), h("footer", {
class: "flex justify-between"
}, h("button", {
type: "button",
class: "px-5 py-2 bg-slate-600 hover:bg-slate-500 text-white cursor-pointer rounded-md",
onClick: () => onClickImport(newCalendarId.value)
}, "Choose File"), h("button", {
type: "button",
class: "px-5 py-2 bg-slate-600 hover:bg-slate-500 text-white cursor-pointer rounded-md",
onClick: () => onClose()
}, "Close"))));
}