@churchapps/apphelper 0.4.7 → 0.4.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 (174) hide show
  1. package/CHUMS_COMPONENT_EXTRACTION_CANDIDATES.md +210 -0
  2. package/COMPONENT_USAGE_REPORT.md +322 -0
  3. package/b1app-specific-components.md +146 -0
  4. package/component-usage-analysis.md +169 -0
  5. package/dist/components/ImageEditor.d.ts +1 -1
  6. package/dist/components/ImageEditor.d.ts.map +1 -1
  7. package/dist/components/ImageEditor.js +1 -1
  8. package/dist/components/ImageEditor.js.map +1 -1
  9. package/dist/components/header/SecondaryMenu.js +3 -3
  10. package/dist/components/header/SecondaryMenu.js.map +1 -1
  11. package/dist/components/index.d.ts +0 -5
  12. package/dist/components/index.d.ts.map +1 -1
  13. package/dist/components/index.js +1 -10
  14. package/dist/components/index.js.map +1 -1
  15. package/dist/components/markdownEditor/IconNamesList.d.ts.map +1 -0
  16. package/dist/components/markdownEditor/IconNamesList.js +16 -0
  17. package/dist/components/markdownEditor/IconNamesList.js.map +1 -0
  18. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNodeTransformer.js +1 -1
  19. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNodeTransformer.js.map +1 -1
  20. package/dist/components/markdownEditor/plugins/emoji/EmojiNodeTransform.js +1 -1
  21. package/dist/components/markdownEditor/plugins/emoji/EmojiNodeTransform.js.map +1 -1
  22. package/dist/components/markdownEditor/plugins/emoji/EmojiPickerPlugin.js +1 -1
  23. package/dist/components/markdownEditor/plugins/emoji/EmojiPickerPlugin.js.map +1 -1
  24. package/dist/components/markdownEditor/plugins/emoji/EmojisPlugin.js +1 -1
  25. package/dist/components/markdownEditor/plugins/emoji/EmojisPlugin.js.map +1 -1
  26. package/dist/components/notes/index.d.ts +0 -2
  27. package/dist/components/notes/index.d.ts.map +1 -1
  28. package/dist/components/notes/index.js +1 -5
  29. package/dist/components/notes/index.js.map +1 -1
  30. package/dist/helpers/FileHelper.d.ts +1 -1
  31. package/dist/helpers/FileHelper.d.ts.map +1 -1
  32. package/dist/helpers/FileHelper.js +2 -6
  33. package/dist/helpers/FileHelper.js.map +1 -1
  34. package/dist/index.d.ts +0 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +0 -1
  37. package/dist/index.js.map +1 -1
  38. package/package.json +1 -1
  39. package/src/components/ImageEditor.tsx +1 -1
  40. package/src/components/header/SecondaryMenu.tsx +3 -3
  41. package/src/components/index.tsx +0 -5
  42. package/src/components/markdownEditor/IconNamesList.ts +14 -0
  43. package/src/components/markdownEditor/plugins/customLink/CustomLinkNodeTransformer.tsx +1 -1
  44. package/src/components/markdownEditor/plugins/emoji/EmojiNodeTransform.ts +1 -1
  45. package/src/components/markdownEditor/plugins/emoji/EmojiPickerPlugin.tsx +1 -1
  46. package/src/components/markdownEditor/plugins/emoji/EmojisPlugin.tsx +1 -1
  47. package/src/components/notes/index.ts +0 -2
  48. package/src/helpers/FileHelper.ts +3 -6
  49. package/src/index.ts +0 -1
  50. package/dist/components/B1ShareModal.d.ts +0 -9
  51. package/dist/components/B1ShareModal.d.ts.map +0 -1
  52. package/dist/components/B1ShareModal.js +0 -77
  53. package/dist/components/B1ShareModal.js.map +0 -1
  54. package/dist/components/CreatePerson.d.ts +0 -15
  55. package/dist/components/CreatePerson.d.ts.map +0 -1
  56. package/dist/components/CreatePerson.js +0 -100
  57. package/dist/components/CreatePerson.js.map +0 -1
  58. package/dist/components/PersonAdd.d.ts +0 -16
  59. package/dist/components/PersonAdd.d.ts.map +0 -1
  60. package/dist/components/PersonAdd.js +0 -52
  61. package/dist/components/PersonAdd.js.map +0 -1
  62. package/dist/components/gallery/GalleryModal.d.ts +0 -9
  63. package/dist/components/gallery/GalleryModal.d.ts.map +0 -1
  64. package/dist/components/gallery/GalleryModal.js +0 -111
  65. package/dist/components/gallery/GalleryModal.js.map +0 -1
  66. package/dist/components/gallery/StockPhotos.d.ts +0 -9
  67. package/dist/components/gallery/StockPhotos.d.ts.map +0 -1
  68. package/dist/components/gallery/StockPhotos.js +0 -79
  69. package/dist/components/gallery/StockPhotos.js.map +0 -1
  70. package/dist/components/gallery/index.d.ts +0 -2
  71. package/dist/components/gallery/index.d.ts.map +0 -1
  72. package/dist/components/gallery/index.js +0 -6
  73. package/dist/components/gallery/index.js.map +0 -1
  74. package/dist/components/iconPicker/IconNamesList.d.ts.map +0 -1
  75. package/dist/components/iconPicker/IconNamesList.js +0 -2241
  76. package/dist/components/iconPicker/IconNamesList.js.map +0 -1
  77. package/dist/components/iconPicker/IconPicker.d.ts +0 -6
  78. package/dist/components/iconPicker/IconPicker.d.ts.map +0 -1
  79. package/dist/components/iconPicker/IconPicker.js +0 -142
  80. package/dist/components/iconPicker/IconPicker.js.map +0 -1
  81. package/dist/components/notes/Conversation.d.ts +0 -10
  82. package/dist/components/notes/Conversation.d.ts.map +0 -1
  83. package/dist/components/notes/Conversation.js +0 -55
  84. package/dist/components/notes/Conversation.js.map +0 -1
  85. package/dist/components/notes/Conversations.d.ts +0 -10
  86. package/dist/components/notes/Conversations.d.ts.map +0 -1
  87. package/dist/components/notes/Conversations.js +0 -54
  88. package/dist/components/notes/Conversations.js.map +0 -1
  89. package/dist/components/notes/NewConversation.d.ts +0 -12
  90. package/dist/components/notes/NewConversation.d.ts.map +0 -1
  91. package/dist/components/notes/NewConversation.js +0 -54
  92. package/dist/components/notes/NewConversation.js.map +0 -1
  93. package/dist/donationComponents/DonationPage.d.ts +0 -11
  94. package/dist/donationComponents/DonationPage.d.ts.map +0 -1
  95. package/dist/donationComponents/DonationPage.js +0 -150
  96. package/dist/donationComponents/DonationPage.js.map +0 -1
  97. package/dist/donationComponents/components/BankForm.d.ts +0 -14
  98. package/dist/donationComponents/components/BankForm.d.ts.map +0 -1
  99. package/dist/donationComponents/components/BankForm.js +0 -125
  100. package/dist/donationComponents/components/BankForm.js.map +0 -1
  101. package/dist/donationComponents/components/CardForm.d.ts +0 -13
  102. package/dist/donationComponents/components/CardForm.d.ts.map +0 -1
  103. package/dist/donationComponents/components/CardForm.js +0 -122
  104. package/dist/donationComponents/components/CardForm.js.map +0 -1
  105. package/dist/donationComponents/components/DonationForm.d.ts +0 -15
  106. package/dist/donationComponents/components/DonationForm.d.ts.map +0 -1
  107. package/dist/donationComponents/components/DonationForm.js +0 -200
  108. package/dist/donationComponents/components/DonationForm.js.map +0 -1
  109. package/dist/donationComponents/components/FundDonation.d.ts +0 -12
  110. package/dist/donationComponents/components/FundDonation.d.ts.map +0 -1
  111. package/dist/donationComponents/components/FundDonation.js +0 -32
  112. package/dist/donationComponents/components/FundDonation.js.map +0 -1
  113. package/dist/donationComponents/components/FundDonations.d.ts +0 -11
  114. package/dist/donationComponents/components/FundDonations.d.ts.map +0 -1
  115. package/dist/donationComponents/components/FundDonations.js +0 -33
  116. package/dist/donationComponents/components/FundDonations.js.map +0 -1
  117. package/dist/donationComponents/components/NonAuthDonation.d.ts +0 -12
  118. package/dist/donationComponents/components/NonAuthDonation.d.ts.map +0 -1
  119. package/dist/donationComponents/components/NonAuthDonation.js +0 -27
  120. package/dist/donationComponents/components/NonAuthDonation.js.map +0 -1
  121. package/dist/donationComponents/components/NonAuthDonationInner.d.ts +0 -12
  122. package/dist/donationComponents/components/NonAuthDonationInner.d.ts.map +0 -1
  123. package/dist/donationComponents/components/NonAuthDonationInner.js +0 -276
  124. package/dist/donationComponents/components/NonAuthDonationInner.js.map +0 -1
  125. package/dist/donationComponents/components/PaymentMethods.d.ts +0 -14
  126. package/dist/donationComponents/components/PaymentMethods.d.ts.map +0 -1
  127. package/dist/donationComponents/components/PaymentMethods.js +0 -86
  128. package/dist/donationComponents/components/PaymentMethods.js.map +0 -1
  129. package/dist/donationComponents/components/RecurringDonations.d.ts +0 -10
  130. package/dist/donationComponents/components/RecurringDonations.d.ts.map +0 -1
  131. package/dist/donationComponents/components/RecurringDonations.js +0 -93
  132. package/dist/donationComponents/components/RecurringDonations.js.map +0 -1
  133. package/dist/donationComponents/components/RecurringDonationsEdit.d.ts +0 -11
  134. package/dist/donationComponents/components/RecurringDonationsEdit.d.ts.map +0 -1
  135. package/dist/donationComponents/components/RecurringDonationsEdit.js +0 -66
  136. package/dist/donationComponents/components/RecurringDonationsEdit.js.map +0 -1
  137. package/dist/donationComponents/components/index.d.ts +0 -10
  138. package/dist/donationComponents/components/index.d.ts.map +0 -1
  139. package/dist/donationComponents/components/index.js +0 -22
  140. package/dist/donationComponents/components/index.js.map +0 -1
  141. package/dist/donationComponents/index.d.ts +0 -4
  142. package/dist/donationComponents/index.d.ts.map +0 -1
  143. package/dist/donationComponents/index.js +0 -10
  144. package/dist/donationComponents/index.js.map +0 -1
  145. package/dist/donationComponents/modals/DonationPreviewModal.d.ts +0 -15
  146. package/dist/donationComponents/modals/DonationPreviewModal.d.ts.map +0 -1
  147. package/dist/donationComponents/modals/DonationPreviewModal.js +0 -33
  148. package/dist/donationComponents/modals/DonationPreviewModal.js.map +0 -1
  149. package/src/components/B1ShareModal.tsx +0 -104
  150. package/src/components/CreatePerson.tsx +0 -135
  151. package/src/components/PersonAdd.tsx +0 -81
  152. package/src/components/gallery/GalleryModal.tsx +0 -139
  153. package/src/components/gallery/StockPhotos.tsx +0 -75
  154. package/src/components/gallery/index.ts +0 -1
  155. package/src/components/iconPicker/IconNamesList.ts +0 -2240
  156. package/src/components/iconPicker/IconPicker.tsx +0 -160
  157. package/src/components/notes/Conversation.tsx +0 -84
  158. package/src/components/notes/Conversations.tsx +0 -60
  159. package/src/components/notes/NewConversation.tsx +0 -80
  160. package/src/donationComponents/DonationPage.tsx +0 -215
  161. package/src/donationComponents/components/BankForm.tsx +0 -161
  162. package/src/donationComponents/components/CardForm.tsx +0 -106
  163. package/src/donationComponents/components/DonationForm.tsx +0 -255
  164. package/src/donationComponents/components/FundDonation.tsx +0 -58
  165. package/src/donationComponents/components/FundDonations.tsx +0 -44
  166. package/src/donationComponents/components/NonAuthDonation.tsx +0 -33
  167. package/src/donationComponents/components/NonAuthDonationInner.tsx +0 -295
  168. package/src/donationComponents/components/PaymentMethods.tsx +0 -137
  169. package/src/donationComponents/components/RecurringDonations.tsx +0 -123
  170. package/src/donationComponents/components/RecurringDonationsEdit.tsx +0 -95
  171. package/src/donationComponents/components/index.tsx +0 -9
  172. package/src/donationComponents/index.ts +0 -3
  173. package/src/donationComponents/modals/DonationPreviewModal.tsx +0 -68
  174. /package/dist/components/{iconPicker → markdownEditor}/IconNamesList.d.ts +0 -0
