258 lines
9.2 KiB
JavaScript
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(),
|
|
});
|
|
};
|
|
})();
|