@churchapps/apphelper 0.4.12 → 0.4.18

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 (608) hide show
  1. package/dist/components/DisplayBox.js +12 -18
  2. package/dist/components/DisplayBox.js.map +1 -1
  3. package/dist/components/ErrorMessages.js +9 -46
  4. package/dist/components/ErrorMessages.js.map +1 -1
  5. package/dist/components/ExportLink.d.ts.map +1 -1
  6. package/dist/components/ExportLink.js +8 -10
  7. package/dist/components/ExportLink.js.map +1 -1
  8. package/dist/components/FloatingSupport.js +7 -14
  9. package/dist/components/FloatingSupport.js.map +1 -1
  10. package/dist/components/FormCardPayment.d.ts.map +1 -1
  11. package/dist/components/FormCardPayment.js +28 -64
  12. package/dist/components/FormCardPayment.js.map +1 -1
  13. package/dist/components/FormSubmissionEdit.d.ts.map +1 -1
  14. package/dist/components/FormSubmissionEdit.js +28 -66
  15. package/dist/components/FormSubmissionEdit.js.map +1 -1
  16. package/dist/components/HelpIcon.js +3 -7
  17. package/dist/components/HelpIcon.js.map +1 -1
  18. package/dist/components/ImageEditor.d.ts.map +1 -1
  19. package/dist/components/ImageEditor.js +13 -19
  20. package/dist/components/ImageEditor.js.map +1 -1
  21. package/dist/components/InputBox.d.ts.map +1 -1
  22. package/dist/components/InputBox.js +13 -15
  23. package/dist/components/InputBox.js.map +1 -1
  24. package/dist/components/Loading.d.ts +0 -1
  25. package/dist/components/Loading.d.ts.map +1 -1
  26. package/dist/components/Loading.js +52 -12
  27. package/dist/components/Loading.js.map +1 -1
  28. package/dist/components/PageHeader.d.ts +15 -0
  29. package/dist/components/PageHeader.d.ts.map +1 -0
  30. package/dist/components/PageHeader.js +41 -0
  31. package/dist/components/PageHeader.js.map +1 -0
  32. package/dist/components/PersonAvatar.d.ts +12 -0
  33. package/dist/components/PersonAvatar.d.ts.map +1 -0
  34. package/dist/components/PersonAvatar.js +55 -0
  35. package/dist/components/PersonAvatar.js.map +1 -0
  36. package/dist/components/QuestionEdit.js +20 -26
  37. package/dist/components/QuestionEdit.js.map +1 -1
  38. package/dist/components/SmallButton.js +9 -15
  39. package/dist/components/SmallButton.js.map +1 -1
  40. package/dist/components/SupportModal.d.ts.map +1 -1
  41. package/dist/components/SupportModal.js +5 -9
  42. package/dist/components/SupportModal.js.map +1 -1
  43. package/dist/components/TabPanel.js +5 -9
  44. package/dist/components/TabPanel.js.map +1 -1
  45. package/dist/components/header/Banner.js +3 -7
  46. package/dist/components/header/Banner.js.map +1 -1
  47. package/dist/components/header/PrimaryMenu.d.ts.map +1 -1
  48. package/dist/components/header/PrimaryMenu.js +30 -30
  49. package/dist/components/header/PrimaryMenu.js.map +1 -1
  50. package/dist/components/header/SecondaryMenu.js +6 -10
  51. package/dist/components/header/SecondaryMenu.js.map +1 -1
  52. package/dist/components/header/SecondaryMenuAlt.js +8 -15
  53. package/dist/components/header/SecondaryMenuAlt.js.map +1 -1
  54. package/dist/components/header/SiteHeader.d.ts +2 -1
  55. package/dist/components/header/SiteHeader.d.ts.map +1 -1
  56. package/dist/components/header/SiteHeader.js +109 -17
  57. package/dist/components/header/SiteHeader.js.map +1 -1
  58. package/dist/components/header/SupportDrawer.js +14 -18
  59. package/dist/components/header/SupportDrawer.js.map +1 -1
  60. package/dist/components/header/index.js +2 -7
  61. package/dist/components/header/index.js.map +1 -1
  62. package/dist/components/index.d.ts +2 -4
  63. package/dist/components/index.d.ts.map +1 -1
  64. package/dist/components/index.js +18 -52
  65. package/dist/components/index.js.map +1 -1
  66. package/dist/components/notes/AddNote.d.ts.map +1 -1
  67. package/dist/components/notes/AddNote.js +56 -54
  68. package/dist/components/notes/AddNote.js.map +1 -1
  69. package/dist/components/notes/Note.d.ts.map +1 -1
  70. package/dist/components/notes/Note.js +11 -15
  71. package/dist/components/notes/Note.js.map +1 -1
  72. package/dist/components/notes/Notes.d.ts.map +1 -1
  73. package/dist/components/notes/Notes.js +134 -40
  74. package/dist/components/notes/Notes.js.map +1 -1
  75. package/dist/components/notes/index.js +3 -9
  76. package/dist/components/notes/index.js.map +1 -1
  77. package/dist/components/wrapper/AppList.d.ts.map +1 -1
  78. package/dist/components/wrapper/AppList.js +7 -13
  79. package/dist/components/wrapper/AppList.js.map +1 -1
  80. package/dist/components/wrapper/ChurchList.d.ts.map +1 -1
  81. package/dist/components/wrapper/ChurchList.js +55 -21
  82. package/dist/components/wrapper/ChurchList.js.map +1 -1
  83. package/dist/components/wrapper/NavItem.js +11 -15
  84. package/dist/components/wrapper/NavItem.js.map +1 -1
  85. package/dist/components/wrapper/NewPrivateMessage.d.ts.map +1 -1
  86. package/dist/components/wrapper/NewPrivateMessage.js +38 -68
  87. package/dist/components/wrapper/NewPrivateMessage.js.map +1 -1
  88. package/dist/components/wrapper/Notifications.d.ts.map +1 -1
  89. package/dist/components/wrapper/Notifications.js +53 -57
  90. package/dist/components/wrapper/Notifications.js.map +1 -1
  91. package/dist/components/wrapper/PrivateMessageDetails.d.ts +1 -0
  92. package/dist/components/wrapper/PrivateMessageDetails.d.ts.map +1 -1
  93. package/dist/components/wrapper/PrivateMessageDetails.js +54 -9
  94. package/dist/components/wrapper/PrivateMessageDetails.js.map +1 -1
  95. package/dist/components/wrapper/PrivateMessages.d.ts.map +1 -1
  96. package/dist/components/wrapper/PrivateMessages.js +363 -78
  97. package/dist/components/wrapper/PrivateMessages.js.map +1 -1
  98. package/dist/components/wrapper/UserMenu.d.ts.map +1 -1
  99. package/dist/components/wrapper/UserMenu.js +182 -54
  100. package/dist/components/wrapper/UserMenu.js.map +1 -1
  101. package/dist/components/wrapper/index.d.ts +2 -1
  102. package/dist/components/wrapper/index.d.ts.map +1 -1
  103. package/dist/components/wrapper/index.js +8 -17
  104. package/dist/components/wrapper/index.js.map +1 -1
  105. package/dist/helpers/AnalyticsHelper.d.ts.map +1 -1
  106. package/dist/helpers/AnalyticsHelper.js +11 -19
  107. package/dist/helpers/AnalyticsHelper.js.map +1 -1
  108. package/dist/helpers/AppearanceHelper.js +1 -5
  109. package/dist/helpers/AppearanceHelper.js.map +1 -1
  110. package/dist/helpers/ArrayHelper.d.ts.map +1 -1
  111. package/dist/helpers/ArrayHelper.js +3 -8
  112. package/dist/helpers/ArrayHelper.js.map +1 -1
  113. package/dist/helpers/CurrencyHelper.js +1 -5
  114. package/dist/helpers/CurrencyHelper.js.map +1 -1
  115. package/dist/helpers/DateHelper.js +3 -7
  116. package/dist/helpers/DateHelper.js.map +1 -1
  117. package/dist/helpers/ErrorHelper.js +3 -7
  118. package/dist/helpers/ErrorHelper.js.map +1 -1
  119. package/dist/helpers/EventHelper.d.ts.map +1 -1
  120. package/dist/helpers/EventHelper.js +4 -11
  121. package/dist/helpers/EventHelper.js.map +1 -1
  122. package/dist/helpers/FileHelper.js +3 -10
  123. package/dist/helpers/FileHelper.js.map +1 -1
  124. package/dist/helpers/Locale.d.ts +1 -1
  125. package/dist/helpers/Locale.d.ts.map +1 -1
  126. package/dist/helpers/Locale.js +18 -20
  127. package/dist/helpers/Locale.js.map +1 -1
  128. package/dist/helpers/NotificationService.d.ts +56 -0
  129. package/dist/helpers/NotificationService.d.ts.map +1 -0
  130. package/dist/helpers/NotificationService.js +176 -0
  131. package/dist/helpers/NotificationService.js.map +1 -0
  132. package/dist/helpers/PersonHelper.d.ts.map +1 -1
  133. package/dist/helpers/PersonHelper.js +5 -9
  134. package/dist/helpers/PersonHelper.js.map +1 -1
  135. package/dist/helpers/SlugHelper.js +4 -11
  136. package/dist/helpers/SlugHelper.js.map +1 -1
  137. package/dist/helpers/SocketHelper.d.ts +12 -0
  138. package/dist/helpers/SocketHelper.d.ts.map +1 -1
  139. package/dist/helpers/SocketHelper.js +163 -44
  140. package/dist/helpers/SocketHelper.js.map +1 -1
  141. package/dist/helpers/UniqueIdHelper.js +1 -5
  142. package/dist/helpers/UniqueIdHelper.js.map +1 -1
  143. package/dist/helpers/UserHelper.js +8 -12
  144. package/dist/helpers/UserHelper.js.map +1 -1
  145. package/dist/helpers/createEmotionCache.js +3 -9
  146. package/dist/helpers/createEmotionCache.js.map +1 -1
  147. package/dist/helpers/index.d.ts +7 -16
  148. package/dist/helpers/index.d.ts.map +1 -1
  149. package/dist/helpers/index.js +10 -54
  150. package/dist/helpers/index.js.map +1 -1
  151. package/dist/hooks/index.d.ts +2 -0
  152. package/dist/hooks/index.d.ts.map +1 -1
  153. package/dist/hooks/index.js +2 -5
  154. package/dist/hooks/index.js.map +1 -1
  155. package/dist/hooks/useMountedState.js +5 -9
  156. package/dist/hooks/useMountedState.js.map +1 -1
  157. package/dist/hooks/useNotifications.d.ts +30 -0
  158. package/dist/hooks/useNotifications.d.ts.map +1 -0
  159. package/dist/hooks/useNotifications.js +79 -0
  160. package/dist/hooks/useNotifications.js.map +1 -0
  161. package/dist/index.d.ts +0 -3
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js +3 -22
  164. package/dist/index.js.map +1 -1
  165. package/dist/public/css/styles.css +6 -2
  166. package/package.json +6 -28
  167. package/public/css/styles.css +6 -2
  168. package/src/components/ExportLink.tsx +12 -3
  169. package/src/components/FormCardPayment.tsx +4 -3
  170. package/src/components/FormSubmissionEdit.tsx +5 -6
  171. package/src/components/ImageEditor.tsx +15 -12
  172. package/src/components/InputBox.tsx +2 -1
  173. package/src/components/Loading.tsx +47 -1
  174. package/src/components/PageHeader.tsx +107 -0
  175. package/src/components/PersonAvatar.tsx +78 -0
  176. package/src/components/SupportModal.tsx +8 -3
  177. package/src/components/header/PrimaryMenu.tsx +85 -42
  178. package/src/components/header/SiteHeader.tsx +131 -8
  179. package/src/components/header/SupportDrawer.tsx +1 -1
  180. package/src/components/index.tsx +2 -5
  181. package/src/components/notes/AddNote.tsx +105 -19
  182. package/src/components/notes/Note.tsx +43 -22
  183. package/src/components/notes/Notes.tsx +160 -21
  184. package/src/components/wrapper/AppList.tsx +1 -4
  185. package/src/components/wrapper/ChurchList.tsx +45 -5
  186. package/src/components/wrapper/NewPrivateMessage.tsx +181 -44
  187. package/src/components/wrapper/Notifications.tsx +164 -29
  188. package/src/components/wrapper/PrivateMessageDetails.tsx +100 -13
  189. package/src/components/wrapper/PrivateMessages.tsx +539 -56
  190. package/src/components/wrapper/UserMenu.tsx +218 -38
  191. package/src/components/wrapper/index.tsx +3 -2
  192. package/src/helpers/AnalyticsHelper.ts +1 -2
  193. package/src/helpers/ArrayHelper.ts +0 -1
  194. package/src/helpers/ErrorHelper.ts +1 -1
  195. package/src/helpers/EventHelper.ts +0 -3
  196. package/src/helpers/Locale.ts +8 -3
  197. package/src/helpers/NotificationService.ts +211 -0
  198. package/src/helpers/PersonHelper.ts +1 -2
  199. package/src/helpers/SocketHelper.ts +184 -39
  200. package/src/helpers/UserHelper.ts +2 -2
  201. package/src/helpers/index.ts +46 -16
  202. package/src/hooks/index.ts +2 -0
  203. package/src/hooks/useNotifications.ts +94 -0
  204. package/src/index.ts +1 -4
  205. package/tsconfig.json +2 -2
  206. package/.eslintignore +0 -4
  207. package/.github/FUNDING.yml +0 -1
  208. package/.vscode/settings.json +0 -6
  209. package/CHUMS_COMPONENT_EXTRACTION_CANDIDATES.md +0 -210
  210. package/CLAUDE.md +0 -111
  211. package/COMPONENT_USAGE_REPORT.md +0 -322
  212. package/LICENSE +0 -21
  213. package/README.md +0 -24
  214. package/b1app-specific-components.md +0 -146
  215. package/component-usage-analysis.md +0 -169
  216. package/dist/components/markdownEditor/Editor.d.ts +0 -13
  217. package/dist/components/markdownEditor/Editor.d.ts.map +0 -1
  218. package/dist/components/markdownEditor/Editor.js +0 -92
  219. package/dist/components/markdownEditor/Editor.js.map +0 -1
  220. package/dist/components/markdownEditor/IconNamesList.d.ts +0 -3
  221. package/dist/components/markdownEditor/IconNamesList.d.ts.map +0 -1
  222. package/dist/components/markdownEditor/IconNamesList.js +0 -16
  223. package/dist/components/markdownEditor/IconNamesList.js.map +0 -1
  224. package/dist/components/markdownEditor/MarkdownEditor.d.ts +0 -10
  225. package/dist/components/markdownEditor/MarkdownEditor.d.ts.map +0 -1
  226. package/dist/components/markdownEditor/MarkdownEditor.js +0 -45
  227. package/dist/components/markdownEditor/MarkdownEditor.js.map +0 -1
  228. package/dist/components/markdownEditor/MarkdownModal.d.ts +0 -9
  229. package/dist/components/markdownEditor/MarkdownModal.d.ts.map +0 -1
  230. package/dist/components/markdownEditor/MarkdownModal.js +0 -24
  231. package/dist/components/markdownEditor/MarkdownModal.js.map +0 -1
  232. package/dist/components/markdownEditor/MarkdownPreview.d.ts +0 -9
  233. package/dist/components/markdownEditor/MarkdownPreview.d.ts.map +0 -1
  234. package/dist/components/markdownEditor/MarkdownPreview.js +0 -45
  235. package/dist/components/markdownEditor/MarkdownPreview.js.map +0 -1
  236. package/dist/components/markdownEditor/MarkdownPreviewLight.d.ts +0 -7
  237. package/dist/components/markdownEditor/MarkdownPreviewLight.d.ts.map +0 -1
  238. package/dist/components/markdownEditor/MarkdownPreviewLight.js +0 -53
  239. package/dist/components/markdownEditor/MarkdownPreviewLight.js.map +0 -1
  240. package/dist/components/markdownEditor/editor.css +0 -787
  241. package/dist/components/markdownEditor/images/emoji/1F600.png +0 -0
  242. package/dist/components/markdownEditor/images/emoji/1F641.png +0 -0
  243. package/dist/components/markdownEditor/images/emoji/1F642.png +0 -0
  244. package/dist/components/markdownEditor/images/emoji/2764.png +0 -0
  245. package/dist/components/markdownEditor/images/icons/arrow-clockwise.svg +0 -4
  246. package/dist/components/markdownEditor/images/icons/arrow-counterclockwise.svg +0 -4
  247. package/dist/components/markdownEditor/images/icons/chat-square-quote.svg +0 -4
  248. package/dist/components/markdownEditor/images/icons/chevron-down.svg +0 -3
  249. package/dist/components/markdownEditor/images/icons/code.svg +0 -3
  250. package/dist/components/markdownEditor/images/icons/journal-code.svg +0 -5
  251. package/dist/components/markdownEditor/images/icons/journal-text.svg +0 -5
  252. package/dist/components/markdownEditor/images/icons/justify.svg +0 -3
  253. package/dist/components/markdownEditor/images/icons/link.svg +0 -4
  254. package/dist/components/markdownEditor/images/icons/list-ol.svg +0 -4
  255. package/dist/components/markdownEditor/images/icons/list-ul.svg +0 -3
  256. package/dist/components/markdownEditor/images/icons/pencil-fill.svg +0 -3
  257. package/dist/components/markdownEditor/images/icons/text-center.svg +0 -3
  258. package/dist/components/markdownEditor/images/icons/text-left.svg +0 -3
  259. package/dist/components/markdownEditor/images/icons/text-paragraph.svg +0 -3
  260. package/dist/components/markdownEditor/images/icons/text-right.svg +0 -3
  261. package/dist/components/markdownEditor/images/icons/type-bold.svg +0 -3
  262. package/dist/components/markdownEditor/images/icons/type-h1.svg +0 -3
  263. package/dist/components/markdownEditor/images/icons/type-h2.svg +0 -3
  264. package/dist/components/markdownEditor/images/icons/type-h3.svg +0 -3
  265. package/dist/components/markdownEditor/images/icons/type-h4.svg +0 -13
  266. package/dist/components/markdownEditor/images/icons/type-italic.svg +0 -3
  267. package/dist/components/markdownEditor/images/icons/type-strikethrough.svg +0 -3
  268. package/dist/components/markdownEditor/images/icons/type-underline.svg +0 -3
  269. package/dist/components/markdownEditor/index.d.ts +0 -4
  270. package/dist/components/markdownEditor/index.d.ts.map +0 -1
  271. package/dist/components/markdownEditor/index.js +0 -10
  272. package/dist/components/markdownEditor/index.js.map +0 -1
  273. package/dist/components/markdownEditor/plugins/AutoLinkPlugin.d.ts +0 -2
  274. package/dist/components/markdownEditor/plugins/AutoLinkPlugin.d.ts.map +0 -1
  275. package/dist/components/markdownEditor/plugins/AutoLinkPlugin.js +0 -31
  276. package/dist/components/markdownEditor/plugins/AutoLinkPlugin.js.map +0 -1
  277. package/dist/components/markdownEditor/plugins/ControlledEditorPlugin.d.ts +0 -8
  278. package/dist/components/markdownEditor/plugins/ControlledEditorPlugin.d.ts.map +0 -1
  279. package/dist/components/markdownEditor/plugins/ControlledEditorPlugin.js +0 -19
  280. package/dist/components/markdownEditor/plugins/ControlledEditorPlugin.js.map +0 -1
  281. package/dist/components/markdownEditor/plugins/FloatingTextMenu/FloatingTextFormatToolbarPlugin.d.ts +0 -6
  282. package/dist/components/markdownEditor/plugins/FloatingTextMenu/FloatingTextFormatToolbarPlugin.d.ts.map +0 -1
  283. package/dist/components/markdownEditor/plugins/FloatingTextMenu/FloatingTextFormatToolbarPlugin.js +0 -310
  284. package/dist/components/markdownEditor/plugins/FloatingTextMenu/FloatingTextFormatToolbarPlugin.js.map +0 -1
  285. package/dist/components/markdownEditor/plugins/FloatingTextMenu/getDOMRangeRect.d.ts +0 -2
  286. package/dist/components/markdownEditor/plugins/FloatingTextMenu/getDOMRangeRect.d.ts.map +0 -1
  287. package/dist/components/markdownEditor/plugins/FloatingTextMenu/getDOMRangeRect.js +0 -19
  288. package/dist/components/markdownEditor/plugins/FloatingTextMenu/getDOMRangeRect.js.map +0 -1
  289. package/dist/components/markdownEditor/plugins/FloatingTextMenu/getSelectNode.d.ts +0 -2
  290. package/dist/components/markdownEditor/plugins/FloatingTextMenu/getSelectNode.d.ts.map +0 -1
  291. package/dist/components/markdownEditor/plugins/FloatingTextMenu/getSelectNode.js +0 -21
  292. package/dist/components/markdownEditor/plugins/FloatingTextMenu/getSelectNode.js.map +0 -1
  293. package/dist/components/markdownEditor/plugins/FloatingTextMenu/setFloatingElemPosition.d.ts +0 -2
  294. package/dist/components/markdownEditor/plugins/FloatingTextMenu/setFloatingElemPosition.d.ts.map +0 -1
  295. package/dist/components/markdownEditor/plugins/FloatingTextMenu/setFloatingElemPosition.js +0 -29
  296. package/dist/components/markdownEditor/plugins/FloatingTextMenu/setFloatingElemPosition.js.map +0 -1
  297. package/dist/components/markdownEditor/plugins/ListMaxIndentLevelPlugin.d.ts +0 -2
  298. package/dist/components/markdownEditor/plugins/ListMaxIndentLevelPlugin.d.ts.map +0 -1
  299. package/dist/components/markdownEditor/plugins/ListMaxIndentLevelPlugin.js +0 -45
  300. package/dist/components/markdownEditor/plugins/ListMaxIndentLevelPlugin.js.map +0 -1
  301. package/dist/components/markdownEditor/plugins/MarkdownTransformers.d.ts +0 -12
  302. package/dist/components/markdownEditor/plugins/MarkdownTransformers.d.ts.map +0 -1
  303. package/dist/components/markdownEditor/plugins/MarkdownTransformers.js +0 -85
  304. package/dist/components/markdownEditor/plugins/MarkdownTransformers.js.map +0 -1
  305. package/dist/components/markdownEditor/plugins/ReadOnlyPlugin.d.ts +0 -6
  306. package/dist/components/markdownEditor/plugins/ReadOnlyPlugin.d.ts.map +0 -1
  307. package/dist/components/markdownEditor/plugins/ReadOnlyPlugin.js +0 -12
  308. package/dist/components/markdownEditor/plugins/ReadOnlyPlugin.js.map +0 -1
  309. package/dist/components/markdownEditor/plugins/ToolbarPlugin.d.ts +0 -7
  310. package/dist/components/markdownEditor/plugins/ToolbarPlugin.d.ts.map +0 -1
  311. package/dist/components/markdownEditor/plugins/ToolbarPlugin.js +0 -282
  312. package/dist/components/markdownEditor/plugins/ToolbarPlugin.js.map +0 -1
  313. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNode.d.ts +0 -27
  314. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNode.d.ts.map +0 -1
  315. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNode.js +0 -158
  316. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNode.js.map +0 -1
  317. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNodePlugin.d.ts +0 -4
  318. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNodePlugin.d.ts.map +0 -1
  319. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNodePlugin.js +0 -21
  320. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNodePlugin.js.map +0 -1
  321. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNodeTransformer.d.ts +0 -3
  322. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNodeTransformer.d.ts.map +0 -1
  323. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNodeTransformer.js +0 -71
  324. package/dist/components/markdownEditor/plugins/customLink/CustomLinkNodeTransformer.js.map +0 -1
  325. package/dist/components/markdownEditor/plugins/customLink/FloatingLinkEditor.d.ts +0 -5
  326. package/dist/components/markdownEditor/plugins/customLink/FloatingLinkEditor.d.ts.map +0 -1
  327. package/dist/components/markdownEditor/plugins/customLink/FloatingLinkEditor.js +0 -190
  328. package/dist/components/markdownEditor/plugins/customLink/FloatingLinkEditor.js.map +0 -1
  329. package/dist/components/markdownEditor/plugins/customLink/FloatingLinkEditor.types.d.ts +0 -11
  330. package/dist/components/markdownEditor/plugins/customLink/FloatingLinkEditor.types.d.ts.map +0 -1
  331. package/dist/components/markdownEditor/plugins/customLink/FloatingLinkEditor.types.js +0 -3
  332. package/dist/components/markdownEditor/plugins/customLink/FloatingLinkEditor.types.js.map +0 -1
  333. package/dist/components/markdownEditor/plugins/emoji/EmojiNode.d.ts +0 -24
  334. package/dist/components/markdownEditor/plugins/emoji/EmojiNode.d.ts.map +0 -1
  335. package/dist/components/markdownEditor/plugins/emoji/EmojiNode.js +0 -66
  336. package/dist/components/markdownEditor/plugins/emoji/EmojiNode.js.map +0 -1
  337. package/dist/components/markdownEditor/plugins/emoji/EmojiNodeTransform.d.ts +0 -4
  338. package/dist/components/markdownEditor/plugins/emoji/EmojiNodeTransform.d.ts.map +0 -1
  339. package/dist/components/markdownEditor/plugins/emoji/EmojiNodeTransform.js +0 -35
  340. package/dist/components/markdownEditor/plugins/emoji/EmojiNodeTransform.js.map +0 -1
  341. package/dist/components/markdownEditor/plugins/emoji/EmojiPickerPlugin.d.ts +0 -9
  342. package/dist/components/markdownEditor/plugins/emoji/EmojiPickerPlugin.d.ts.map +0 -1
  343. package/dist/components/markdownEditor/plugins/emoji/EmojiPickerPlugin.js +0 -103
  344. package/dist/components/markdownEditor/plugins/emoji/EmojiPickerPlugin.js.map +0 -1
  345. package/dist/components/markdownEditor/plugins/emoji/EmojisPlugin.d.ts +0 -10
  346. package/dist/components/markdownEditor/plugins/emoji/EmojisPlugin.d.ts.map +0 -1
  347. package/dist/components/markdownEditor/plugins/emoji/EmojisPlugin.js +0 -59
  348. package/dist/components/markdownEditor/plugins/emoji/EmojisPlugin.js.map +0 -1
  349. package/dist/components/markdownEditor/plugins/index.d.ts +0 -7
  350. package/dist/components/markdownEditor/plugins/index.d.ts.map +0 -1
  351. package/dist/components/markdownEditor/plugins/index.js +0 -16
  352. package/dist/components/markdownEditor/plugins/index.js.map +0 -1
  353. package/dist/components/markdownEditor/theme.d.ts +0 -66
  354. package/dist/components/markdownEditor/theme.d.ts.map +0 -1
  355. package/dist/components/markdownEditor/theme.js +0 -69
  356. package/dist/components/markdownEditor/theme.js.map +0 -1
  357. package/dist/components/reporting/ChartReport.d.ts +0 -8
  358. package/dist/components/reporting/ChartReport.d.ts.map +0 -1
  359. package/dist/components/reporting/ChartReport.js +0 -81
  360. package/dist/components/reporting/ChartReport.js.map +0 -1
  361. package/dist/components/reporting/ReportFilter.d.ts +0 -9
  362. package/dist/components/reporting/ReportFilter.d.ts.map +0 -1
  363. package/dist/components/reporting/ReportFilter.js +0 -52
  364. package/dist/components/reporting/ReportFilter.js.map +0 -1
  365. package/dist/components/reporting/ReportFilterField.d.ts +0 -9
  366. package/dist/components/reporting/ReportFilterField.d.ts.map +0 -1
  367. package/dist/components/reporting/ReportFilterField.js +0 -156
  368. package/dist/components/reporting/ReportFilterField.js.map +0 -1
  369. package/dist/components/reporting/ReportOutput.d.ts +0 -8
  370. package/dist/components/reporting/ReportOutput.d.ts.map +0 -1
  371. package/dist/components/reporting/ReportOutput.js +0 -177
  372. package/dist/components/reporting/ReportOutput.js.map +0 -1
  373. package/dist/components/reporting/ReportWithFilter.d.ts +0 -7
  374. package/dist/components/reporting/ReportWithFilter.d.ts.map +0 -1
  375. package/dist/components/reporting/ReportWithFilter.js +0 -65
  376. package/dist/components/reporting/ReportWithFilter.js.map +0 -1
  377. package/dist/components/reporting/TableReport.d.ts +0 -8
  378. package/dist/components/reporting/TableReport.d.ts.map +0 -1
  379. package/dist/components/reporting/TableReport.js +0 -30
  380. package/dist/components/reporting/TableReport.js.map +0 -1
  381. package/dist/components/reporting/TreeReport.d.ts +0 -8
  382. package/dist/components/reporting/TreeReport.d.ts.map +0 -1
  383. package/dist/components/reporting/TreeReport.js +0 -89
  384. package/dist/components/reporting/TreeReport.js.map +0 -1
  385. package/dist/components/reporting/index.d.ts +0 -5
  386. package/dist/components/reporting/index.d.ts.map +0 -1
  387. package/dist/components/reporting/index.js +0 -12
  388. package/dist/components/reporting/index.js.map +0 -1
  389. package/dist/components/wrapper/Drawers.d.ts +0 -5
  390. package/dist/components/wrapper/Drawers.d.ts.map +0 -1
  391. package/dist/components/wrapper/Drawers.js +0 -54
  392. package/dist/components/wrapper/Drawers.js.map +0 -1
  393. package/dist/components/wrapper/SiteWrapper.d.ts +0 -15
  394. package/dist/components/wrapper/SiteWrapper.d.ts.map +0 -1
  395. package/dist/components/wrapper/SiteWrapper.js +0 -60
  396. package/dist/components/wrapper/SiteWrapper.js.map +0 -1
  397. package/dist/components/wrapper/TabPanel.d.ts +0 -9
  398. package/dist/components/wrapper/TabPanel.d.ts.map +0 -1
  399. package/dist/components/wrapper/TabPanel.js +0 -20
  400. package/dist/components/wrapper/TabPanel.js.map +0 -1
  401. package/dist/donationComponents/components/BankForm.d.ts +0 -14
  402. package/dist/donationComponents/components/BankForm.d.ts.map +0 -1
  403. package/dist/donationComponents/components/BankForm.js +0 -126
  404. package/dist/donationComponents/components/BankForm.js.map +0 -1
  405. package/dist/donationComponents/components/CardForm.d.ts +0 -13
  406. package/dist/donationComponents/components/CardForm.d.ts.map +0 -1
  407. package/dist/donationComponents/components/CardForm.js +0 -122
  408. package/dist/donationComponents/components/CardForm.js.map +0 -1
  409. package/dist/donationComponents/components/DonationForm.d.ts +0 -15
  410. package/dist/donationComponents/components/DonationForm.d.ts.map +0 -1
  411. package/dist/donationComponents/components/DonationForm.js +0 -199
  412. package/dist/donationComponents/components/DonationForm.js.map +0 -1
  413. package/dist/donationComponents/components/FundDonation.d.ts +0 -12
  414. package/dist/donationComponents/components/FundDonation.d.ts.map +0 -1
  415. package/dist/donationComponents/components/FundDonation.js +0 -32
  416. package/dist/donationComponents/components/FundDonation.js.map +0 -1
  417. package/dist/donationComponents/components/FundDonations.d.ts +0 -11
  418. package/dist/donationComponents/components/FundDonations.d.ts.map +0 -1
  419. package/dist/donationComponents/components/FundDonations.js +0 -33
  420. package/dist/donationComponents/components/FundDonations.js.map +0 -1
  421. package/dist/donationComponents/components/NonAuthDonation.d.ts +0 -12
  422. package/dist/donationComponents/components/NonAuthDonation.d.ts.map +0 -1
  423. package/dist/donationComponents/components/NonAuthDonation.js +0 -27
  424. package/dist/donationComponents/components/NonAuthDonation.js.map +0 -1
  425. package/dist/donationComponents/components/NonAuthDonationInner.d.ts +0 -12
  426. package/dist/donationComponents/components/NonAuthDonationInner.d.ts.map +0 -1
  427. package/dist/donationComponents/components/NonAuthDonationInner.js +0 -277
  428. package/dist/donationComponents/components/NonAuthDonationInner.js.map +0 -1
  429. package/dist/donationComponents/components/PaymentMethods.d.ts +0 -14
  430. package/dist/donationComponents/components/PaymentMethods.d.ts.map +0 -1
  431. package/dist/donationComponents/components/PaymentMethods.js +0 -84
  432. package/dist/donationComponents/components/PaymentMethods.js.map +0 -1
  433. package/dist/donationComponents/components/RecurringDonations.d.ts +0 -10
  434. package/dist/donationComponents/components/RecurringDonations.d.ts.map +0 -1
  435. package/dist/donationComponents/components/RecurringDonations.js +0 -93
  436. package/dist/donationComponents/components/RecurringDonations.js.map +0 -1
  437. package/dist/donationComponents/components/RecurringDonationsEdit.d.ts +0 -11
  438. package/dist/donationComponents/components/RecurringDonationsEdit.d.ts.map +0 -1
  439. package/dist/donationComponents/components/RecurringDonationsEdit.js +0 -66
  440. package/dist/donationComponents/components/RecurringDonationsEdit.js.map +0 -1
  441. package/dist/donationComponents/components/index.d.ts +0 -11
  442. package/dist/donationComponents/components/index.d.ts.map +0 -1
  443. package/dist/donationComponents/components/index.js +0 -24
  444. package/dist/donationComponents/components/index.js.map +0 -1
  445. package/dist/donationComponents/index.d.ts +0 -3
  446. package/dist/donationComponents/index.d.ts.map +0 -1
  447. package/dist/donationComponents/index.js +0 -21
  448. package/dist/donationComponents/index.js.map +0 -1
  449. package/dist/donationComponents/modals/DonationPreviewModal.d.ts +0 -15
  450. package/dist/donationComponents/modals/DonationPreviewModal.d.ts.map +0 -1
  451. package/dist/donationComponents/modals/DonationPreviewModal.js +0 -33
  452. package/dist/donationComponents/modals/DonationPreviewModal.js.map +0 -1
  453. package/dist/helpers/ApiHelper.d.ts +0 -18
  454. package/dist/helpers/ApiHelper.d.ts.map +0 -1
  455. package/dist/helpers/ApiHelper.js +0 -123
  456. package/dist/helpers/ApiHelper.js.map +0 -1
  457. package/dist/helpers/CommonEnvironmentHelper.d.ts +0 -21
  458. package/dist/helpers/CommonEnvironmentHelper.d.ts.map +0 -1
  459. package/dist/helpers/CommonEnvironmentHelper.js +0 -100
  460. package/dist/helpers/CommonEnvironmentHelper.js.map +0 -1
  461. package/dist/helpers/DonationHelper.d.ts +0 -8
  462. package/dist/helpers/DonationHelper.d.ts.map +0 -1
  463. package/dist/helpers/DonationHelper.js +0 -33
  464. package/dist/helpers/DonationHelper.js.map +0 -1
  465. package/dist/helpers/ReportHelper.d.ts +0 -5
  466. package/dist/helpers/ReportHelper.d.ts.map +0 -1
  467. package/dist/helpers/ReportHelper.js +0 -37
  468. package/dist/helpers/ReportHelper.js.map +0 -1
  469. package/dist/pageComponents/LoginPage.d.ts +0 -25
  470. package/dist/pageComponents/LoginPage.d.ts.map +0 -1
  471. package/dist/pageComponents/LoginPage.js +0 -288
  472. package/dist/pageComponents/LoginPage.js.map +0 -1
  473. package/dist/pageComponents/LogoutPage.d.ts +0 -9
  474. package/dist/pageComponents/LogoutPage.d.ts.map +0 -1
  475. package/dist/pageComponents/LogoutPage.js +0 -37
  476. package/dist/pageComponents/LogoutPage.js.map +0 -1
  477. package/dist/pageComponents/components/Forgot.d.ts +0 -8
  478. package/dist/pageComponents/components/Forgot.d.ts.map +0 -1
  479. package/dist/pageComponents/components/Forgot.js +0 -53
  480. package/dist/pageComponents/components/Forgot.js.map +0 -1
  481. package/dist/pageComponents/components/Login.d.ts +0 -15
  482. package/dist/pageComponents/components/Login.d.ts.map +0 -1
  483. package/dist/pageComponents/components/Login.js +0 -73
  484. package/dist/pageComponents/components/Login.js.map +0 -1
  485. package/dist/pageComponents/components/LoginSetPassword.d.ts +0 -13
  486. package/dist/pageComponents/components/LoginSetPassword.d.ts.map +0 -1
  487. package/dist/pageComponents/components/LoginSetPassword.js +0 -112
  488. package/dist/pageComponents/components/LoginSetPassword.js.map +0 -1
  489. package/dist/pageComponents/components/Register.d.ts +0 -12
  490. package/dist/pageComponents/components/Register.d.ts.map +0 -1
  491. package/dist/pageComponents/components/Register.js +0 -95
  492. package/dist/pageComponents/components/Register.js.map +0 -1
  493. package/dist/pageComponents/components/SelectChurchModal.d.ts +0 -14
  494. package/dist/pageComponents/components/SelectChurchModal.d.ts.map +0 -1
  495. package/dist/pageComponents/components/SelectChurchModal.js +0 -37
  496. package/dist/pageComponents/components/SelectChurchModal.js.map +0 -1
  497. package/dist/pageComponents/components/SelectChurchRegister.d.ts +0 -11
  498. package/dist/pageComponents/components/SelectChurchRegister.d.ts.map +0 -1
  499. package/dist/pageComponents/components/SelectChurchRegister.js +0 -89
  500. package/dist/pageComponents/components/SelectChurchRegister.js.map +0 -1
  501. package/dist/pageComponents/components/SelectChurchSearch.d.ts +0 -10
  502. package/dist/pageComponents/components/SelectChurchSearch.d.ts.map +0 -1
  503. package/dist/pageComponents/components/SelectChurchSearch.js +0 -58
  504. package/dist/pageComponents/components/SelectChurchSearch.js.map +0 -1
  505. package/dist/pageComponents/components/SelectableChurch.d.ts +0 -9
  506. package/dist/pageComponents/components/SelectableChurch.d.ts.map +0 -1
  507. package/dist/pageComponents/components/SelectableChurch.js +0 -18
  508. package/dist/pageComponents/components/SelectableChurch.js.map +0 -1
  509. package/dist/pageComponents/index.d.ts +0 -4
  510. package/dist/pageComponents/index.d.ts.map +0 -1
  511. package/dist/pageComponents/index.js +0 -10
  512. package/dist/pageComponents/index.js.map +0 -1
  513. package/src/components/markdownEditor/Editor.tsx +0 -150
  514. package/src/components/markdownEditor/IconNamesList.ts +0 -14
  515. package/src/components/markdownEditor/MarkdownEditor.tsx +0 -18
  516. package/src/components/markdownEditor/MarkdownModal.tsx +0 -49
  517. package/src/components/markdownEditor/MarkdownPreview.tsx +0 -18
  518. package/src/components/markdownEditor/MarkdownPreviewLight.tsx +0 -53
  519. package/src/components/markdownEditor/editor.css +0 -787
  520. package/src/components/markdownEditor/images/emoji/1F600.png +0 -0
  521. package/src/components/markdownEditor/images/emoji/1F641.png +0 -0
  522. package/src/components/markdownEditor/images/emoji/1F642.png +0 -0
  523. package/src/components/markdownEditor/images/emoji/2764.png +0 -0
  524. package/src/components/markdownEditor/images/icons/arrow-clockwise.svg +0 -4
  525. package/src/components/markdownEditor/images/icons/arrow-counterclockwise.svg +0 -4
  526. package/src/components/markdownEditor/images/icons/chat-square-quote.svg +0 -4
  527. package/src/components/markdownEditor/images/icons/chevron-down.svg +0 -3
  528. package/src/components/markdownEditor/images/icons/code.svg +0 -3
  529. package/src/components/markdownEditor/images/icons/journal-code.svg +0 -5
  530. package/src/components/markdownEditor/images/icons/journal-text.svg +0 -5
  531. package/src/components/markdownEditor/images/icons/justify.svg +0 -3
  532. package/src/components/markdownEditor/images/icons/link.svg +0 -4
  533. package/src/components/markdownEditor/images/icons/list-ol.svg +0 -4
  534. package/src/components/markdownEditor/images/icons/list-ul.svg +0 -3
  535. package/src/components/markdownEditor/images/icons/pencil-fill.svg +0 -3
  536. package/src/components/markdownEditor/images/icons/text-center.svg +0 -3
  537. package/src/components/markdownEditor/images/icons/text-left.svg +0 -3
  538. package/src/components/markdownEditor/images/icons/text-paragraph.svg +0 -3
  539. package/src/components/markdownEditor/images/icons/text-right.svg +0 -3
  540. package/src/components/markdownEditor/images/icons/type-bold.svg +0 -3
  541. package/src/components/markdownEditor/images/icons/type-h1.svg +0 -3
  542. package/src/components/markdownEditor/images/icons/type-h2.svg +0 -3
  543. package/src/components/markdownEditor/images/icons/type-h3.svg +0 -3
  544. package/src/components/markdownEditor/images/icons/type-h4.svg +0 -13
  545. package/src/components/markdownEditor/images/icons/type-italic.svg +0 -3
  546. package/src/components/markdownEditor/images/icons/type-strikethrough.svg +0 -3
  547. package/src/components/markdownEditor/images/icons/type-underline.svg +0 -3
  548. package/src/components/markdownEditor/index.ts +0 -3
  549. package/src/components/markdownEditor/plugins/AutoLinkPlugin.tsx +0 -35
  550. package/src/components/markdownEditor/plugins/ControlledEditorPlugin.tsx +0 -24
  551. package/src/components/markdownEditor/plugins/FloatingTextMenu/FloatingTextFormatToolbarPlugin.tsx +0 -445
  552. package/src/components/markdownEditor/plugins/FloatingTextMenu/getDOMRangeRect.tsx +0 -17
  553. package/src/components/markdownEditor/plugins/FloatingTextMenu/getSelectNode.tsx +0 -17
  554. package/src/components/markdownEditor/plugins/FloatingTextMenu/setFloatingElemPosition.tsx +0 -33
  555. package/src/components/markdownEditor/plugins/ListMaxIndentLevelPlugin.tsx +0 -68
  556. package/src/components/markdownEditor/plugins/MarkdownTransformers.ts +0 -106
  557. package/src/components/markdownEditor/plugins/ReadOnlyPlugin.tsx +0 -15
  558. package/src/components/markdownEditor/plugins/ToolbarPlugin.tsx +0 -424
  559. package/src/components/markdownEditor/plugins/customLink/CustomLinkNode.tsx +0 -224
  560. package/src/components/markdownEditor/plugins/customLink/CustomLinkNodePlugin.tsx +0 -32
  561. package/src/components/markdownEditor/plugins/customLink/CustomLinkNodeTransformer.tsx +0 -102
  562. package/src/components/markdownEditor/plugins/customLink/FloatingLinkEditor.tsx +0 -270
  563. package/src/components/markdownEditor/plugins/customLink/FloatingLinkEditor.types.ts +0 -11
  564. package/src/components/markdownEditor/plugins/emoji/EmojiNode.tsx +0 -95
  565. package/src/components/markdownEditor/plugins/emoji/EmojiNodeTransform.ts +0 -41
  566. package/src/components/markdownEditor/plugins/emoji/EmojiPickerPlugin.tsx +0 -152
  567. package/src/components/markdownEditor/plugins/emoji/EmojisPlugin.tsx +0 -70
  568. package/src/components/markdownEditor/plugins/index.ts +0 -6
  569. package/src/components/markdownEditor/theme.ts +0 -65
  570. package/src/components/reporting/ChartReport.tsx +0 -89
  571. package/src/components/reporting/ReportFilter.tsx +0 -56
  572. package/src/components/reporting/ReportFilterField.tsx +0 -163
  573. package/src/components/reporting/ReportOutput.tsx +0 -168
  574. package/src/components/reporting/ReportWithFilter.tsx +0 -72
  575. package/src/components/reporting/TableReport.tsx +0 -44
  576. package/src/components/reporting/TreeReport.tsx +0 -103
  577. package/src/components/reporting/index.ts +0 -4
  578. package/src/components/wrapper/Drawers.tsx +0 -62
  579. package/src/components/wrapper/SiteWrapper.tsx +0 -99
  580. package/src/components/wrapper/TabPanel.tsx +0 -32
  581. package/src/donationComponents/components/BankForm.tsx +0 -163
  582. package/src/donationComponents/components/CardForm.tsx +0 -104
  583. package/src/donationComponents/components/DonationForm.tsx +0 -260
  584. package/src/donationComponents/components/FundDonation.tsx +0 -59
  585. package/src/donationComponents/components/FundDonations.tsx +0 -44
  586. package/src/donationComponents/components/NonAuthDonation.tsx +0 -34
  587. package/src/donationComponents/components/NonAuthDonationInner.tsx +0 -300
  588. package/src/donationComponents/components/PaymentMethods.tsx +0 -133
  589. package/src/donationComponents/components/RecurringDonations.tsx +0 -117
  590. package/src/donationComponents/components/RecurringDonationsEdit.tsx +0 -96
  591. package/src/donationComponents/components/index.tsx +0 -10
  592. package/src/donationComponents/index.ts +0 -2
  593. package/src/donationComponents/modals/DonationPreviewModal.tsx +0 -70
  594. package/src/helpers/ApiHelper.ts +0 -127
  595. package/src/helpers/CommonEnvironmentHelper.ts +0 -98
  596. package/src/helpers/DonationHelper.ts +0 -26
  597. package/src/helpers/ReportHelper.ts +0 -34
  598. package/src/pageComponents/LoginPage.tsx +0 -284
  599. package/src/pageComponents/LogoutPage.tsx +0 -43
  600. package/src/pageComponents/components/Forgot.tsx +0 -81
  601. package/src/pageComponents/components/Login.tsx +0 -62
  602. package/src/pageComponents/components/LoginSetPassword.tsx +0 -98
  603. package/src/pageComponents/components/Register.tsx +0 -103
  604. package/src/pageComponents/components/SelectChurchModal.tsx +0 -58
  605. package/src/pageComponents/components/SelectChurchRegister.tsx +0 -87
  606. package/src/pageComponents/components/SelectChurchSearch.tsx +0 -71
  607. package/src/pageComponents/components/SelectableChurch.tsx +0 -40
  608. package/src/pageComponents/index.ts +0 -3
