@churchapps/apphelper 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/.eslintignore +3 -3
  2. package/.eslintrc.json +22 -22
  3. package/LICENSE +21 -21
  4. package/README.md +24 -24
  5. package/dist/components/gallery/GalleryModal.d.ts.map +1 -1
  6. package/dist/components/gallery/GalleryModal.js +13 -2
  7. package/dist/components/gallery/GalleryModal.js.map +1 -1
  8. package/dist/components/markdownEditor/editor.css +787 -787
  9. package/dist/components/markdownEditor/images/icons/arrow-clockwise.svg +3 -3
  10. package/dist/components/markdownEditor/images/icons/arrow-counterclockwise.svg +3 -3
  11. package/dist/components/markdownEditor/images/icons/chat-square-quote.svg +3 -3
  12. package/dist/components/markdownEditor/images/icons/chevron-down.svg +2 -2
  13. package/dist/components/markdownEditor/images/icons/code.svg +2 -2
  14. package/dist/components/markdownEditor/images/icons/journal-code.svg +4 -4
  15. package/dist/components/markdownEditor/images/icons/journal-text.svg +4 -4
  16. package/dist/components/markdownEditor/images/icons/justify.svg +2 -2
  17. package/dist/components/markdownEditor/images/icons/link.svg +3 -3
  18. package/dist/components/markdownEditor/images/icons/list-ol.svg +3 -3
  19. package/dist/components/markdownEditor/images/icons/list-ul.svg +2 -2
  20. package/dist/components/markdownEditor/images/icons/pencil-fill.svg +2 -2
  21. package/dist/components/markdownEditor/images/icons/text-center.svg +2 -2
  22. package/dist/components/markdownEditor/images/icons/text-left.svg +2 -2
  23. package/dist/components/markdownEditor/images/icons/text-paragraph.svg +2 -2
  24. package/dist/components/markdownEditor/images/icons/text-right.svg +2 -2
  25. package/dist/components/markdownEditor/images/icons/type-bold.svg +2 -2
  26. package/dist/components/markdownEditor/images/icons/type-h1.svg +2 -2
  27. package/dist/components/markdownEditor/images/icons/type-h2.svg +2 -2
  28. package/dist/components/markdownEditor/images/icons/type-h3.svg +2 -2
  29. package/dist/components/markdownEditor/images/icons/type-h4.svg +12 -12
  30. package/dist/components/markdownEditor/images/icons/type-italic.svg +2 -2
  31. package/dist/components/markdownEditor/images/icons/type-strikethrough.svg +2 -2
  32. package/dist/components/markdownEditor/images/icons/type-underline.svg +2 -2
  33. package/dist/components/wrapper/SiteWrapper.d.ts.map +1 -1
  34. package/dist/components/wrapper/SiteWrapper.js +5 -2
  35. package/dist/components/wrapper/SiteWrapper.js.map +1 -1
  36. package/package.json +86 -86
  37. package/src/components/CreatePerson.tsx +80 -80
  38. package/src/components/DisplayBox.tsx +68 -68
  39. package/src/components/ErrorMessages.tsx +26 -26
  40. package/src/components/ExportLink.tsx +67 -67
  41. package/src/components/FloatingSupport.tsx +16 -16
  42. package/src/components/FormSubmissionEdit.tsx +120 -120
  43. package/src/components/HelpIcon.tsx +10 -10
  44. package/src/components/ImageEditor.tsx +126 -126
  45. package/src/components/InputBox.tsx +73 -73
  46. package/src/components/Loading.tsx +29 -29
  47. package/src/components/PersonAdd.tsx +75 -75
  48. package/src/components/QuestionEdit.tsx +63 -63
  49. package/src/components/SmallButton.tsx +39 -39
  50. package/src/components/SupportModal.tsx +26 -26
  51. package/src/components/TabPanel.tsx +34 -34
  52. package/src/components/gallery/GalleryModal.tsx +119 -102
  53. package/src/components/gallery/StockPhotos.tsx +74 -74
  54. package/src/components/gallery/index.ts +1 -1
  55. package/src/components/iconPicker/IconNamesList.ts +2240 -2240
  56. package/src/components/iconPicker/IconPicker.tsx +153 -153
  57. package/src/components/index.tsx +24 -24
  58. package/src/components/markdownEditor/Editor.tsx +132 -132
  59. package/src/components/markdownEditor/MarkdownEditor.tsx +16 -16
  60. package/src/components/markdownEditor/MarkdownModal.tsx +46 -46
  61. package/src/components/markdownEditor/MarkdownPreview.tsx +14 -14
  62. package/src/components/markdownEditor/editor.css +787 -787
  63. package/src/components/markdownEditor/images/icons/arrow-clockwise.svg +3 -3
  64. package/src/components/markdownEditor/images/icons/arrow-counterclockwise.svg +3 -3
  65. package/src/components/markdownEditor/images/icons/chat-square-quote.svg +3 -3
  66. package/src/components/markdownEditor/images/icons/chevron-down.svg +2 -2
  67. package/src/components/markdownEditor/images/icons/code.svg +2 -2
  68. package/src/components/markdownEditor/images/icons/journal-code.svg +4 -4
  69. package/src/components/markdownEditor/images/icons/journal-text.svg +4 -4
  70. package/src/components/markdownEditor/images/icons/justify.svg +2 -2
  71. package/src/components/markdownEditor/images/icons/link.svg +3 -3
  72. package/src/components/markdownEditor/images/icons/list-ol.svg +3 -3
  73. package/src/components/markdownEditor/images/icons/list-ul.svg +2 -2
  74. package/src/components/markdownEditor/images/icons/pencil-fill.svg +2 -2
  75. package/src/components/markdownEditor/images/icons/text-center.svg +2 -2
  76. package/src/components/markdownEditor/images/icons/text-left.svg +2 -2
  77. package/src/components/markdownEditor/images/icons/text-paragraph.svg +2 -2
  78. package/src/components/markdownEditor/images/icons/text-right.svg +2 -2
  79. package/src/components/markdownEditor/images/icons/type-bold.svg +2 -2
  80. package/src/components/markdownEditor/images/icons/type-h1.svg +2 -2
  81. package/src/components/markdownEditor/images/icons/type-h2.svg +2 -2
  82. package/src/components/markdownEditor/images/icons/type-h3.svg +2 -2
  83. package/src/components/markdownEditor/images/icons/type-h4.svg +12 -12
  84. package/src/components/markdownEditor/images/icons/type-italic.svg +2 -2
  85. package/src/components/markdownEditor/images/icons/type-strikethrough.svg +2 -2
  86. package/src/components/markdownEditor/images/icons/type-underline.svg +2 -2
  87. package/src/components/markdownEditor/index.ts +2 -2
  88. package/src/components/markdownEditor/plugins/AutoLinkPlugin.tsx +35 -35
  89. package/src/components/markdownEditor/plugins/ControlledEditorPlugin.tsx +24 -24
  90. package/src/components/markdownEditor/plugins/ListMaxIndentLevelPlugin.tsx +68 -68
  91. package/src/components/markdownEditor/plugins/MarkdownTransformers.ts +106 -106
  92. package/src/components/markdownEditor/plugins/ReadOnlyPlugin.tsx +15 -15
  93. package/src/components/markdownEditor/plugins/ToolbarPlugin.tsx +401 -401
  94. package/src/components/markdownEditor/plugins/customLink/CustomLinkNode.tsx +224 -224
  95. package/src/components/markdownEditor/plugins/customLink/CustomLinkNodePlugin.tsx +32 -32
  96. package/src/components/markdownEditor/plugins/customLink/CustomLinkNodeTransformer.tsx +102 -102
  97. package/src/components/markdownEditor/plugins/customLink/FloatingLinkEditor.tsx +243 -243
  98. package/src/components/markdownEditor/plugins/customLink/FloatingLinkEditor.types.ts +11 -11
  99. package/src/components/markdownEditor/plugins/emoji/EmojiNode.tsx +95 -95
  100. package/src/components/markdownEditor/plugins/emoji/EmojiNodeTransform.ts +41 -41
  101. package/src/components/markdownEditor/plugins/emoji/EmojiPickerPlugin.tsx +152 -152
  102. package/src/components/markdownEditor/plugins/emoji/EmojisPlugin.tsx +65 -65
  103. package/src/components/markdownEditor/plugins/index.ts +6 -6
  104. package/src/components/markdownEditor/theme.ts +65 -65
  105. package/src/components/notes/AddNote.tsx +90 -90
  106. package/src/components/notes/Conversation.tsx +82 -82
  107. package/src/components/notes/Conversations.tsx +58 -58
  108. package/src/components/notes/NewConversation.tsx +78 -78
  109. package/src/components/notes/Note.tsx +44 -44
  110. package/src/components/notes/Notes.tsx +69 -69
  111. package/src/components/notes/index.ts +5 -5
  112. package/src/components/reporting/ChartReport.tsx +98 -98
  113. package/src/components/reporting/ReportFilter.tsx +54 -54
  114. package/src/components/reporting/ReportFilterField.tsx +160 -160
  115. package/src/components/reporting/ReportOutput.tsx +79 -79
  116. package/src/components/reporting/ReportWithFilter.tsx +70 -70
  117. package/src/components/reporting/TableReport.tsx +57 -57
  118. package/src/components/reporting/TreeReport.tsx +111 -111
  119. package/src/components/reporting/index.ts +4 -4
  120. package/src/components/wrapper/AppList.tsx +20 -20
  121. package/src/components/wrapper/ChurchList.tsx +22 -22
  122. package/src/components/wrapper/Drawers.tsx +60 -60
  123. package/src/components/wrapper/NavItem.tsx +41 -41
  124. package/src/components/wrapper/NewPrivateMessage.tsx +103 -103
  125. package/src/components/wrapper/NotificationMenu.tsx +96 -96
  126. package/src/components/wrapper/Notifications.tsx +53 -53
  127. package/src/components/wrapper/PrivateMessageDetails.tsx +24 -24
  128. package/src/components/wrapper/PrivateMessages.tsx +92 -92
  129. package/src/components/wrapper/SiteWrapper.tsx +99 -97
  130. package/src/components/wrapper/TabPanel.tsx +30 -30
  131. package/src/components/wrapper/UserMenu.tsx +106 -106
  132. package/src/components/wrapper/index.tsx +5 -5
  133. package/src/donationComponents/DonationPage.tsx +136 -136
  134. package/src/donationComponents/components/BankForm.tsx +159 -159
  135. package/src/donationComponents/components/CardForm.tsx +104 -104
  136. package/src/donationComponents/components/DonationForm.tsx +235 -235
  137. package/src/donationComponents/components/FundDonation.tsx +49 -49
  138. package/src/donationComponents/components/FundDonations.tsx +39 -39
  139. package/src/donationComponents/components/NonAuthDonation.tsx +31 -31
  140. package/src/donationComponents/components/NonAuthDonationInner.tsx +259 -259
  141. package/src/donationComponents/components/PaymentMethods.tsx +135 -135
  142. package/src/donationComponents/components/RecurringDonations.tsx +121 -121
  143. package/src/donationComponents/components/RecurringDonationsEdit.tsx +93 -93
  144. package/src/donationComponents/components/index.tsx +9 -9
  145. package/src/donationComponents/index.ts +3 -3
  146. package/src/donationComponents/modals/DonationPreviewModal.tsx +66 -66
  147. package/src/helpers/AnalyticsHelper.ts +33 -33
  148. package/src/helpers/ApiHelper.ts +125 -125
  149. package/src/helpers/AppearanceHelper.ts +69 -69
  150. package/src/helpers/ArrayHelper.ts +81 -81
  151. package/src/helpers/CommonEnvironmentHelper.ts +80 -80
  152. package/src/helpers/CurrencyHelper.ts +10 -10
  153. package/src/helpers/DateHelper.ts +109 -109
  154. package/src/helpers/DonationHelper.ts +26 -26
  155. package/src/helpers/ErrorHelper.ts +36 -36
  156. package/src/helpers/EventHelper.ts +52 -52
  157. package/src/helpers/FileHelper.ts +31 -31
  158. package/src/helpers/PersonHelper.ts +60 -60
  159. package/src/helpers/SocketHelper.ts +78 -78
  160. package/src/helpers/Themes.ts +14 -14
  161. package/src/helpers/UniqueIdHelper.ts +36 -36
  162. package/src/helpers/UserHelper.ts +59 -59
  163. package/src/helpers/createEmotionCache.ts +17 -17
  164. package/src/helpers/index.ts +18 -18
  165. package/src/hooks/index.ts +1 -1
  166. package/src/hooks/useMountedState.ts +16 -16
  167. package/src/index.ts +6 -6
  168. package/src/interfaces/Access.ts +24 -24
  169. package/src/interfaces/Attendance.ts +8 -8
  170. package/src/interfaces/Content.ts +10 -10
  171. package/src/interfaces/Doing.ts +24 -24
  172. package/src/interfaces/Donation.ts +45 -45
  173. package/src/interfaces/Error.ts +17 -17
  174. package/src/interfaces/Membership.ts +51 -51
  175. package/src/interfaces/Messaging.ts +11 -11
  176. package/src/interfaces/Permissions.ts +68 -68
  177. package/src/interfaces/Reporting.ts +7 -7
  178. package/src/interfaces/UserContextInterface.ts +13 -13
  179. package/src/interfaces/index.ts +13 -13
  180. package/src/pageComponents/LoginPage.tsx +244 -244
  181. package/src/pageComponents/LogoutPage.tsx +28 -28
  182. package/src/pageComponents/components/Forgot.tsx +79 -79
  183. package/src/pageComponents/components/Login.tsx +54 -54
  184. package/src/pageComponents/components/LoginSetPassword.tsx +63 -63
  185. package/src/pageComponents/components/Register.tsx +107 -107
  186. package/src/pageComponents/components/SelectChurchModal.tsx +41 -41
  187. package/src/pageComponents/components/SelectChurchRegister.tsx +88 -88
  188. package/src/pageComponents/components/SelectChurchSearch.tsx +69 -69
  189. package/src/pageComponents/components/SelectableChurch.tsx +38 -38
  190. package/src/pageComponents/index.ts +3 -3
  191. package/tsconfig.json +34 -34
  192. package/tslint.json +14 -14
