forge/arma/ui/apps/components/portal/modalLayer.js
2026-03-07 19:54:17 -06:00

258 lines
9.2 KiB
JavaScript

(function () {
const OrgPortal = (window.OrgPortal = window.OrgPortal || {});
const { h } = OrgPortal.runtime;
const { portalData } = OrgPortal.data;
const store = OrgPortal.store;
const actions = OrgPortal.actions;
OrgPortal.componentFns = OrgPortal.componentFns || {};
OrgPortal.componentFns.ModalLayer = function ModalLayer() {
const Modal = window.SharedUI.componentFns.Modal;
const modal = store.getModal();
if (!modal) {
return null;
}
const members = store.getMembers();
const memberSelectProps =
members.length === 0 ? { disabled: true } : {};
let title = "";
let body = null;
if (modal.type === "payroll") {
title = "Run Payroll";
body = h(
"div",
{ className: "app-modal-form" },
h(
"div",
null,
h("label", null, "Amount Per Member"),
h("input", {
id: "treasury-payroll-amount",
type: "number",
min: "1",
placeholder: "500",
autofocus: "true",
}),
),
h(
"div",
{ className: "app-modal-actions" },
h(
"button",
{
type: "button",
className: "org-secondary-btn",
onClick: () => actions.closeModal(),
},
"Cancel",
),
h(
"button",
{
type: "button",
onClick: () => {
if (
actions.runPayroll(
actions.parseAmount(
actions.getInputValue(
"treasury-payroll-amount",
),
),
)
) {
actions.closeModal();
}
},
},
"Run Payroll",
),
),
);
} else if (modal.type === "transfer") {
title = "Send Funds";
body = h(
"div",
{ className: "app-modal-form" },
h(
"div",
null,
h("label", null, "Member"),
h(
"select",
{
id: "treasury-transfer-member",
...memberSelectProps,
},
...members.map((member) =>
h("option", { value: member.name }, member.name),
),
),
),
h(
"div",
null,
h("label", null, "Amount"),
h("input", {
id: "treasury-transfer-amount",
type: "number",
min: "1",
placeholder: "1500",
}),
),
h(
"div",
{ className: "app-modal-actions" },
h(
"button",
{
type: "button",
className: "org-secondary-btn",
onClick: () => actions.closeModal(),
},
"Cancel",
),
h(
"button",
{
type: "button",
...memberSelectProps,
onClick: () => {
if (
actions.sendFundsToMember(
String(
actions.getInputValue(
"treasury-transfer-member",
) || "",
),
actions.parseAmount(
actions.getInputValue(
"treasury-transfer-amount",
),
),
)
) {
actions.closeModal();
}
},
},
"Send Funds",
),
),
);
} else if (modal.type === "credit") {
title = "Assign Credit Line";
body = h(
"div",
{ className: "app-modal-form" },
h(
"div",
null,
h("label", null, "Member"),
h(
"select",
{ id: "treasury-credit-member", ...memberSelectProps },
...members.map((member) =>
h("option", { value: member.name }, member.name),
),
),
),
h(
"div",
null,
h("label", null, "Credit Amount"),
h("input", {
id: "treasury-credit-amount",
type: "number",
min: "1",
placeholder: "5000",
}),
),
h(
"div",
{ className: "app-modal-actions" },
h(
"button",
{
type: "button",
className: "org-secondary-btn",
onClick: () => actions.closeModal(),
},
"Cancel",
),
h(
"button",
{
type: "button",
...memberSelectProps,
onClick: () => {
if (
actions.grantCreditLine(
String(
actions.getInputValue(
"treasury-credit-member",
) || "",
),
actions.parseAmount(
actions.getInputValue(
"treasury-credit-amount",
),
),
)
) {
actions.closeModal();
}
},
},
"Assign Credit Line",
),
),
);
} else if (modal.type === "disband") {
title = "Disband Organization";
body = h(
"div",
{ className: "app-modal-danger" },
h(
"p",
null,
"This action is permanent. Disband ",
portalData.org.name,
"?",
),
h(
"div",
{ className: "app-modal-danger-actions" },
h(
"button",
{
type: "button",
className: "org-secondary-btn",
onClick: () => actions.closeModal(),
},
"Cancel",
),
h(
"button",
{
type: "button",
className: "org-danger-btn",
onClick: () => actions.disbandOrganization(),
},
"Confirm Disband",
),
),
);
}
return Modal({
title,
body,
onClose: () => actions.closeModal(),
});
};
})();