@@ -1,57 +1,100 @@
1
- import React from "react";
2
- import { Box, Button, Icon, Menu } from "@mui/material";
1
+ import React, { useState, useRef } from "react";
2
+ import { Box, Button, Icon, Paper, Popper, Grow, ClickAwayListener } from "@mui/material";
3
3
  import { NavItem } from "../wrapper/NavItem";
4
4
 
5
5
  interface Props {
6
- label: string,
7
- menuItems: { url: string, icon:string, label: string }[]
8
- onNavigate: (url: string) => void,
6
+ label: string;
7
+ menuItems: { url: string; icon: string; label: string }[];
8
+ onNavigate: (url: string) => void;
9
9
  }
10
10
 
11
- export const PrimaryMenu = (props:Props) => {
12
- const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);
13
- const open = Boolean(anchorEl);
11
+ export const PrimaryMenu = (props: Props) => {
12
+ const [open, setOpen] = useState(false);
13
+ const anchorRef = useRef<HTMLButtonElement>(null);
14
14
 
15
- const handleClose = () => { setAnchorEl(null); };
16
-
17
- const handleClick = (e: React.MouseEvent<HTMLElement>) => {
18
- e.preventDefault();
19
- setAnchorEl(e.currentTarget);
15
+ const handleToggle = () => {
16
+ setOpen((prevOpen) => !prevOpen);
20
17
  };
21
18
 
22
- const paperProps = {
23
- elevation: 0,
24
- sx: {
25
- backgroundColor: "var(--c1)",
26
- color: "#FFF",
27
- overflow: "visible",
28
- filter: "drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",
29
-
30
- "& .MuiAvatar-root": { width: 32, height: 32, ml: -0.5, mr: 1 },
31
- minWidth: 300
19
+ const handleClose = (event: Event | React.SyntheticEvent) => {
20
+ if (
21
+ anchorRef.current &&
22
+ anchorRef.current.contains(event.target as HTMLElement)
23
+ ) {
24
+ return;
32
25
  }
26
+ setOpen(false);
27
+ };
28
+
29
+ const handleItemClick = (url: string) => {
30
+ setOpen(false);
31
+ props.onNavigate(url);
33
32
  };
34
33
 
35
34
  const getNavItems = () => {
36
35
  let result: React.ReactElement[] = [];
37
- props.menuItems.forEach(item => {
38
- result.push(<NavItem url={item.url} label={item.label.toUpperCase()} icon={item.icon} key={item.url} onNavigate={props.onNavigate} />);
36
+ props.menuItems.forEach((item) => {
37
+ result.push(
38
+ <NavItem
39
+ url={item.url}
40
+ label={item.label.toUpperCase()}
41
+ icon={item.icon}
42
+ key={item.url}
43
+ onNavigate={handleItemClick}
44
+ />
45
+ );
39
46
  });
40
47
  return result;
41
- }
42
-
43
- return (<>
44
- <Button onClick={handleClick} color="inherit" aria-controls={open ? "account-menu" : undefined} aria-haspopup="true" aria-expanded={open ? "true" : undefined} endIcon={<Icon>expand_more</Icon>} id="primaryNavButton">
45
- <img src="/images/logo-icon.png" alt="Primary Menu" />
46
- <h2>{props.label}</h2>
47
- </Button>
48
-
49
- <Menu anchorEl={anchorEl} id="account-menu" open={anchorEl!==null} onClose={handleClose} slotProps={{ paper: paperProps }} transformOrigin={{ horizontal: "right", vertical: "top" }} anchorOrigin={{ horizontal: "right", vertical: "bottom" }} sx={{ "& .MuiBox-root": { borderBottom: 0 } }}>
50
- <Box sx={{ borderBottom: 1, borderColor: "divider" }} id="primaryMenu">
51
- {getNavItems()}
52
- </Box>
53
- </Menu>
54
- </>
55
-
56
- )
57
- }
48
+ };
49
+
50
+ return (
51
+ <>
52
+ <Button
53
+ ref={anchorRef}
54
+ onClick={handleToggle}
55
+ color="inherit"
56
+ endIcon={<Icon>expand_more</Icon>}
57
+ id="primaryNavButton"
58
+ >
59
+ <img src="/images/logo-icon.png" alt="Primary Menu" />
60
+ <h2>{props.label}</h2>
61
+ </Button>
62
+
63
+ <Popper
64
+ open={open}
65
+ anchorEl={anchorRef.current}
66
+ role={undefined}
67
+ placement="bottom-end"
68
+ transition
69
+ disablePortal={true}
70
+ style={{ zIndex: 1300, color: "#FFF" }}
71
+ >
72
+ {({ TransitionProps }) => (
73
+ <Grow {...TransitionProps}>
74
+ <Paper
75
+ elevation={3}
76
+ sx={{
77
+ backgroundColor: "var(--c1)",
78
+ color: "#FFF",
79
+ minWidth: 300,
80
+ paddingY: "10px",
81
+ filter: "drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",
82
+ }}
83
+ >
84
+ <ClickAwayListener onClickAway={handleClose}>
85
+ <Box
86
+ sx={{
87
+ "& a": { color: "#FFF", textDecoration: "none" },
88
+ "& a:hover": { color: "#DDD" },
89
+ }}
90
+ >
91
+ {getNavItems()}
92
+ </Box>
93
+ </ClickAwayListener>
94
+ </Paper>
95
+ </Grow>
96
+ )}
97
+ </Popper>
98
+ </>
99
+ );
100
+ };
@@ -7,7 +7,8 @@ import { PrimaryMenu } from "./PrimaryMenu";
7
7
  import { SecondaryMenu } from "./SecondaryMenu";
8
8
  import { SecondaryMenuAlt } from "./SecondaryMenuAlt";
9
9
  import { SupportDrawer } from "./SupportDrawer";
10
- import { UserContextInterface } from "@churchapps/helpers";
10
+ import { UserContextInterface, CommonEnvironmentHelper } from "@churchapps/helpers";
11
+ import { NotificationService } from "../../helpers/NotificationService";
11
12
 
12
13
  type Props = {
13
14
  primaryMenuLabel: string;
@@ -19,11 +20,68 @@ type Props = {
19
20
  onNavigate: (url: string) => void;
20
21
  }
21
22
 
22
- export const SiteHeader = (props:Props) => {
23
+ export const SiteHeader = React.memo((props:Props) => {
24
+ // Initialize NotificationService without subscribing to count changes to prevent re-renders
25
+ React.useEffect(() => {
26
+ const initializeNotifications = async () => {
27
+ if (props.context?.person?.id && props.context?.userChurch?.church?.id) {
28
+ const service = NotificationService.getInstance();
29
+ await service.initialize(props.context);
30
+ }
31
+ };
32
+
33
+ initializeNotifications();
34
+ }, [props.context?.person?.id, props.context?.userChurch?.church?.id]);
35
+
36
+ const refresh = React.useCallback(async () => {
37
+ // Direct access to NotificationService for refresh functionality
38
+ await NotificationService.getInstance().refresh();
39
+ }, []);
40
+
41
+ // Memoize userName to prevent recreation
42
+ const userName = React.useMemo(() => {
43
+ if (props.context?.user) {
44
+ return `${props.context.user.firstName} ${props.context.user.lastName}`;
45
+ }
46
+ return '';
47
+ }, [props.context?.user?.firstName, props.context?.user?.lastName]);
48
+
49
+ // Memoize profilePicture URL
50
+ const profilePicture = React.useMemo(() => {
51
+ return PersonHelper.getPhotoUrl(props.context?.person);
52
+ }, [props.context?.person]);
53
+
54
+ // Create a stable context object to prevent UserMenu recreation
55
+ const stableContext = React.useMemo(() => {
56
+ if (!props.context) return undefined;
57
+
58
+ return {
59
+ user: props.context.user,
60
+ person: props.context.person,
61
+ userChurch: props.context.userChurch,
62
+ userChurches: props.context.userChurches,
63
+ setUser: props.context.setUser,
64
+ setPerson: props.context.setPerson,
65
+ setUserChurch: props.context.setUserChurch,
66
+ setUserChurches: props.context.setUserChurches
67
+ };
68
+ }, [
69
+ props.context?.user?.id,
70
+ props.context?.user?.firstName,
71
+ props.context?.user?.lastName,
72
+ props.context?.person?.id,
73
+ props.context?.userChurch?.church?.id,
74
+ props.context?.userChurches,
75
+ props.context?.setUser,
76
+ props.context?.setPerson,
77
+ props.context?.setUserChurch,
78
+ props.context?.setUserChurches
79
+ ]);
23
80
 
24
81
  const CustomAppBar = styled(AppBar)(
25
82
  ({ theme }) => ({
26
83
  zIndex: theme.zIndex.drawer + 1,
84
+ backgroundColor: "var(--c1, #1565C0)",
27
85
  transition: theme.transitions.create(["width", "margin"], {
28
86
  easing: theme.transitions.easing.sharp,
29
87
  duration: theme.transitions.duration.leavingScreen
@@ -63,21 +121,86 @@ export const SiteHeader = (props:Props) => {
63
121
 
64
122
  /*<Typography variant="h6" noWrap>{UserHelper.currentUserChurch?.church?.name || ""}</Typography>*/
65
123
  return (<>
66
- <div style={{backgroundColor:"var(--c1)", color: "#FFF"}}>
124
+ <div style={{
125
+ '--c1': '#1565C0',
126
+ '--c1d1': '#1358AD',
127
+ '--c1d2': '#114A99',
128
+ '--c1l2': '#568BDA',
129
+ backgroundColor:"var(--c1)",
130
+ color: "#FFF"
131
+ } as React.CSSProperties}>
67
132
  <CustomAppBar position="absolute">
68
- <Toolbar sx={{ pr: "24px", backgroundColor: "var(--c1)" }}>
133
+ <Toolbar sx={{ pr: "24px", backgroundColor: "var(--c1)", minHeight: "64px !important" }}>
69
134
  <PrimaryMenu label={props.primaryMenuLabel} menuItems={props.primaryMenuItems} onNavigate={props.onNavigate} />
70
135
  <SecondaryMenu label={props.secondaryMenuLabel} menuItems={props.secondaryMenuItems} onNavigate={props.onNavigate} />
71
136
  <div style={{ flex: 1 }}>
72
137
  <SecondaryMenuAlt label={props.secondaryMenuLabel} menuItems={props.secondaryMenuItems} onNavigate={props.onNavigate} />
73
138
  </div>
74
- {UserHelper.user && <UserMenu profilePicture={PersonHelper.getPhotoUrl(props.context?.person)} userName={`${UserHelper.user?.firstName} ${UserHelper.user?.lastName}`} userChurches={UserHelper.userChurches} currentUserChurch={UserHelper.currentUserChurch} context={props.context} appName={props.appName} loadCounts={() => {}} notificationCounts={{notificationCount:0, pmCount:0}} onNavigate={props.onNavigate} />}
75
- {!UserHelper.user && <Link href="/login" color="inherit" style={{ textDecoration: "none" }}>Login</Link>}
139
+ {props.context?.user?.id && (
140
+ <UserMenu
141
+ key="user-menu-stable"
142
+ profilePicture={profilePicture}
143
+ userName={userName}
144
+ userChurches={props.context?.userChurches}
145
+ currentUserChurch={props.context?.userChurch}
146
+ context={stableContext}
147
+ appName={props.appName}
148
+ loadCounts={refresh}
149
+ notificationCounts={{notificationCount: 0, pmCount: 0}}
150
+ onNavigate={props.onNavigate}
151
+ />
152
+ )}
153
+ {!props.context?.user?.id && <Link href="/login" color="inherit" style={{ textDecoration: "none" }}>Login</Link>}
76
154
  <SupportDrawer appName={props.appName} relatedArticles={getRelatedArticles()} />
77
155
  </Toolbar>
78
156
  </CustomAppBar>
79
-
157
+ <div id="appBarSpacer"></div>
80
158
  </div>
81
159
  </>
82
160
  );
83
- }
161
+ }, (prevProps, nextProps) => {
162
+ // Custom comparison to prevent unnecessary re-renders
163
+
164
+ // Check if essential props have changed
165
+ if (prevProps.primaryMenuLabel !== nextProps.primaryMenuLabel ||
166
+ prevProps.secondaryMenuLabel !== nextProps.secondaryMenuLabel ||
167
+ prevProps.appName !== nextProps.appName) {
168
+ return false;
169
+ }
170
+
171
+ // Check if menu items arrays have changed (shallow comparison)
172
+ if (prevProps.primaryMenuItems?.length !== nextProps.primaryMenuItems?.length ||
173
+ prevProps.secondaryMenuItems?.length !== nextProps.secondaryMenuItems?.length) {
174
+ return false;
175
+ }
176
+
177
+ // Check if user context has actually changed (deep comparison of essential parts)
178
+ const prevUser = prevProps.context?.user;
179
+ const nextUser = nextProps.context?.user;
180
+
181
+ if (prevUser?.id !== nextUser?.id ||
182
+ prevUser?.firstName !== nextUser?.firstName ||
183
+ prevUser?.lastName !== nextUser?.lastName) {
184
+ return false;
185
+ }
186
+
187
+ // Check if person context has changed
188
+ if (prevProps.context?.person?.id !== nextProps.context?.person?.id) {
189
+ return false;
190
+ }
191
+
192
+ // Check if church context has changed
193
+ if (prevProps.context?.userChurch?.church?.id !== nextProps.context?.userChurch?.church?.id) {
194
+ return false;
195
+ }
196
+
197
+ // Check if onNavigate function reference has changed
198
+ if (prevProps.onNavigate !== nextProps.onNavigate) {
199
+ return false;
200
+ }
201
+
202
+ // All essential props are the same, skip re-render
203
+ return true;
204
+ });
205
+
206
+ SiteHeader.displayName = 'SiteHeader';
@@ -33,7 +33,7 @@ export const SupportDrawer = (props: Props) => {
33
33
 
34
34
  const loadData = () => {
35
35
  if (UserHelper?.currentUserChurch?.church?.id) {
36
- ApiHelper.get("/settings/public/" + UserHelper.currentUserChurch.church.id, "MembershipApi").then((data) => {
36
+ ApiHelper.get("/settings/public/" + UserHelper.currentUserChurch.church.id, "MembershipApi").then((data: any) => {
37
37
  const contactRes = data?.supportContact;
38
38
  if (contactRes && contactRes !== "") setSupportContact(contactRes);
39
39
 
@@ -8,14 +8,11 @@ export { ImageEditor } from "./ImageEditor";
8
8
  export { InputBox } from "./InputBox";
9
9
  export { Loading } from "./Loading";
10
10
  export { Notes } from "./notes/Notes";
11
+ export { PageHeader } from "./PageHeader";
12
+ export { PersonAvatar } from "./PersonAvatar";
11
13
  export { QuestionEdit } from "./QuestionEdit";
12
14
  export { SmallButton } from "./SmallButton";
13
15
  export { SupportModal } from "./SupportModal";
14
- export { MarkdownEditor } from "./markdownEditor/MarkdownEditor";
15
- export { MarkdownPreview } from "./markdownEditor/MarkdownPreview";
16
-
17
16
  export * from "./wrapper";
18
- export * from "./markdownEditor";
19
17
  export * from "./notes";
20
- export * from "./reporting";
21
18
  export * from "./header";
@@ -3,7 +3,16 @@
3
3
  import React, { useState, useEffect } from "react"
4
4
  import { ApiHelper, Locale, PersonHelper } from "../../helpers"
5
5
  import { MessageInterface, UserContextInterface } from "@churchapps/helpers"
6
- import { Icon, Stack, TextField } from "@mui/material"
6
+ import {
7
+ Box,
8
+ Stack,
9
+ TextField,
10
+ IconButton,
11
+ Paper,
12
+ CircularProgress,
13
+ Avatar
14
+ } from "@mui/material"
15
+ import { Send as SendIcon, Delete as DeleteIcon } from "@mui/icons-material"
7
16
  import { ErrorMessages } from "../ErrorMessages"
8
17
  import { SmallButton } from "../SmallButton"
9
18
 
@@ -22,7 +31,7 @@ export function AddNote({ context, ...props }: Props) {
22
31
  const headerText = props.messageId ? "Edit note" : "Add a note"
23
32
 
24
33
  useEffect(() => {
25
- if (props.messageId) ApiHelper.get(`/messages/${props.messageId}`, "MessagingApi").then(n => setMessage(n));
34
+ if (props.messageId) ApiHelper.get(`/messages/${props.messageId}`, "MessagingApi").then((n: any) => setMessage(n));
26
35
  else setMessage({ conversationId: props.conversationId, content: "" });
27
36
  return () => {
28
37
  setMessage(null);
@@ -38,7 +47,7 @@ export function AddNote({ context, ...props }: Props) {
38
47
 
39
48
  const validate = () => {
40
49
  const result = [];
41
- if (!message.content.trim()) result.push(Locale.label("notes.validate.content"));
50
+ if (!message.content.trim()) result.push(Locale.label("notes.validate.content", "Please enter a message"));
42
51
  setErrors(result);
43
52
  return result.length === 0;
44
53
  }
@@ -58,8 +67,13 @@ export function AddNote({ context, ...props }: Props) {
58
67
  m.content = "";
59
68
  setMessage(m);
60
69
  })
61
- .catch((error) => {
62
- if (error?.message === "Forbidden") setErrors(["You can't edit the message sent by others."])
70
+ .catch((error: any) => {
71
+ console.error("Error saving message:", error);
72
+ if (error?.message === "Forbidden") {
73
+ setErrors(["You can't edit the message sent by others."]);
74
+ } else {
75
+ setErrors([error?.message || "Failed to save message. Please try again."]);
76
+ }
63
77
  })
64
78
  .finally(() => { setIsSubmitting(false); });
65
79
  }
@@ -75,21 +89,93 @@ export function AddNote({ context, ...props }: Props) {
75
89
  const image = PersonHelper.getPhotoUrl(context?.person)
76
90
 
77
91
  return (
78
- <>
92
+ <Box sx={{ width: '100%' }}>
79
93
  <ErrorMessages errors={errors} />
80
-
81
- <Stack direction="row" spacing={1.5} style={{ marginTop: 15 }} justifyContent="end">
82
-
83
- {image ? <img src={image} alt="user" style={{ width: 60, height: 45, borderRadius: 5, marginLeft: 8 }} /> : <Icon>person</Icon>}
84
- <Stack direction="column" spacing={2} style={{ width: "100%" }} justifyContent="end">
85
- <div><b>{context?.person?.name?.display}</b></div>
86
- <TextField fullWidth name="noteText" aria-label={headerText} placeholder="Add a note" multiline style={{ marginTop: 0, border: "none" }} variant="standard" onChange={handleChange} value={message?.content} />
87
- </Stack>
88
- <Stack direction="column" spacing={1} justifyContent="end">
89
- <SmallButton icon="send" onClick={handleSave} />
90
- {deleteFunction && <SmallButton icon="delete" onClick={deleteFunction} disabled={isSubmitting} />}
94
+
95
+ <Paper
96
+ variant="outlined"
97
+ sx={{
98
+ p: 2,
99
+ bgcolor: 'grey.50',
100
+ borderColor: 'grey.300'
101
+ }}
102
+ >
103
+ <Stack direction="row" spacing={2} alignItems="flex-start">
104
+ <Avatar
105
+ src={image}
106
+ alt={context?.person?.name?.display}
107
+ sx={{ width: 48, height: 48 }}
108
+ />
109
+
110
+ <Box sx={{ flex: 1 }}>
111
+ <TextField
112
+ fullWidth
113
+ multiline
114
+ rows={2}
115
+ name="noteText"
116
+ aria-label={headerText}
117
+ placeholder={props.messageId ? "Edit your message..." : "Type a message..."}
118
+ variant="standard"
119
+ value={message?.content || ''}
120
+ onChange={handleChange}
121
+ disabled={isSubmitting}
122
+ InputProps={{
123
+ disableUnderline: true,
124
+ sx: {
125
+ fontSize: '1rem',
126
+ '& textarea': {
127
+ resize: 'vertical',
128
+ minHeight: '40px'
129
+ }
130
+ }
131
+ }}
132
+ sx={{
133
+ bgcolor: 'white',
134
+ borderRadius: 1,
135
+ p: 1,
136
+ border: '1px solid',
137
+ borderColor: 'grey.300',
138
+ '&:hover': {
139
+ borderColor: 'grey.400'
140
+ },
141
+ '&.Mui-focused': {
142
+ borderColor: 'primary.main'
143
+ }
144
+ }}
145
+ />
146
+
147
+ <Box sx={{ display: 'flex', justifyContent: 'flex-end', mt: 1, gap: 0.5 }}>
148
+ {deleteFunction && (
149
+ <IconButton
150
+ size="small"
151
+ onClick={deleteFunction}
152
+ disabled={isSubmitting}
153
+ sx={{ color: 'error.main' }}
154
+ >
155
+ <DeleteIcon fontSize="small" />
156
+ </IconButton>
157
+ )}
158
+ <IconButton
159
+ size="small"
160
+ color="primary"
161
+ onClick={handleSave}
162
+ disabled={isSubmitting || !message?.content?.trim()}
163
+ sx={{
164
+ bgcolor: 'primary.main',
165
+ color: 'white',
166
+ '&:hover': { bgcolor: 'primary.dark' },
167
+ '&:disabled': {
168
+ bgcolor: 'action.disabledBackground',
169
+ color: 'action.disabled'
170
+ }
171
+ }}
172
+ >
173
+ {isSubmitting ? <CircularProgress size={18} color="inherit" /> : <SendIcon fontSize="small" />}
174
+ </IconButton>
175
+ </Box>
176
+ </Box>
91
177
  </Stack>
92
- </Stack>
93
- </>
178
+ </Paper>
179
+ </Box>
94
180
  );
95
181
  }
@@ -1,7 +1,8 @@
1
- import { Icon, IconButton, Stack, Box } from "@mui/material";
1
+ import { Icon, IconButton, Stack, Box, Typography } from "@mui/material";
2
2
  import React, { useState, useEffect } from "react";
3
3
  import { DateHelper, PersonHelper } from "../../helpers"
4
4
  import { MessageInterface, UserContextInterface } from "@churchapps/helpers"
5
+ import { PersonAvatar } from "../PersonAvatar"
5
6
 
6
7
  interface Props {
7
8
  message: MessageInterface;
@@ -15,33 +16,53 @@ export const Note: React.FC<Props> = (props) => {
15
16
  useEffect(() => setMessage(props.message), [props.message]);
16
17
 
17
18
  if (message === null) return null;
18
- const photoUrl = PersonHelper.getPhotoUrl(message.person);
19
19
  let datePosted = new Date(message.timeUpdated || message.timeSent);
20
20
  const displayDuration = DateHelper.getDisplayDuration(datePosted);
21
21
 
22
- const isEdited = message.timeUpdated && message.timeUpdated !== message.timeSent && <>(edited)</>;
22
+ const isEdited = message.timeUpdated && message.timeUpdated !== message.timeSent;
23
23
  const contents = message.content?.split("\n");
24
+
24
25
  return (
25
- <div className="note">
26
- <div className="postedBy">
27
- <img src={photoUrl} alt="avatar" />
28
- </div>
29
- <Box sx={{ width: "100%" }} className="note-contents">
30
- <Stack direction="row" justifyContent="space-between">
31
- <div>
32
- <b>{message.person?.name?.display}</b> · <span className="text-grey">{displayDuration}{isEdited}</span>
33
- {contents.map((c, i) => c ? <p key={i}>{c}</p> : <br />)}
34
- </div>
35
- <div>
36
- {(message?.id && message.personId === props.context?.person.id) && (
37
- <IconButton aria-label="editNote" onClick={() => props.showEditNote(message.id)}>
38
- <Icon style={{ color: "#03a9f4" }}>edit</Icon>
39
- </IconButton>
40
- )}
41
- </div>
26
+ <Box sx={{ display: 'flex', gap: 2, mb: 2, p: 1, '&:hover': { bgcolor: 'action.hover', borderRadius: 1 } }}>
27
+ <PersonAvatar person={message.person} size="small" />
28
+ <Box sx={{ flex: 1 }}>
29
+ <Stack direction="row" justifyContent="space-between" alignItems="flex-start">
30
+ <Box sx={{ flex: 1 }}>
31
+ <Stack direction="row" alignItems="center" spacing={1} sx={{ mb: 0.5 }}>
32
+ <Typography variant="subtitle2" fontWeight="bold">
33
+ {message.person?.name?.display}
34
+ </Typography>
35
+ <Typography variant="caption" color="text.secondary">
36
+ {displayDuration}
37
+ </Typography>
38
+ {isEdited && (
39
+ <Typography variant="caption" color="text.secondary">
40
+ (edited)
41
+ </Typography>
42
+ )}
43
+ </Stack>
44
+ <Box>
45
+ {contents.map((c, i) => c ? (
46
+ <Typography key={i} variant="body2" sx={{ mb: 0.5 }}>
47
+ {c}
48
+ </Typography>
49
+ ) : (
50
+ <Box key={i} sx={{ height: '1em' }} />
51
+ ))}
52
+ </Box>
53
+ </Box>
54
+ {(message?.id && message.personId === props.context?.person.id) && (
55
+ <IconButton
56
+ size="small"
57
+ aria-label="editNote"
58
+ onClick={() => props.showEditNote(message.id)}
59
+ sx={{ opacity: 0.7, '&:hover': { opacity: 1 } }}
60
+ >
61
+ <Icon fontSize="small">edit</Icon>
62
+ </IconButton>
63
+ )}
42
64
  </Stack>
43
-
44
65
  </Box>
45
- </div>
66
+ </Box>
46
67
  );
47
68
  };