diff --git a/app/web/src/render/ed/panel/popup/site-form.tsx b/app/web/src/render/ed/panel/popup/site-form.tsx new file mode 100644 index 00000000..d68a1c5e --- /dev/null +++ b/app/web/src/render/ed/panel/popup/site-form.tsx @@ -0,0 +1,193 @@ +import { site } from "dbgen"; +import { FC } from "react"; +import { useGlobal, useLocal } from "web-utils"; +import { EDGlobal } from "../../logic/ed-global"; +import { formStyle } from "../../../../utils/ui/form.style"; +import { Input } from "../../../../utils/ui/form/input"; + +export const EdFormSite: FC<{ + site: Partial; + onClose: () => void; + onSave: () => void; + group_id: string; +}> = ({ site, onClose, onSave, group_id }) => { + const p = useGlobal(EDGlobal, "EDITOR"); + const local = useLocal({ + init: false, + saving: false, + preventClose: false, + }); + const form = useLocal({} as Partial); + + if (!local.init) { + local.init = true; + for (const [k, v] of Object.entries(site)) { + (form as any)[k] = v; + } + } + + return ( + <> +
{ + if (!local.preventClose) { + onClose(); + } + local.preventClose = false; + local.render(); + }} + > +
{ + e.stopPropagation(); + local.preventClose = true; + local.render(); + }} + onPointerUp={(e) => { + e.stopPropagation(); + local.preventClose = false; + local.render(); + }} + onSubmit={async (e) => { + e.preventDefault(); + + if (form.name && p.user.id) { + local.saving = true; + local.render(); + if (!form.id) { + try { + await db.site.create({ + data: { + name: form.name, + favicon: "", + domain: form.domain || "", + id_user: p.user.id, + id_org: group_id, + responsive: form.responsive, + }, + }); + } catch (e) { + alert(e); + } + } else { + await db.site.update({ + data: { + name: form.name, + domain: form.domain, + responsive: form.responsive, + }, + where: { id: form.id }, + }); + } + onSave(); + } + + local.saving = false; + local.render(); + }} + onClick={(e) => { + e.stopPropagation(); + }} + className={cx(formStyle, "bg-white shadow-2xl border")} + > + + + + + + {form.id && ( + + )} + +
+ + {form.id && ( + + )} +
+
+
+ + ); +}; diff --git a/app/web/src/render/ed/panel/popup/site.tsx b/app/web/src/render/ed/panel/popup/site.tsx index 80497f6c..369997e2 100644 --- a/app/web/src/render/ed/panel/popup/site.tsx +++ b/app/web/src/render/ed/panel/popup/site.tsx @@ -410,7 +410,13 @@ const SitePicker = ({ -
+
{ + e.stopPropagation(); + e.preventDefault(); + }} + > EDIT