@@ -1,93 +1,93 @@
1
- import React from "react";
2
- import { ApiHelper } from "../../helpers";
3
- import { InputBox } from "../../components";
4
- import { StripePaymentMethod, SubscriptionInterface } from "../../interfaces";
5
- import { FormControl, Grid, InputLabel, MenuItem, Select, SelectChangeEvent, TextField } from "@mui/material"
6
- import { DonationHelper } from "../../helpers"
7
-
8
- interface Props { subscriptionUpdated: (message?: string) => void, customerId: string, paymentMethods: StripePaymentMethod[], editSubscription: SubscriptionInterface };
9
-
10
- export const RecurringDonationsEdit: React.FC<Props> = (props) => {
11
- const [editSubscription, setEditSubscription] = React.useState<SubscriptionInterface>(props.editSubscription);
12
- const [interval, setInterval] = React.useState("one_month");
13
-
14
- const handleCancel = () => { props.subscriptionUpdated(); }
15
- const handleSave = () => {
16
- let sub = { ...editSubscription } as SubscriptionInterface;
17
- const pmFound = props.paymentMethods.find((pm: StripePaymentMethod) => pm.id === sub.id);
18
- if (!pmFound) {
19
- let pm = props.paymentMethods[0];
20
- sub.default_payment_method = pm.type === "card" ? pm.id : null;
21
- sub.default_source = pm.type === "bank" ? pm.id : null;
22
- }
23
- ApiHelper.post("/subscriptions", [sub], "GivingApi").then(() => props.subscriptionUpdated("Recurring donation updated."))
24
- }
25
-
26
- const handleDelete = () => {
27
- const conf = window.confirm("Are you sure you want to delete this recurring donation?");
28
- if (!conf) return;
29
- let promises = [];
30
- promises.push(ApiHelper.delete("/subscriptions/" + props.editSubscription.id, "GivingApi"));
31
- promises.push(ApiHelper.delete("/subscriptionfunds/subscription/" + props.editSubscription.id, "GivingApi"));
32
- Promise.all(promises).then(() => props.subscriptionUpdated("Recurring donation canceled."));
33
- }
34
-
35
- const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement> | SelectChangeEvent<string>) => {
36
- let sub = { ...editSubscription } as SubscriptionInterface;
37
- let value = e.target.value;
38
- switch (e.target.name) {
39
- case "method":
40
- let pm = props.paymentMethods.find((pm: StripePaymentMethod) => pm.id === value);
41
- sub.default_payment_method = pm.type === "card" ? value : null;
42
- sub.default_source = pm.type === "bank" ? value : null;
43
- break;
44
- case "interval":
45
- setInterval(value);
46
- const inter = DonationHelper.getInterval(value);
47
- sub.plan.interval_count = inter.interval_count;
48
- sub.plan.interval = inter.interval;
49
- break;
50
- }
51
- setEditSubscription(sub);
52
- }
53
-
54
- const getFields = () => (
55
- <>
56
- <Grid container spacing={3}>
57
- <Grid item md={6} xs={12}>
58
- <FormControl fullWidth>
59
- <InputLabel>Method</InputLabel>
60
- <Select label="Method" name="method" aria-label="method" value={editSubscription.default_payment_method || editSubscription.default_source} className="capitalize" onChange={handleChange}>
61
- {props.paymentMethods.map((paymentMethod: any, i: number) => <MenuItem key={i} value={paymentMethod.id}>{paymentMethod.name} ****{paymentMethod.last4}</MenuItem>)}
62
- </Select>
63
- </FormControl>
64
- </Grid>
65
- <Grid item md={6} xs={12}>
66
- <FormControl fullWidth>
67
- <InputLabel>Frequency</InputLabel>
68
- <Select label="Frequency" name="interval" aria-label="interval" value={interval} onChange={handleChange}>
69
- <MenuItem value="one_week">Weekly</MenuItem>
70
- <MenuItem value="two_week">Bi-Weekly</MenuItem>
71
- <MenuItem value="one_month">Monthly</MenuItem>
72
- <MenuItem value="three_month">Quarterly</MenuItem>
73
- <MenuItem value="one_year">Annually</MenuItem>
74
- </Select>
75
- </FormControl>
76
- </Grid>
77
- </Grid>
78
- </>
79
- )
80
-
81
- React.useEffect(() => {
82
- if (props.editSubscription) {
83
- const keyName = DonationHelper.getIntervalKeyName(props.editSubscription.plan.interval_count, props.editSubscription.plan.interval);
84
- setInterval(keyName);
85
- }
86
- }, [props.editSubscription]);
87
-
88
- return (
89
- <InputBox aria-label="person-details-box" headerIcon="person" headerText="Edit Recurring Donation" ariaLabelSave="save-button" ariaLabelDelete="delete-button" cancelFunction={handleCancel} deleteFunction={handleDelete} saveFunction={handleSave}>
90
- {getFields()}
91
- </InputBox>
92
- );
93
- }
1
+ import React from "react";
2
+ import { ApiHelper } from "../../helpers";
3
+ import { InputBox } from "../../components";
4
+ import { StripePaymentMethod, SubscriptionInterface } from "../../interfaces";
5
+ import { FormControl, Grid, InputLabel, MenuItem, Select, SelectChangeEvent, TextField } from "@mui/material"
6
+ import { DonationHelper } from "../../helpers"
7
+
8
+ interface Props { subscriptionUpdated: (message?: string) => void, customerId: string, paymentMethods: StripePaymentMethod[], editSubscription: SubscriptionInterface };
9
+
10
+ export const RecurringDonationsEdit: React.FC<Props> = (props) => {
11
+ const [editSubscription, setEditSubscription] = React.useState<SubscriptionInterface>(props.editSubscription);
12
+ const [interval, setInterval] = React.useState("one_month");
13
+
14
+ const handleCancel = () => { props.subscriptionUpdated(); }
15
+ const handleSave = () => {
16
+ let sub = { ...editSubscription } as SubscriptionInterface;
17
+ const pmFound = props.paymentMethods.find((pm: StripePaymentMethod) => pm.id === sub.id);
18
+ if (!pmFound) {
19
+ let pm = props.paymentMethods[0];
20
+ sub.default_payment_method = pm.type === "card" ? pm.id : null;
21
+ sub.default_source = pm.type === "bank" ? pm.id : null;
22
+ }
23
+ ApiHelper.post("/subscriptions", [sub], "GivingApi").then(() => props.subscriptionUpdated("Recurring donation updated."))
24
+ }
25
+
26
+ const handleDelete = () => {
27
+ const conf = window.confirm("Are you sure you want to delete this recurring donation?");
28
+ if (!conf) return;
29
+ let promises = [];
30
+ promises.push(ApiHelper.delete("/subscriptions/" + props.editSubscription.id, "GivingApi"));
31
+ promises.push(ApiHelper.delete("/subscriptionfunds/subscription/" + props.editSubscription.id, "GivingApi"));
32
+ Promise.all(promises).then(() => props.subscriptionUpdated("Recurring donation canceled."));
33
+ }
34
+
35
+ const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement> | SelectChangeEvent<string>) => {
36
+ let sub = { ...editSubscription } as SubscriptionInterface;
37
+ let value = e.target.value;
38
+ switch (e.target.name) {
39
+ case "method":
40
+ let pm = props.paymentMethods.find((pm: StripePaymentMethod) => pm.id === value);
41
+ sub.default_payment_method = pm.type === "card" ? value : null;
42
+ sub.default_source = pm.type === "bank" ? value : null;
43
+ break;
44
+ case "interval":
45
+ setInterval(value);
46
+ const inter = DonationHelper.getInterval(value);
47
+ sub.plan.interval_count = inter.interval_count;
48
+ sub.plan.interval = inter.interval;
49
+ break;
50
+ }
51
+ setEditSubscription(sub);
52
+ }
53
+
54
+ const getFields = () => (
55
+ <>
56
+ <Grid container spacing={3}>
57
+ <Grid item md={6} xs={12}>
58
+ <FormControl fullWidth>
59
+ <InputLabel>Method</InputLabel>
60
+ <Select label="Method" name="method" aria-label="method" value={editSubscription.default_payment_method || editSubscription.default_source} className="capitalize" onChange={handleChange}>
61
+ {props.paymentMethods.map((paymentMethod: any, i: number) => <MenuItem key={i} value={paymentMethod.id}>{paymentMethod.name} ****{paymentMethod.last4}</MenuItem>)}
62
+ </Select>
63
+ </FormControl>
64
+ </Grid>
65
+ <Grid item md={6} xs={12}>
66
+ <FormControl fullWidth>
67
+ <InputLabel>Frequency</InputLabel>
68
+ <Select label="Frequency" name="interval" aria-label="interval" value={interval} onChange={handleChange}>
69
+ <MenuItem value="one_week">Weekly</MenuItem>
70
+ <MenuItem value="two_week">Bi-Weekly</MenuItem>
71
+ <MenuItem value="one_month">Monthly</MenuItem>
72
+ <MenuItem value="three_month">Quarterly</MenuItem>
73
+ <MenuItem value="one_year">Annually</MenuItem>
74
+ </Select>
75
+ </FormControl>
76
+ </Grid>
77
+ </Grid>
78
+ </>
79
+ )
80
+
81
+ React.useEffect(() => {
82
+ if (props.editSubscription) {
83
+ const keyName = DonationHelper.getIntervalKeyName(props.editSubscription.plan.interval_count, props.editSubscription.plan.interval);
84
+ setInterval(keyName);
85
+ }
86
+ }, [props.editSubscription]);
87
+
88
+ return (
89
+ <InputBox aria-label="person-details-box" headerIcon="person" headerText="Edit Recurring Donation" ariaLabelSave="save-button" ariaLabelDelete="delete-button" cancelFunction={handleCancel} deleteFunction={handleDelete} saveFunction={handleSave}>
90
+ {getFields()}
91
+ </InputBox>
92
+ );
93
+ }
@@ -1,9 +1,9 @@
1
- export { BankForm } from "./BankForm";
2
- export { CardForm } from "./CardForm";
3
- export { DonationForm } from "./DonationForm";
4
- export { NonAuthDonation } from "./NonAuthDonation";
5
- export { PaymentMethods } from "./PaymentMethods";
6
- export { RecurringDonations } from "./RecurringDonations";
7
- export { RecurringDonationsEdit } from "./RecurringDonationsEdit";
8
- export { FundDonations } from "./FundDonations";
9
- export { FundDonation } from "./FundDonation";
1
+ export { BankForm } from "./BankForm";
2
+ export { CardForm } from "./CardForm";
3
+ export { DonationForm } from "./DonationForm";
4
+ export { NonAuthDonation } from "./NonAuthDonation";
5
+ export { PaymentMethods } from "./PaymentMethods";
6
+ export { RecurringDonations } from "./RecurringDonations";
7
+ export { RecurringDonationsEdit } from "./RecurringDonationsEdit";
8
+ export { FundDonations } from "./FundDonations";
9
+ export { FundDonation } from "./FundDonation";
@@ -1,3 +1,3 @@
1
- export { DonationPage } from "./DonationPage";
2
- export { FundDonations } from "./components/FundDonations";
3
- export { NonAuthDonation } from "./components/NonAuthDonation";
1
+ export { DonationPage } from "./DonationPage";
2
+ export { FundDonations } from "./components/FundDonations";
3
+ export { NonAuthDonation } from "./components/NonAuthDonation";
@@ -1,66 +1,66 @@
1
- import React from "react";
2
- import { DateHelper, CurrencyHelper } from "../../helpers";
3
- import { StripeDonationInterface } from "../../interfaces";
4
- import { Table, TableBody, TableRow, TableCell, Dialog, DialogTitle, DialogContent, DialogActions, Button } from "@mui/material"
5
-
6
- interface Props {
7
- show: boolean;
8
- onHide: () => void;
9
- handleDonate: (message: string) => void;
10
- donation: StripeDonationInterface;
11
- donationType: string;
12
- paymentMethodName: string;
13
- funds: any;
14
- payFee: number;
15
- }
16
-
17
- export const DonationPreviewModal: React.FC<Props> = (props) => {
18
- const donationType: any = { once: "One-time Donation", recurring: "Recurring Donation" };
19
- const [isLoading, setLoading] = React.useState<boolean>(false);
20
-
21
- const handleClick = () => {
22
- setLoading(true);
23
- let message = "Thank you for your donation.";
24
- if (props.donationType === "recurring") message = "Recurring donation created. " + message;
25
- props.handleDonate(message);
26
- }
27
-
28
- const formatInterval = () => {
29
- const count = props.donation.interval.interval_count;
30
- const interval = props.donation.interval.interval;
31
- let result = `${count} ${interval}`;
32
- return count > 1 ? result + "s" : result;
33
- }
34
-
35
- return (
36
- <Dialog open={props.show} {...props}>
37
- <DialogTitle>Donation Preview</DialogTitle>
38
- <DialogContent>
39
- <Table>
40
- <TableBody>
41
- <TableRow><TableCell>Name:</TableCell><TableCell>{props.donation.person.name}</TableCell></TableRow>
42
- <TableRow><TableCell>Payment Method:</TableCell><TableCell className="capitalize">{props.paymentMethodName}</TableCell></TableRow>
43
- <TableRow><TableCell>Type:</TableCell><TableCell>{donationType[props.donationType]}</TableCell></TableRow>
44
- {props.donationType === "once"
45
- && <TableRow><TableCell>Donation Date:</TableCell><TableCell>{DateHelper.formatHtml5Date(new Date(props.donation.billing_cycle_anchor))}</TableCell></TableRow>
46
- }
47
- <TableRow><TableCell>Notes:</TableCell><TableCell>{props.donation.notes}</TableCell></TableRow>
48
- {props.donationType === "recurring"
49
- && <>
50
- <TableRow><TableCell>Starting On:</TableCell><TableCell>{DateHelper.formatHtml5Date(new Date(props.donation.billing_cycle_anchor))}</TableCell></TableRow>
51
- <TableRow><TableCell>Recurring Every:</TableCell><TableCell className="capitalize">{formatInterval()}</TableCell></TableRow>
52
- </>
53
- }
54
- <TableRow><TableCell>Funds:</TableCell><TableCell>{props.donation.funds.map((fund: any, i: number) => <p key={i}>{CurrencyHelper.formatCurrency(fund.amount)} - {fund.name}</p>)}</TableCell></TableRow>
55
- {props.payFee > 0 && <TableRow><TableCell>Transaction Fee:</TableCell><TableCell>{CurrencyHelper.formatCurrency(props.payFee)}</TableCell></TableRow>}
56
- <TableRow><TableCell>Total:</TableCell><TableCell><h4>{CurrencyHelper.formatCurrency(props.donation.amount)}</h4></TableCell></TableRow>
57
- </TableBody>
58
- </Table>
59
- </DialogContent>
60
- <DialogActions>
61
- <Button onClick={props.onHide} variant="outlined" aria-label="cancel-button">Cancel</Button>
62
- <Button onClick={handleClick} variant="contained" aria-label="donate-button" disabled={isLoading}>Donate</Button>
63
- </DialogActions>
64
- </Dialog>
65
- );
66
- }
1
+ import React from "react";
2
+ import { DateHelper, CurrencyHelper } from "../../helpers";
3
+ import { StripeDonationInterface } from "../../interfaces";
4
+ import { Table, TableBody, TableRow, TableCell, Dialog, DialogTitle, DialogContent, DialogActions, Button } from "@mui/material"
5
+
6
+ interface Props {
7
+ show: boolean;
8
+ onHide: () => void;
9
+ handleDonate: (message: string) => void;
10
+ donation: StripeDonationInterface;
11
+ donationType: string;
12
+ paymentMethodName: string;
13
+ funds: any;
14
+ payFee: number;
15
+ }
16
+
17
+ export const DonationPreviewModal: React.FC<Props> = (props) => {
18
+ const donationType: any = { once: "One-time Donation", recurring: "Recurring Donation" };
19
+ const [isLoading, setLoading] = React.useState<boolean>(false);
20
+
21
+ const handleClick = () => {
22
+ setLoading(true);
23
+ let message = "Thank you for your donation.";
24
+ if (props.donationType === "recurring") message = "Recurring donation created. " + message;
25
+ props.handleDonate(message);
26
+ }
27
+
28
+ const formatInterval = () => {
29
+ const count = props.donation.interval.interval_count;
30
+ const interval = props.donation.interval.interval;
31
+ let result = `${count} ${interval}`;
32
+ return count > 1 ? result + "s" : result;
33
+ }
34
+
35
+ return (
36
+ <Dialog open={props.show} {...props}>
37
+ <DialogTitle>Donation Preview</DialogTitle>
38
+ <DialogContent>
39
+ <Table>
40
+ <TableBody>
41
+ <TableRow><TableCell>Name:</TableCell><TableCell>{props.donation.person.name}</TableCell></TableRow>
42
+ <TableRow><TableCell>Payment Method:</TableCell><TableCell className="capitalize">{props.paymentMethodName}</TableCell></TableRow>
43
+ <TableRow><TableCell>Type:</TableCell><TableCell>{donationType[props.donationType]}</TableCell></TableRow>
44
+ {props.donationType === "once"
45
+ && <TableRow><TableCell>Donation Date:</TableCell><TableCell>{DateHelper.formatHtml5Date(new Date(props.donation.billing_cycle_anchor))}</TableCell></TableRow>
46
+ }
47
+ <TableRow><TableCell>Notes:</TableCell><TableCell>{props.donation.notes}</TableCell></TableRow>
48
+ {props.donationType === "recurring"
49
+ && <>
50
+ <TableRow><TableCell>Starting On:</TableCell><TableCell>{DateHelper.formatHtml5Date(new Date(props.donation.billing_cycle_anchor))}</TableCell></TableRow>
51
+ <TableRow><TableCell>Recurring Every:</TableCell><TableCell className="capitalize">{formatInterval()}</TableCell></TableRow>
52
+ </>
53
+ }
54
+ <TableRow><TableCell>Funds:</TableCell><TableCell>{props.donation.funds.map((fund: any, i: number) => <p key={i}>{CurrencyHelper.formatCurrency(fund.amount)} - {fund.name}</p>)}</TableCell></TableRow>
55
+ {props.payFee > 0 && <TableRow><TableCell>Transaction Fee:</TableCell><TableCell>{CurrencyHelper.formatCurrency(props.payFee)}</TableCell></TableRow>}
56
+ <TableRow><TableCell>Total:</TableCell><TableCell><h4>{CurrencyHelper.formatCurrency(props.donation.amount)}</h4></TableCell></TableRow>
57
+ </TableBody>
58
+ </Table>
59
+ </DialogContent>
60
+ <DialogActions>
61
+ <Button onClick={props.onHide} variant="outlined" aria-label="cancel-button">Cancel</Button>
62
+ <Button onClick={handleClick} variant="contained" aria-label="donate-button" disabled={isLoading}>Donate</Button>
63
+ </DialogActions>
64
+ </Dialog>
65
+ );
66
+ }
@@ -1,33 +1,33 @@
1
- import ReactGA from "react-ga4";
2
- import { CommonEnvironmentHelper } from "./CommonEnvironmentHelper";
3
- import { UserHelper } from "./UserHelper";
4
-
5
- export class AnalyticsHelper {
6
-
7
- static init = () => {
8
- if (CommonEnvironmentHelper.GoogleAnalyticsTag !== "" && typeof(window)!=="undefined") {
9
- ReactGA.initialize([{trackingId: CommonEnvironmentHelper.GoogleAnalyticsTag}]);
10
- AnalyticsHelper.logPageView();
11
- }
12
- }
13
-
14
- static logPageView = () => {
15
- if (CommonEnvironmentHelper.GoogleAnalyticsTag !== "" && typeof(window)!=="undefined") {
16
- this.setChurchKey();
17
- ReactGA.send({ hitType: "pageview", page: window.location.pathname + window.location.search });
18
- }
19
- }
20
-
21
- static logEvent = (category: string, action: string, label?:string) => {
22
- if (CommonEnvironmentHelper.GoogleAnalyticsTag !== "" && typeof(window)!=="undefined") {
23
- this.setChurchKey();
24
- ReactGA.event({ category, action, label });
25
- }
26
- }
27
-
28
- private static setChurchKey = () => {
29
- const churchKey = UserHelper?.currentUserChurch?.church?.subDomain;
30
- if (churchKey) ReactGA.set({church_key: churchKey });
31
- }
32
-
33
- }
1
+ import ReactGA from "react-ga4";
2
+ import { CommonEnvironmentHelper } from "./CommonEnvironmentHelper";
3
+ import { UserHelper } from "./UserHelper";
4
+
5
+ export class AnalyticsHelper {
6
+
7
+ static init = () => {
8
+ if (CommonEnvironmentHelper.GoogleAnalyticsTag !== "" && typeof(window)!=="undefined") {
9
+ ReactGA.initialize([{trackingId: CommonEnvironmentHelper.GoogleAnalyticsTag}]);
10
+ AnalyticsHelper.logPageView();
11
+ }
12
+ }
13
+
14
+ static logPageView = () => {
15
+ if (CommonEnvironmentHelper.GoogleAnalyticsTag !== "" && typeof(window)!=="undefined") {
16
+ this.setChurchKey();
17
+ ReactGA.send({ hitType: "pageview", page: window.location.pathname + window.location.search });
18
+ }
19
+ }
20
+
21
+ static logEvent = (category: string, action: string, label?:string) => {
22
+ if (CommonEnvironmentHelper.GoogleAnalyticsTag !== "" && typeof(window)!=="undefined") {
23
+ this.setChurchKey();
24
+ ReactGA.event({ category, action, label });
25
+ }
26
+ }
27
+
28
+ private static setChurchKey = () => {
29
+ const churchKey = UserHelper?.currentUserChurch?.church?.subDomain;
30
+ if (churchKey) ReactGA.set({church_key: churchKey });
31
+ }
32
+
33
+ }