@@ -1,139 +0,0 @@
1
- "use client";
2
-
3
- import { FileHelper, ApiHelper, Locale } from "../../helpers";
4
- import { CommonEnvironmentHelper } from "../../helpers/CommonEnvironmentHelper";
5
- import { } from "../../helpers";
6
- import { Box, Button, Dialog, DialogActions, DialogContent, DialogTitle, FormControl, Grid, IconButton, InputLabel, MenuItem, Select, Tab, Tabs, Tooltip, Icon } from "@mui/material";
7
- import React, { useState } from "react";
8
- import { ImageEditor } from "../ImageEditor";
9
- import { TabPanel } from "../TabPanel";
10
- import { StockPhotos } from "./StockPhotos";
11
-
12
- interface Props {
13
- aspectRatio: number,
14
- onClose: () => void,
15
- onSelect: (img: string) => void
16
- }
17
-
18
- export const GalleryModal: React.FC<Props> = (props: Props) => {
19
- const [images, setImages] = useState<string[]>([]);
20
- const [tabIndex, setTabIndex] = React.useState(0);
21
- const [aspectRatio, setAspectRatio] = React.useState(Math.round(props.aspectRatio * 100) / 100);
22
- const [editorPhotoUrl, setEditorPhotoUrl] = React.useState("");
23
-
24
- const handleTabChange = (el: any, newValue: any) => { setTabIndex(newValue); }
25
-
26
- const loadData = () => { ApiHelper.get("/gallery/" + aspectRatio.toString(), "ContentApi").then(data => setImages(data.images)); }
27
-
28
- const handleImageUpdated = async (dataUrl: string) => {
29
- const fileName = Math.floor(Date.now() / 1000).toString() + ".jpg"
30
- const blob = FileHelper.dataURLtoBlob(dataUrl);
31
- const file = new File([blob], "file_name");
32
-
33
- const params = { folder: aspectRatio.toString(), fileName };
34
- const presigned = await ApiHelper.post("/gallery/requestUpload", params, "ContentApi");
35
- const doUpload = presigned.key !== undefined;
36
- if (doUpload) await FileHelper.postPresignedFile(presigned, file, () => { });
37
- //return doUpload;
38
- setTabIndex(0);
39
- loadData();
40
- };
41
-
42
- const handleDelete = (folder: string, image: string) => {
43
- if (window.confirm(Locale.label("gallery.confirmDelete"))){
44
- ApiHelper.delete("/gallery/" + folder + "/" + image, "ContentApi").then(() => { loadData(); });
45
- }
46
- }
47
-
48
- React.useEffect(() => { if (aspectRatio !== props.aspectRatio) setAspectRatio(Math.round(props.aspectRatio * 100) / 100) }, [props.aspectRatio]); //eslint-disable-line
49
- React.useEffect(loadData, [aspectRatio]); //eslint-disable-line
50
-
51
- const getImages = () => {
52
- let result: React.ReactElement[] = [];
53
- images.forEach(img => {
54
- const parts = img.split("/");
55
-
56
- result.push(<Grid size={{ xs: 12, md: 4 }}>
57
- <Box sx={{ position: "relative", ":hover #deleteIcon": { visibility: "visible" } }}>
58
- <a href="about:blank" onClick={(e) => { e.preventDefault(); props.onSelect(CommonEnvironmentHelper.ContentRoot + "/" + img) }} aria-label="Select image" data-testid="select-image">
59
- <Box component="img" src={CommonEnvironmentHelper.ContentRoot + "/" + img} className="img-fluid" alt="custom" />
60
- </a>
61
- <Box id="deleteIcon" sx={{ position: "absolute", top: 3, right: 3, visibility: "hidden", backgroundColor: "whitesmoke", borderRadius: 5 }}>
62
- <Tooltip title="Delete">
63
- <IconButton size="small" color="error" onClick={() => handleDelete(parts[2], parts[3])} aria-label="Delete image" data-testid="delete-image">
64
- <Icon sx={{ fontSize: "17px !important" }}>delete_outline</Icon>
65
- </IconButton>
66
- </Tooltip>
67
- </Box>
68
- </Box>
69
- </Grid>);
70
- })
71
- return result;
72
- }
73
-
74
- const handleStockSelect = (url: string) => {
75
- setEditorPhotoUrl(url);
76
- setTabIndex(1);
77
- }
78
-
79
- const getDisplayAspect = () => {
80
- let result = aspectRatio.toString();
81
- if (aspectRatio === 0) result = "Free Form";
82
- else if (aspectRatio === 1) result = "1:1";
83
- else if (aspectRatio === 2) result = "2:1";
84
- else if (aspectRatio === 3) result = "3:1";
85
- else if (aspectRatio === 4) result = "4:1";
86
- else if (aspectRatio === 1.33) result = "4:3";
87
- else if (aspectRatio === 1.78) result = "16:9";
88
- else if (aspectRatio === 0.5) result = "1:2";
89
- else if (aspectRatio === 0.5625) result = "9:16";
90
- return result;
91
- }
92
-
93
- return (<>
94
- <Dialog open={true} onClose={props.onClose}>
95
- <DialogTitle>Select a Photo</DialogTitle>
96
- <DialogContent style={{ overflowX: "hidden" }}>
97
-
98
- {(props.aspectRatio === 0) && (
99
- <FormControl fullWidth>
100
- <InputLabel>{Locale.label("gallery.aspectRatio")}</InputLabel>
101
- <Select size="small" label={Locale.label("gallery.aspectRatio")} name="aspectRatio" value={aspectRatio} onChange={(e) => setAspectRatio(parseFloat(e.target.value.toString()))}>
102
- <MenuItem value="0">{Locale.label("gallery.freeForm")}</MenuItem>
103
- <MenuItem value="1">1:1</MenuItem>
104
- <MenuItem value="2">2:1</MenuItem>
105
- <MenuItem value="3">3:1</MenuItem>
106
- <MenuItem value="4">4:1</MenuItem>
107
- <MenuItem value="1.33">4:3</MenuItem>
108
- <MenuItem value="1.78">16:9</MenuItem>
109
- <MenuItem value="0.5">1:2</MenuItem>
110
- <MenuItem value="0.5625">9:16</MenuItem>
111
- </Select>
112
- </FormControl>
113
- )}
114
-
115
- <Tabs variant="fullWidth" value={tabIndex} onChange={handleTabChange}>
116
- <Tab label="Gallery" />
117
- <Tab label="Upload" />
118
- <Tab label="Stock Photos" />
119
- </Tabs>
120
- <TabPanel value={tabIndex} index={0}>
121
-
122
- <Grid container spacing={3} alignItems="center">
123
- {getImages()}
124
- </Grid>
125
- </TabPanel>
126
- <TabPanel value={tabIndex} index={1}>
127
- <div>{Locale.label("gallery.aspectRatio")}: {getDisplayAspect()}</div>
128
- <ImageEditor onUpdate={handleImageUpdated} photoUrl={editorPhotoUrl} aspectRatio={aspectRatio} outputWidth={1280} outputHeight={768} hideDelete={true} />
129
- </TabPanel>
130
- <TabPanel value={tabIndex} index={2}>
131
- <StockPhotos aspectRatio={aspectRatio} onSelect={props.onSelect} onStockSelect={handleStockSelect} />
132
- </TabPanel>
133
- </DialogContent>
134
- <DialogActions sx={{ paddingX: "16px", paddingBottom: "12px" }}>
135
- <Button variant="outlined" onClick={props.onClose}>Close</Button>
136
- </DialogActions>
137
- </Dialog>
138
- </>);
139
- };
@@ -1,75 +0,0 @@
1
- "use client";
2
- import { Button, Grid, TextField } from "@mui/material";
3
- import React, { useState } from "react";
4
- import { ApiHelper, Locale } from "../../helpers";
5
- import { CommonEnvironmentHelper } from "../../helpers/CommonEnvironmentHelper";
6
-
7
- interface Props {
8
- aspectRatio: number,
9
- onSelect: (img: string) => void,
10
- onStockSelect: (img: string) => void
11
- }
12
-
13
- interface SearchResult { description: string, url: string, photographer: string, photographerUrl: string, large: string, thumbnail: string }
14
-
15
- export const StockPhotos: React.FC<Props> = (props: Props) => {
16
- const [images, setImages] = useState<string[]>([]);
17
- const [searchText, setSearchText] = useState("");
18
- const [searchResults, setSearchResults] = useState<SearchResult[]>(null);
19
-
20
- const loadData = () => { ApiHelper.getAnonymous("/gallery/stock/" + props.aspectRatio.toString(), "ContentApi").then(data => setImages(data.images)); }
21
-
22
- React.useEffect(loadData, [props.aspectRatio]); //eslint-disable-line
23
-
24
- const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => { e.preventDefault(); setSearchText(e.currentTarget.value); }
25
-
26
- const handleSearch = (e: React.MouseEvent) => {
27
- if (e !== null) e.preventDefault();
28
- let term = searchText.trim();
29
- ApiHelper.post("/stock/search", { term: term }, "ContentApi").then((data: SearchResult[]) => { setSearchResults(data) });
30
- }
31
-
32
- const getImages = () => {
33
- if (searchResults) return getResults();
34
- else return getSuggested();
35
- }
36
-
37
- const getResults = () => {
38
- let result: React.ReactElement[] = [];
39
- searchResults.forEach(p => {
40
- result.push(<Grid size={{ xs: 12, md: 4 }}>
41
- <a href="about:blank" onClick={(e) => { e.preventDefault(); props.onStockSelect(p.large) }}>
42
- <img src={p.thumbnail} className="img-fluid" alt="stock" />
43
- </a>
44
- <div>
45
- <i style={{ fontSize: 12 }}>
46
- <a href={p.url} target="_blank" rel="noreferrer noopener">{Locale.label("stockPhotos.photoBy")}</a> <a href={p.photographerUrl} target="_blank" rel="noreferrer noopener">{p.photographer}</a></i>
47
- </div>
48
- </Grid>);
49
- })
50
- return result;
51
- }
52
-
53
- const getSuggested = () => {
54
- let result: React.ReactElement[] = [];
55
- images.forEach(img => {
56
- result.push(<Grid size={{ xs: 12, md: 4 }}>
57
- <a href="about:blank" onClick={(e) => { e.preventDefault(); props.onSelect(CommonEnvironmentHelper.ContentRoot + "/" + img) }}>
58
- <img src={CommonEnvironmentHelper.ContentRoot + "/" + img} className="img-fluid" alt="stock" />
59
- </a>
60
- </Grid>);
61
- })
62
- return result;
63
- }
64
-
65
- return (<>
66
- <TextField fullWidth name="personAddText" label="Search Term" value={searchText} onChange={handleChange}
67
- InputProps={{ endAdornment: <Button variant="contained" id="searchButton" data-testid="search-button" onClick={handleSearch}>Search</Button> }}
68
- />
69
- {searchResults && <div>{Locale.label("stockPhotos.providedBy")} <a href="https://pexels.com">Pexels</a>.</div>}
70
- <Grid container spacing={3} alignItems="center">
71
- {getImages()}
72
- </Grid>
73
-
74
- </>);
75
- };
@@ -1 +0,0 @@
1
- export { GalleryModal } from "./GalleryModal";