From 30c1d18b88fa502e68d92f846aeab4df5f06189e Mon Sep 17 00:00:00 2001 From: Peter Harrison <16875803+palisadoes@users.noreply.github.com> Date: Sun, 29 Sep 2024 11:19:17 -0700 Subject: [PATCH] Merge with Develop 20240924 (#2306) * 20240929102850 Deleted all files in the main branch in anticipation of merging develop into main cleanly * 20240929103238 Merge develop into main --- .coderabbit.yaml | 3 +- .github/ISSUE_TEMPLATE/bug-report.md | 4 +- .github/ISSUE_TEMPLATE/feature-request.md | 4 +- .github/workflows/check-tsdoc.js | 68 + .github/workflows/compare_translations.py | 30 +- .github/workflows/pull-request.yml | 9 +- .github/workflows/push.yml | 127 +- .node-version | 2 +- CONTRIBUTING.md | 2 + config/babel.config.cjs | 8 + config/vite.config.ts | 30 + public/index.html => index.html | 15 +- jest.config.js | 21 +- package-lock.json | 30782 +++++----------- package.json | 105 +- public/locales/en/common.json | 13 +- public/locales/en/errors.json | 3 +- public/locales/en/translation.json | 440 +- public/locales/fr/common.json | 11 +- public/locales/fr/errors.json | 3 +- public/locales/fr/translation.json | 441 +- public/locales/hi/common.json | 11 +- public/locales/hi/errors.json | 3 +- public/locales/hi/translation.json | 649 +- public/locales/sp/common.json | 11 +- public/locales/sp/errors.json | 3 +- public/locales/sp/translation.json | 166 +- public/locales/zh/common.json | 11 +- public/locales/zh/errors.json | 3 +- public/locales/zh/translation.json | 445 +- scripts/__mocks__/fileMock.js | 2 + scripts/config-overrides/custom_build.js | 17 - scripts/config-overrides/custom_start.js | 19 - scripts/config-overrides/index.js | 29 - scripts/config-overrides/package.json | 5 - scripts/test.js | 52 - src/App.test.tsx | 4 +- src/App.tsx | 40 +- .../Mutations/ActionItemCategoryMutations.ts | 13 +- src/GraphQl/Mutations/ActionItemMutations.ts | 5 + src/GraphQl/Mutations/CampaignMutation.ts | 16 +- src/GraphQl/Mutations/FundMutation.ts | 14 - src/GraphQl/Mutations/TagMutations.ts | 74 + .../Queries/ActionItemCategoryQueries.ts | 18 +- src/GraphQl/Queries/ActionItemQueries.ts | 16 +- src/GraphQl/Queries/OrganizationQueries.ts | 46 + src/GraphQl/Queries/Queries.ts | 2 +- src/GraphQl/Queries/fundQueries.ts | 55 +- src/GraphQl/Queries/userTagQueries.ts | 101 + src/assets/images/talawa-logo-200x200.png | Bin 5468 -> 0 bytes src/assets/images/talawa-logo-600x600.png | Bin 0 -> 17667 bytes src/assets/svgs/angleLeft.svg | 5 - src/assets/svgs/eventDashboard.svg | 7 - src/assets/svgs/eventStats.svg | 12 - .../{Twitter-Logo.svg => X-Logo.svg} | 0 src/assets/svgs/social-icons/index.tsx | 4 +- src/assets/svgs/tag.svg | 4 + .../ActionItemsContainer.module.css | 25 - .../ActionItems/ActionItemsContainer.test.tsx | 777 - .../ActionItems/ActionItemsContainer.tsx | 499 - .../ActionItems/ActionItemsContainerMocks.ts | 112 - .../ActionItems/ActionItemsContainerProps.ts | 131 - .../ActionItems/ActionItemsModal.test.tsx | 294 - .../ActionItems/ActionItemsModal.tsx | 42 - .../ActionItems/ActionItemsModalBody.tsx | 218 - .../ActionItems/ActionItemsWrapper.module.css | 53 - .../ActionItems/ActionItemsWrapper.test.tsx | 73 - .../ActionItems/ActionItemsWrapper.tsx | 45 - src/components/AddOn/AddOn.test.tsx | 8 + src/components/AddOn/AddOn.tsx | 46 +- .../AddOn/core/AddOnEntry/AddOnEntry.test.tsx | 29 +- .../AddOn/core/AddOnEntry/AddOnEntry.tsx | 75 +- .../core/AddOnRegister/AddOnRegister.test.tsx | 104 +- .../core/AddOnRegister/AddOnRegister.tsx | 55 +- .../AddOn/core/AddOnStore/AddOnStore.test.tsx | 4 +- .../AddOn/core/AddOnStore/AddOnStore.tsx | 48 +- .../support/components/Action/Action.tsx | 23 +- .../components/MainContent/MainContent.tsx | 21 +- .../components/SidePanel/SidePanel.tsx | 24 +- .../AddOn/support/services/Plugin.helper.ts | 20 + .../Advertisements/Advertisements.test.tsx | 4 +- .../Advertisements/Advertisements.tsx | 50 +- .../AdvertisementEntry.test.tsx | 57 + .../AdvertisementEntry/AdvertisementEntry.tsx | 68 +- .../AdvertisementRegister.module.css | 1 + .../AdvertisementRegister.test.tsx | 387 +- .../AdvertisementRegister.tsx | 110 +- .../AgendaCategoryContainer.tsx | 68 +- .../AgendaItems/AgendaItemsContainer.test.tsx | 12 +- .../AgendaItems/AgendaItemsContainer.tsx | 55 +- .../AgendaItems/AgendaItemsCreateModal.tsx | 41 +- .../AgendaItems/AgendaItemsDeleteModal.tsx | 10 + .../AgendaItems/AgendaItemsPreviewModal.tsx | 22 + .../AgendaItems/AgendaItemsUpdateModal.tsx | 42 +- src/components/Avatar/Avatar.tsx | 18 +- .../ChangeLanguageDropDown.tsx | 17 + .../ChangeLanguageDropdown.test.tsx | 8 +- src/components/CheckIn/CheckInModal.tsx | 48 +- src/components/CheckIn/CheckInWrapper.tsx | 11 +- src/components/CheckIn/TableRow.test.tsx | 64 +- src/components/CheckIn/TableRow.tsx | 50 +- src/components/CheckIn/tagTemplate.ts | 2 +- .../CollapsibleDropdown.test.tsx | 20 +- .../CollapsibleDropdown.tsx | 10 + .../ContriStats/ContriStats.test.tsx | 1 - src/components/ContriStats/ContriStats.tsx | 12 +- .../CurrentHourIndicator.tsx | 5 + src/components/DeleteOrg/DeleteOrg.test.tsx | 248 - .../DynamicDropDown/DynamicDropDown.tsx | 59 +- .../EditCustomFieldDropDown.test.tsx | 6 +- .../EditCustomFieldDropDown.tsx | 19 +- .../EventCalendar/EventCalendar.tsx | 13 + .../EventCalendar/EventHeader.test.tsx | 3 +- src/components/EventCalendar/EventHeader.tsx | 17 + .../EventCalendar/YearlyEventCalender.tsx | 52 + .../EventDashboardScreen.tsx | 29 +- .../EventListCard/EventListCard.test.tsx | 22 +- .../EventListCard/EventListCard.tsx | 17 + .../EventListCard/EventListCardMocks.ts | 4 +- .../EventListCard/EventListCardModals.tsx | 27 +- .../Dashboard/EventDashboard.tsx | 48 +- .../EventActionItems.module.css | 206 - .../EventActionItems.test.tsx | 1179 - .../EventActionItems/EventActionItems.tsx | 599 - .../useEventActionColumnConfig.tsx | 200 - .../EventAgendaItems.test.tsx | 15 +- .../EventAgendaItems/EventAgendaItems.tsx | 43 +- .../EventRegistrantsModal.tsx | 36 +- .../EventRegistrantsWrapper.tsx | 24 +- src/components/EventStats/EventStats.tsx | 17 +- .../EventStats/EventStatsWrapper.tsx | 21 +- .../EventStats/Statistics/AverageRating.tsx | 13 +- .../EventStats/Statistics/Feedback.tsx | 12 + .../EventStats/Statistics/Review.tsx | 10 + src/components/HolidayCards/HolidayCard.tsx | 8 + .../IconComponent/IconComponent.test.tsx | 49 +- .../IconComponent/IconComponent.tsx | 81 +- src/components/LeftDrawer/LeftDrawer.test.tsx | 149 +- src/components/LeftDrawer/LeftDrawer.tsx | 22 +- .../LeftDrawerOrg/LeftDrawerOrg.module.css | 20 +- .../LeftDrawerOrg/LeftDrawerOrg.test.tsx | 9 +- .../LeftDrawerOrg/LeftDrawerOrg.tsx | 34 +- src/components/Loader/Loader.tsx | 11 +- .../LoginPortalToggle.test.tsx | 4 +- .../LoginPortalToggle/LoginPortalToggle.tsx | 23 +- .../MemberRequestCard.test.tsx | 14 +- .../MemberRequestCard/MemberRequestCard.tsx | 36 +- src/components/NotFound/NotFound.tsx | 11 +- .../OrgActionItemCategories.module.css | 33 - .../OrgActionItemCategories.test.tsx | 372 - .../OrgActionItemCategories.tsx | 292 - .../OrgActionItemCategoryMocks.ts | 174 - .../OrgAdminListCard.test.tsx | 4 +- .../OrgAdminListCard/OrgAdminListCard.tsx | 14 +- .../OrgContriCards/OrgContriCards.tsx | 13 + src/components/OrgDelete/OrgDelete.tsx | 8 + .../OrgListCard/OrgListCard.test.tsx | 4 +- src/components/OrgListCard/OrgListCard.tsx | 29 +- .../OrgPeopleListCard.test.tsx | 4 +- .../OrgPeopleListCard/OrgPeopleListCard.tsx | 27 +- .../OrgPostCard/OrgPostCard.test.tsx | 221 +- src/components/OrgPostCard/OrgPostCard.tsx | 34 +- .../CategoryModal.test.tsx | 208 + .../ActionItemCategories/CategoryModal.tsx | 208 + .../OrgActionItemCategories.module.css | 138 + .../OrgActionItemCategories.test.tsx | 241 + .../OrgActionItemCategories.tsx | 418 + .../OrgActionItemCategoryMocks.ts | 288 + .../AgendaCategoryCreateModal.test.tsx | 0 .../AgendaCategoryCreateModal.tsx | 16 + .../AgendaCategoryDeleteModal.tsx | 12 + .../AgendaCategoryPreviewModal.tsx | 16 + .../AgendaCategoryUpdateModal.test.tsx | 0 .../AgendaCategoryUpdateModal.tsx | 16 + .../OrganizationAgendaCategory.module.css | 0 .../OrganizationAgendaCategory.test.tsx | 8 +- .../OrganizationAgendaCategory.tsx | 50 +- .../OrganizationAgendaCategoryErrorMocks.ts | 0 .../OrganizationAgendaCategoryMocks.ts | 0 .../General}/DeleteOrg/DeleteOrg.module.css | 0 .../General/DeleteOrg/DeleteOrg.test.tsx | 307 + .../General}/DeleteOrg/DeleteOrg.tsx | 32 +- .../OrgSettings/General/GeneralSettings.tsx | 73 + .../OrgProfileFieldSettings.module.css | 0 .../OrgProfileFieldSettings.test.tsx | 4 +- .../OrgProfileFieldSettings.tsx | 31 +- .../General}/OrgUpdate/OrgUpdate.module.css | 0 .../General}/OrgUpdate/OrgUpdate.test.tsx | 4 +- .../General}/OrgUpdate/OrgUpdate.tsx | 17 +- .../General}/OrgUpdate/OrgUpdateMocks.ts | 0 .../OrganizationCard.test.tsx | 2 - .../OrganizationCard/OrganizationCard.tsx | 67 +- .../OrganizationCardStart.test.tsx | 6 +- .../OrganizationCardStart.tsx | 9 +- .../OrganizationDashCards/CardItem.tsx | 19 +- .../OrganizationDashCards/CardItemLoading.tsx | 4 + .../OrganizationDashCards/DashboardCard.tsx | 7 + .../DashboardCardLoading.tsx | 4 + .../OrganizationScreen/OrganizationScreen.tsx | 35 +- src/components/Pagination/Pagination.tsx | 45 +- .../PaginationList/PaginationList.tsx | 39 +- .../ProfileDropdown/ProfileDropdown.test.tsx | 4 +- .../ProfileDropdown/ProfileDropdown.tsx | 12 + .../CustomRecurrenceModal.tsx | 30 + .../RecurrenceOptions/RecurrenceOptions.tsx | 26 +- .../RequestsTableItem.test.tsx | 4 +- .../RequestsTableItem/RequestsTableItem.tsx | 41 +- src/components/SecuredRoute/SecuredRoute.tsx | 14 + .../SuperAdminScreen/SuperAdminScreen.tsx | 12 + src/components/TableLoader/TableLoader.tsx | 12 + .../UserListCard/UserListCard.test.tsx | 13 +- src/components/UserListCard/UserListCard.tsx | 18 +- .../UserPasswordUpdate.test.tsx | 19 +- .../UserPasswordUpdate/UserPasswordUpdate.tsx | 25 +- .../UserPortal/ChatRoom/ChatRoom.test.tsx | 4 +- .../UserPortal/ChatRoom/ChatRoom.tsx | 20 + .../CommentCard/CommentCard.test.tsx | 4 +- .../UserPortal/CommentCard/CommentCard.tsx | 44 +- .../ContactCard/ContactCard.test.tsx | 4 +- .../UserPortal/ContactCard/ContactCard.tsx | 27 + .../CreateDirectChat.test.tsx | 4 +- .../CreateDirectChat/CreateDirectChat.tsx | 33 + .../CreateGroupChat/CreateGroupChat.test.tsx | 6 +- .../CreateGroupChat/CreateGroupChat.tsx | 7 + .../DonationCard/DonationCard.test.tsx | 4 +- .../UserPortal/DonationCard/DonationCard.tsx | 16 + .../UserPortal/EventCard/EventCard.tsx | 40 +- .../OrganizationCard.test.tsx | 6 +- .../OrganizationCard/OrganizationCard.tsx | 36 +- .../OrganizationNavbar.test.tsx | 4 +- .../OrganizationNavbar/OrganizationNavbar.tsx | 32 +- .../OrganizationSidebar.test.tsx | 4 +- .../OrganizationSidebar.tsx | 44 +- .../UserPortal/PeopleCard/PeopleCard.test.tsx | 4 +- .../UserPortal/PeopleCard/PeopleCard.tsx | 23 + .../UserPortal/PostCard/PostCard.test.tsx | 4 +- .../UserPortal/PostCard/PostCard.tsx | 43 +- .../PromotedPost/PromotedPost.test.tsx | 4 +- .../UserPortal/PromotedPost/PromotedPost.tsx | 17 + .../UserPortal/Register/Register.test.tsx | 4 +- .../UserPortal/Register/Register.tsx | 43 +- .../SecuredRouteForUser.tsx | 13 + .../StartPostModal/StartPostModal.test.tsx | 4 +- .../StartPostModal/StartPostModal.tsx | 35 +- .../UserPortal/UserNavbar/UserNavbar.test.tsx | 4 +- .../UserPortal/UserNavbar/UserNavbar.tsx | 32 +- .../UserSidebar/UserSidebar.test.tsx | 87 +- .../UserPortal/UserSidebar/UserSidebar.tsx | 29 +- .../UserSidebarOrg/UserSidebarOrg.test.tsx | 5 +- .../UserSidebarOrg/UserSidebarOrg.tsx | 33 +- .../UserProfileSettings/DeleteUser.tsx | 6 + .../UserProfileSettings/OtherSettings.tsx | 6 + .../UserProfileSettings/UserProfile.tsx | 12 + .../UsersTableItem/UserTableItem.test.tsx | 4 +- .../UsersTableItem/UsersTableItem.tsx | 6 +- src/components/Venues/VenueCard.tsx | 33 +- src/components/Venues/VenueModal.test.tsx | 4 +- src/components/Venues/VenueModal.tsx | 42 +- .../plugins/DummyPlugin/DummyPlugin.test.jsx | 7 +- .../plugins/DummyPlugin/DummyPlugin.tsx | 17 +- .../DummyPlugin2/DummyPlugin2.test.jsx | 6 +- .../plugins/DummyPlugin2/DummyPlugin2.tsx | 16 +- src/constants.ts | 8 +- src/index.tsx | 17 +- src/react-app-env.d.ts | 1 - src/screens/BlockUser/BlockUser.test.tsx | 4 +- src/screens/BlockUser/BlockUser.tsx | 175 +- .../CommunityProfile.test.tsx | 104 +- .../CommunityProfile/CommunityProfile.tsx | 70 +- .../EventManagement.module.css | 8 - .../EventManagement/EventManagement.tsx | 227 +- .../ForgotPassword/ForgotPassword.test.tsx | 45 +- src/screens/ForgotPassword/ForgotPassword.tsx | 61 +- .../FundCampaignPledge.module.css | 14 + .../FundCampaignPledge.test.tsx | 31 +- .../FundCampaignPledge/FundCampaignPledge.tsx | 42 +- .../FundCampaignPledge/PledgeDeleteModal.tsx | 28 +- .../FundCampaignPledge/PledgeModal.tsx | 38 +- .../FundCampaignPledge/PledgesMocks.ts | 730 +- src/screens/LoginPage/LoginPage.test.tsx | 6 +- src/screens/LoginPage/LoginPage.tsx | 60 +- src/screens/ManageTag/ManageTag.module.css | 119 + src/screens/ManageTag/ManageTag.test.tsx | 296 + src/screens/ManageTag/ManageTag.tsx | 511 + src/screens/ManageTag/ManageTagMocks.ts | 290 + .../MemberDetail/MemberDetail.test.tsx | 4 +- src/screens/MemberDetail/MemberDetail.tsx | 11 +- .../OrgContribution/OrgContribution.test.tsx | 4 +- .../OrgContribution/OrgContribution.tsx | 12 + src/screens/OrgList/OrgList.test.tsx | 25 +- src/screens/OrgList/OrgList.tsx | 4 +- src/screens/OrgPost/OrgPost.test.tsx | 93 +- src/screens/OrgPost/OrgPost.tsx | 29 +- src/screens/OrgSettings/OrgSettings.mocks.ts | 143 + .../OrgSettings/OrgSettings.module.css | 3 + src/screens/OrgSettings/OrgSettings.test.tsx | 208 +- src/screens/OrgSettings/OrgSettings.tsx | 222 +- .../ActionItemCreateModal.tsx | 155 - .../ActionItemDeleteModal.tsx | 61 - .../ActionItemPreviewModal.tsx | 133 - .../ActionItemUpdateModal.test.tsx | 235 - .../ActionItemUpdateModal.tsx | 154 - .../ItemDeleteModal.test.tsx | 120 + .../ItemDeleteModal.tsx | 92 + .../ItemModal.test.tsx | 373 + .../OrganizationActionItems/ItemModal.tsx | 440 + .../ItemUpdateStatusModal.test.tsx | 173 + .../ItemUpdateStatusModal.tsx | 129 + .../ItemViewModal.test.tsx | 147 + .../OrganizationActionItems/ItemViewModal.tsx | 233 + .../OrganizationActionItem.mocks.ts | 482 + .../OrganizationActionItemMocks.ts | 417 - .../OrganizationActionItems.module.css | 175 +- .../OrganizationActionItems.test.tsx | 708 +- .../OrganizationActionItems.tsx | 797 +- .../OrganizationActionItemsErrorMocks.ts | 266 - .../OrganizationDashboard.test.tsx | 4 +- .../OrganizationDashboard.tsx | 33 +- .../OrganizationEvents/OrganizationEvents.tsx | 19 +- .../OrganizationEventsMocks.ts | 12 +- .../CampaignDeleteModal.test.tsx | 95 - .../CampaignDeleteModal.tsx | 75 - .../CampaignModal.test.tsx | 2 + .../CampaignModal.tsx | 30 +- .../OrganizationFundCampagins.tsx | 129 +- .../OrganizationFundCampaign.test.tsx | 16 - .../OrganizationFundCampaignMocks.ts | 41 +- .../FundDeleteModal.test.tsx | 100 - .../OrganizationFunds/FundDeleteModal.tsx | 79 - src/screens/OrganizationFunds/FundModal.tsx | 34 +- .../OrganizationFunds.test.tsx | 16 - .../OrganizationFunds/OrganizationFunds.tsx | 85 +- .../OrganizationFundsMocks.ts | 25 - src/screens/OrganizationPeople/AddMember.tsx | 45 +- .../OrganizationPeople.test.tsx | 88 +- .../OrganizationPeople/OrganizationPeople.tsx | 24 +- .../OrganizationTags.module.css | 141 + .../OrganizationTags.test.tsx | 246 + .../OrganizationTags/OrganizationTags.tsx | 515 + .../OrganizationTags/OrganizationTagsMocks.ts | 291 + .../OrganizationVenues/OrganizationVenues.tsx | 36 + src/screens/PageNotFound/PageNotFound.tsx | 15 +- src/screens/Requests/Requests.test.tsx | 4 +- src/screens/Requests/Requests.tsx | 40 +- src/screens/SubTags/SubTags.module.css | 137 + src/screens/SubTags/SubTags.test.tsx | 325 + src/screens/SubTags/SubTags.tsx | 572 + src/screens/SubTags/SubTagsMocks.ts | 415 + .../UserPortal/Campaigns/Campaigns.module.css | 137 + .../UserPortal/Campaigns/Campaigns.test.tsx | 324 + .../UserPortal/Campaigns/Campaigns.tsx | 305 + .../UserPortal/Campaigns/CampaignsMocks.ts | 272 + .../UserPortal/Campaigns/PledgeModal.test.tsx | 310 + .../UserPortal/Campaigns/PledgeModal.tsx | 373 + src/screens/UserPortal/Chat/Chat.test.tsx | 53 +- src/screens/UserPortal/Chat/Chat.tsx | 29 +- .../UserPortal/Donate/Donate.module.css | 9 - src/screens/UserPortal/Donate/Donate.test.tsx | 111 +- src/screens/UserPortal/Donate/Donate.tsx | 103 +- .../UserPortal/Events/Events.module.css | 10 +- src/screens/UserPortal/Events/Events.test.tsx | 12 +- src/screens/UserPortal/Events/Events.tsx | 72 +- .../Organizations/Organizations.test.tsx | 81 +- .../Organizations/Organizations.tsx | 60 +- .../UserPortal/People/People.module.css | 11 - src/screens/UserPortal/People/People.test.tsx | 4 +- src/screens/UserPortal/People/People.tsx | 60 +- .../UserPortal/Pledges/Pledge.test.tsx | 355 + .../UserPortal/Pledges/Pledges.module.css | 202 + src/screens/UserPortal/Pledges/Pledges.tsx | 557 + .../UserPortal/Pledges/PledgesMocks.ts | 596 + src/screens/UserPortal/Posts/Posts.test.tsx | 33 +- src/screens/UserPortal/Posts/Posts.tsx | 29 + .../UserPortal/Settings/Settings.test.tsx | 355 +- src/screens/UserPortal/Settings/Settings.tsx | 65 +- .../UserPortal/UserScreen/UserScreen.test.tsx | 41 +- .../UserPortal/UserScreen/UserScreen.tsx | 62 +- src/screens/Users/Users.test.tsx | 190 +- src/screens/Users/Users.tsx | 45 +- src/state/hooks.ts | 5 + src/state/reducers/routesReducer.test.ts | 36 +- src/state/reducers/routesReducer.ts | 6 +- src/state/reducers/userRoutersReducer.test.ts | 16 + src/state/reducers/userRoutesReducer.ts | 6 + src/state/store.ts | 9 +- src/utils/StaticMockLink.ts | 6 +- src/utils/errorHandler.test.tsx | 8 +- src/utils/errorHandler.tsx | 11 +- src/utils/interfaces.ts | 94 +- src/utils/organizationTagsUtils.ts | 23 + src/utils/timezoneUtils/dateTimeConfig.ts | 28 + .../timezoneUtils/dateTimeMiddleware.test.ts | 226 + src/utils/timezoneUtils/dateTimeMiddleware.ts | 99 + src/utils/timezoneUtils/index.ts | 2 + src/vite-env.d.ts | 1 + tsconfig.json | 1 + 396 files changed, 31389 insertions(+), 32653 deletions(-) create mode 100644 .github/workflows/check-tsdoc.js create mode 100644 config/babel.config.cjs create mode 100644 config/vite.config.ts rename public/index.html => index.html (64%) create mode 100644 scripts/__mocks__/fileMock.js delete mode 100644 scripts/config-overrides/custom_build.js delete mode 100644 scripts/config-overrides/custom_start.js delete mode 100644 scripts/config-overrides/index.js delete mode 100644 scripts/config-overrides/package.json delete mode 100644 scripts/test.js create mode 100644 src/GraphQl/Mutations/TagMutations.ts create mode 100644 src/GraphQl/Queries/userTagQueries.ts delete mode 100644 src/assets/images/talawa-logo-200x200.png create mode 100644 src/assets/images/talawa-logo-600x600.png delete mode 100644 src/assets/svgs/angleLeft.svg delete mode 100644 src/assets/svgs/eventDashboard.svg delete mode 100644 src/assets/svgs/eventStats.svg rename src/assets/svgs/social-icons/{Twitter-Logo.svg => X-Logo.svg} (100%) create mode 100644 src/assets/svgs/tag.svg delete mode 100644 src/components/ActionItems/ActionItemsContainer.module.css delete mode 100644 src/components/ActionItems/ActionItemsContainer.test.tsx delete mode 100644 src/components/ActionItems/ActionItemsContainer.tsx delete mode 100644 src/components/ActionItems/ActionItemsContainerMocks.ts delete mode 100644 src/components/ActionItems/ActionItemsContainerProps.ts delete mode 100644 src/components/ActionItems/ActionItemsModal.test.tsx delete mode 100644 src/components/ActionItems/ActionItemsModal.tsx delete mode 100644 src/components/ActionItems/ActionItemsModalBody.tsx delete mode 100644 src/components/ActionItems/ActionItemsWrapper.module.css delete mode 100644 src/components/ActionItems/ActionItemsWrapper.test.tsx delete mode 100644 src/components/ActionItems/ActionItemsWrapper.tsx delete mode 100644 src/components/DeleteOrg/DeleteOrg.test.tsx delete mode 100644 src/components/EventManagement/EventActionItems/EventActionItems.module.css delete mode 100644 src/components/EventManagement/EventActionItems/EventActionItems.test.tsx delete mode 100644 src/components/EventManagement/EventActionItems/EventActionItems.tsx delete mode 100644 src/components/EventManagement/EventActionItems/useEventActionColumnConfig.tsx delete mode 100644 src/components/OrgActionItemCategories/OrgActionItemCategories.module.css delete mode 100644 src/components/OrgActionItemCategories/OrgActionItemCategories.test.tsx delete mode 100644 src/components/OrgActionItemCategories/OrgActionItemCategories.tsx delete mode 100644 src/components/OrgActionItemCategories/OrgActionItemCategoryMocks.ts create mode 100644 src/components/OrgSettings/ActionItemCategories/CategoryModal.test.tsx create mode 100644 src/components/OrgSettings/ActionItemCategories/CategoryModal.tsx create mode 100644 src/components/OrgSettings/ActionItemCategories/OrgActionItemCategories.module.css create mode 100644 src/components/OrgSettings/ActionItemCategories/OrgActionItemCategories.test.tsx create mode 100644 src/components/OrgSettings/ActionItemCategories/OrgActionItemCategories.tsx create mode 100644 src/components/OrgSettings/ActionItemCategories/OrgActionItemCategoryMocks.ts rename src/{screens/OrganizationAgendaCategory => components/OrgSettings/AgendaItemCategories}/AgendaCategoryCreateModal.test.tsx (100%) rename src/{screens/OrganizationAgendaCategory => components/OrgSettings/AgendaItemCategories}/AgendaCategoryCreateModal.tsx (77%) rename src/{screens/OrganizationAgendaCategory => components/OrgSettings/AgendaItemCategories}/AgendaCategoryDeleteModal.tsx (73%) rename src/{screens/OrganizationAgendaCategory => components/OrgSettings/AgendaItemCategories}/AgendaCategoryPreviewModal.tsx (76%) rename src/{screens/OrganizationAgendaCategory => components/OrgSettings/AgendaItemCategories}/AgendaCategoryUpdateModal.test.tsx (100%) rename src/{screens/OrganizationAgendaCategory => components/OrgSettings/AgendaItemCategories}/AgendaCategoryUpdateModal.tsx (76%) rename src/{screens/OrganizationAgendaCategory => components/OrgSettings/AgendaItemCategories}/OrganizationAgendaCategory.module.css (100%) rename src/{screens/OrganizationAgendaCategory => components/OrgSettings/AgendaItemCategories}/OrganizationAgendaCategory.test.tsx (96%) rename src/{screens/OrganizationAgendaCategory => components/OrgSettings/AgendaItemCategories}/OrganizationAgendaCategory.tsx (78%) rename src/{screens/OrganizationAgendaCategory => components/OrgSettings/AgendaItemCategories}/OrganizationAgendaCategoryErrorMocks.ts (100%) rename src/{screens/OrganizationAgendaCategory => components/OrgSettings/AgendaItemCategories}/OrganizationAgendaCategoryMocks.ts (100%) rename src/components/{ => OrgSettings/General}/DeleteOrg/DeleteOrg.module.css (100%) create mode 100644 src/components/OrgSettings/General/DeleteOrg/DeleteOrg.test.tsx rename src/components/{ => OrgSettings/General}/DeleteOrg/DeleteOrg.tsx (76%) create mode 100644 src/components/OrgSettings/General/GeneralSettings.tsx rename src/components/{ => OrgSettings/General}/OrgProfileFieldSettings/OrgProfileFieldSettings.module.css (100%) rename src/components/{ => OrgSettings/General}/OrgProfileFieldSettings/OrgProfileFieldSettings.test.tsx (98%) rename src/components/{ => OrgSettings/General}/OrgProfileFieldSettings/OrgProfileFieldSettings.tsx (82%) rename src/components/{ => OrgSettings/General}/OrgUpdate/OrgUpdate.module.css (100%) rename src/components/{ => OrgSettings/General}/OrgUpdate/OrgUpdate.test.tsx (98%) rename src/components/{ => OrgSettings/General}/OrgUpdate/OrgUpdate.tsx (95%) rename src/components/{ => OrgSettings/General}/OrgUpdate/OrgUpdateMocks.ts (100%) delete mode 100644 src/react-app-env.d.ts delete mode 100644 src/screens/EventManagement/EventManagement.module.css create mode 100644 src/screens/ManageTag/ManageTag.module.css create mode 100644 src/screens/ManageTag/ManageTag.test.tsx create mode 100644 src/screens/ManageTag/ManageTag.tsx create mode 100644 src/screens/ManageTag/ManageTagMocks.ts create mode 100644 src/screens/OrgSettings/OrgSettings.mocks.ts delete mode 100644 src/screens/OrganizationActionItems/ActionItemCreateModal.tsx delete mode 100644 src/screens/OrganizationActionItems/ActionItemDeleteModal.tsx delete mode 100644 src/screens/OrganizationActionItems/ActionItemPreviewModal.tsx delete mode 100644 src/screens/OrganizationActionItems/ActionItemUpdateModal.test.tsx delete mode 100644 src/screens/OrganizationActionItems/ActionItemUpdateModal.tsx create mode 100644 src/screens/OrganizationActionItems/ItemDeleteModal.test.tsx create mode 100644 src/screens/OrganizationActionItems/ItemDeleteModal.tsx create mode 100644 src/screens/OrganizationActionItems/ItemModal.test.tsx create mode 100644 src/screens/OrganizationActionItems/ItemModal.tsx create mode 100644 src/screens/OrganizationActionItems/ItemUpdateStatusModal.test.tsx create mode 100644 src/screens/OrganizationActionItems/ItemUpdateStatusModal.tsx create mode 100644 src/screens/OrganizationActionItems/ItemViewModal.test.tsx create mode 100644 src/screens/OrganizationActionItems/ItemViewModal.tsx create mode 100644 src/screens/OrganizationActionItems/OrganizationActionItem.mocks.ts delete mode 100644 src/screens/OrganizationActionItems/OrganizationActionItemMocks.ts delete mode 100644 src/screens/OrganizationActionItems/OrganizationActionItemsErrorMocks.ts delete mode 100644 src/screens/OrganizationFundCampaign/CampaignDeleteModal.test.tsx delete mode 100644 src/screens/OrganizationFundCampaign/CampaignDeleteModal.tsx delete mode 100644 src/screens/OrganizationFunds/FundDeleteModal.test.tsx delete mode 100644 src/screens/OrganizationFunds/FundDeleteModal.tsx create mode 100644 src/screens/OrganizationTags/OrganizationTags.module.css create mode 100644 src/screens/OrganizationTags/OrganizationTags.test.tsx create mode 100644 src/screens/OrganizationTags/OrganizationTags.tsx create mode 100644 src/screens/OrganizationTags/OrganizationTagsMocks.ts create mode 100644 src/screens/SubTags/SubTags.module.css create mode 100644 src/screens/SubTags/SubTags.test.tsx create mode 100644 src/screens/SubTags/SubTags.tsx create mode 100644 src/screens/SubTags/SubTagsMocks.ts create mode 100644 src/screens/UserPortal/Campaigns/Campaigns.module.css create mode 100644 src/screens/UserPortal/Campaigns/Campaigns.test.tsx create mode 100644 src/screens/UserPortal/Campaigns/Campaigns.tsx create mode 100644 src/screens/UserPortal/Campaigns/CampaignsMocks.ts create mode 100644 src/screens/UserPortal/Campaigns/PledgeModal.test.tsx create mode 100644 src/screens/UserPortal/Campaigns/PledgeModal.tsx create mode 100644 src/screens/UserPortal/Pledges/Pledge.test.tsx create mode 100644 src/screens/UserPortal/Pledges/Pledges.module.css create mode 100644 src/screens/UserPortal/Pledges/Pledges.tsx create mode 100644 src/screens/UserPortal/Pledges/PledgesMocks.ts create mode 100644 src/state/hooks.ts create mode 100644 src/utils/organizationTagsUtils.ts create mode 100644 src/utils/timezoneUtils/dateTimeConfig.ts create mode 100644 src/utils/timezoneUtils/dateTimeMiddleware.test.ts create mode 100644 src/utils/timezoneUtils/dateTimeMiddleware.ts create mode 100644 src/utils/timezoneUtils/index.ts create mode 100644 src/vite-env.d.ts diff --git a/.coderabbit.yaml b/.coderabbit.yaml index 46e2d25b8c..08e1985ae7 100644 --- a/.coderabbit.yaml +++ b/.coderabbit.yaml @@ -13,5 +13,6 @@ reviews: drafts: false base_branches: - develop + - main chat: - auto_reply: true \ No newline at end of file + auto_reply: true diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md index 493322305f..d9f95c0d65 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -31,4 +31,6 @@ If applicable, add screenshots to help explain your problem. Add any other context or screenshots about the feature request here. **Potential internship candidates** -Please read this if you are planning to apply for a Palisadoes Foundation internship https://github.com/PalisadoesFoundation/talawa/issues/359 + +Please read this if you are planning to apply for a Palisadoes Foundation internship +- https://github.com/PalisadoesFoundation/talawa/issues/359 diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md index 60d6401dcf..51aea0e9d9 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -23,4 +23,6 @@ A clear and concise description of approach to be followed. Add any other context or screenshots about the feature request here. **Potential internship candidates** -Please read this if you are planning to apply for a Palisadoes Foundation internship https://github.com/PalisadoesFoundation/talawa/issues/359 + +Please read this if you are planning to apply for a Palisadoes Foundation internship +- https://github.com/PalisadoesFoundation/talawa/issues/359 diff --git a/.github/workflows/check-tsdoc.js b/.github/workflows/check-tsdoc.js new file mode 100644 index 0000000000..d5c3b33b90 --- /dev/null +++ b/.github/workflows/check-tsdoc.js @@ -0,0 +1,68 @@ +import fs from 'fs/promises'; // Import fs.promises for async operations +import path from 'path'; + +// List of files to skip +const filesToSkip = [ + 'index.tsx', + 'EventActionItems.tsx', + 'OrgPostCard.tsx', + 'UsersTableItem.tsx', + 'FundCampaignPledge.tsx' +]; + +// Recursively find all .tsx files, excluding files listed in filesToSkip +async function findTsxFiles(dir) { + let results = []; + try { + const list = await fs.readdir(dir); + for (const file of list) { + const filePath = path.join(dir, file); + const stat = await fs.stat(filePath); + if (stat.isDirectory()) { + results = results.concat(await findTsxFiles(filePath)); + } else if ( + filePath.endsWith('.tsx') && + !filePath.endsWith('.test.tsx') && + !filesToSkip.includes(path.relative(dir, filePath)) + ) { + results.push(filePath); + } + } + } catch (err) { + console.error(`Error reading directory ${dir}: ${err.message}`); + } + return results; +} + +// Check if a file contains at least one TSDoc comment +async function containsTsDocComment(filePath) { + try { + const content = await fs.readFile(filePath, 'utf8'); + return /\/\*\*[\s\S]*?\*\//.test(content); + } catch (err) { + console.error(`Error reading file ${filePath}: ${err.message}`); + return false; + } +} + +// Main function to run the validation +async function run() { + const dir = process.argv[2] || './src'; // Allow directory path as a command-line argument + const files = await findTsxFiles(dir); + const filesWithoutTsDoc = []; + + for (const file of files) { + if (!await containsTsDocComment(file)) { + filesWithoutTsDoc.push(file); + } + } + + if (filesWithoutTsDoc.length > 0) { + filesWithoutTsDoc.forEach(file => { + console.error(`No TSDoc comment found in file: ${file}`); + }); + process.exit(1); + } +} + +run(); \ No newline at end of file diff --git a/.github/workflows/compare_translations.py b/.github/workflows/compare_translations.py index fd4f772605..ef65b6c52b 100644 --- a/.github/workflows/compare_translations.py +++ b/.github/workflows/compare_translations.py @@ -88,6 +88,31 @@ def compare_translations(default_translation, errors.append(error_msg) return errors +def flatten_json(nested_json, parent_key=""): + """ + Flattens a nested JSON, concatenating keys to represent the hierarchy. + + Args: + nested_json (dict): The JSON object to flatten. + parent_key (str): The base key for recursion (used to track key hierarchy). + + Returns: + dict: A flattened dictionary with concatenated keys. + """ + flat_dict = {} + + for key, value in nested_json.items(): + # Create the new key by concatenating parent and current key + new_key = f"{parent_key}.{key}" if parent_key else key + + if isinstance(value, dict): + # Recursively flatten the nested dictionary + flat_dict.update(flatten_json(value, new_key)) + else: + # Assign the value to the flattened key + flat_dict[new_key] = value + + return flat_dict def load_translation(filepath): """Load translation from a file. @@ -104,7 +129,8 @@ def load_translation(filepath): if not content.strip(): raise ValueError(f"File {filepath} is empty.") translation = json.loads(content) - return translation + flattened_translation = flatten_json(translation) + return flattened_translation except json.JSONDecodeError as e: raise ValueError(f"Error decoding JSON from file {filepath}: {e}") @@ -170,7 +196,7 @@ def main(): "--directory", type=str, nargs="?", - default=os.path.join(os.getcwd(), "locales"), + default=os.path.join(os.getcwd(), "public/locales"), help="Directory containing translation files(relative to the root directory).", ) args = parser.parse_args() diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 1ec7380c6c..3846371ed5 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -30,7 +30,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: '20.x' + node-version: '22.x' - name: Install Dependencies run: npm install @@ -58,6 +58,9 @@ jobs: CHANGED_FILES: ${{ steps.changed_files.outputs.all_changed_files }} run: npx eslint ${CHANGED_FILES} + - name: Check for TSDoc comments + run: npm run check-tsdoc # Run the TSDoc check script + - name: Check for localStorage Usage run: | chmod +x scripts/githooks/check-localstorage-usage.js @@ -173,7 +176,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: '20.x' + node-version: '22.x' - name: Install Dependencies run: npm install @@ -218,7 +221,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: '20.x' + node-version: '22.x' - name: resolve dependency run: npm install -g @graphql-inspector/cli diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 0542490787..67e49556b4 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [20.x] + node-version: [22.x] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 @@ -58,128 +58,3 @@ jobs: fail_ci_if_error: false name: '${{env.CODECOV_UNIQUE_NAME}}' - Generate-Documentation: - runs-on: ubuntu-latest - if: github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/automated-docs' - steps: - - name: Checkout the Repository - uses: actions/checkout@v4 - # with: - # ref: develop - - # - name: Pull latest changes from develop - # run: git pull origin develop - - - name: Node.js Version - uses: actions/setup-node@v4 - with: - node-version: '20' - - - name: Restore node_modules from cache - id: cache-npm - uses: actions/cache@v4 - env: - cache-name: cache-node-modules - with: - path: | - ~/.npm - node_modules - key: ${{ runner.os }}-generate-docs-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-generate-docs-${{ env.cache-name }}- - ${{ runner.os }}-generate-docs- - ${{ runner.os }}- - - - name: Install dependencies - run: npm install - - - name: Install TypeScript Globally and add GraphQL tag - run: yarn global add typescript - - run: yarn add graphql-tag - - - name: Update Dependencies - run: yarn upgrade - - - name: Generate Documentation of Markdown pages - run: | - npm install --global typedoc - npm install typedoc-plugin-markdown - npm install --save-dev @types/node - npx typedoc --entryPoints src/components src/screens --out talawa-admin-docs --plugin typedoc-plugin-markdown --theme markdown --entryPointStrategy expand --exclude "**/*.test.ts" --exclude "**/*.css" - - - name: Make Markdown Files MDX Compatible - run: python ./.github/workflows/md_mdx_format_adjuster.py --directory talawa-admin-docs - - - - name: Checking doc updated - id: DocUpdated - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "updateDoc=true" >> $GITHUB_OUTPUT - echo -e "Documentation has been updated!!" - else - Green='0;32' - NoColor='\033[0m' - echo -e "${Green}No documentation updated${NoColor}" - fi - - - name: Set env variables - if: steps.DocUpdated.outputs.updateDoc - run: | - echo "commit_id=$(echo $(git rev-parse HEAD))" >> $GITHUB_ENV - echo "email=$(echo $(git log --pretty=format:"%ae" $commit_id))" >> $GITHUB_ENV - - - name: Update Doc - if: steps.DocUpdated.outputs.updateDoc - run: | - Green='0;32' - NoColor='\033[0m' - git config --global user.name "${{github.actor}}" - git config --global user.email "${{env.email}}" - git add . - git commit -m "Update documentation" - git push origin develop:automated-docs --force - echo -e "🚀${Green} Hurrah! doc updated${NoColor}" - - - name: Create Documentation Artifact - uses: actions/upload-artifact@v2 - with: - name: documentation-admin - path: talawa-admin-docs - - Empty-Commit: - name: Create Empty Commit - runs-on: ubuntu-latest - if: github.ref == 'refs/heads/develop' - needs: Generate-Documentation - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - persist-credentials: false - token: ${{ secrets.TALAWA_DOCS_SYNC }} - - name: Empty Commit - run: | - git config --global user.name "${{github.actor}}" - git config --global user.email "${{env.email}}" - git config --global url.https://${{ secrets.TALAWA_DOCS_SYNC }}@github.com/.insteadOf https://github.com/ - git commit --allow-empty -m "Trigger Documentation Workflow" - git push origin develop:automated-docs --force - - Copy-docs-to-talawa-docs: - if: github.ref == 'refs/heads/automated-docs' - needs: Generate-Documentation - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: dmnemec/copy_file_to_another_repo_action@v1.1.1 - env: - API_TOKEN_GITHUB: ${{secrets.TALAWA_DOCS_SYNC}} - with: - source_file: 'talawa-admin-docs/' - destination_repo: 'PalisadoesFoundation/talawa-docs' - destination_branch: 'develop' - destination_folder: 'docs/' - user_email: '${{env.email}}' - user_name: '${{github.actor}}' - commit_message: 'Talawa Admin docs updated' diff --git a/.node-version b/.node-version index 790e1105f2..751f4c9f38 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -v20.10.0 +v22.7.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 668c5d8707..dbe448c807 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,6 +9,7 @@ If you are new to contributing to open source, please read the Open Source Guide - [Code of Conduct](#code-of-conduct) +- [Videos](#videos) - [Ways to Contribute](#ways-to-contribute) - [Our Development Process](#our-development-process) - [Issues](#issues) @@ -31,6 +32,7 @@ No one should fear voicing their opinion. Respones must be respectful. 1. Visit our [YouTube Channel playlists](https://www.youtube.com/@PalisadoesOrganization/playlists) for more insights 1. The "[Getting Started - Developers](https://www.youtube.com/watch?v=YpBUoHxEeyg&list=PLv50qHwThlJUIzscg9a80a9-HmAlmUdCF&index=1)" videos are extremely helpful for new open source contributors. + ## Ways to Contribute If you are ready to start contributing code right away, get ready! diff --git a/config/babel.config.cjs b/config/babel.config.cjs new file mode 100644 index 0000000000..10cfe1914a --- /dev/null +++ b/config/babel.config.cjs @@ -0,0 +1,8 @@ +module.exports = { + presets: [ + '@babel/preset-env', // Transforms modern JavaScript + '@babel/preset-typescript', // Transforms TypeScript + '@babel/preset-react', // Transforms JSX + ], + plugins: ['babel-plugin-transform-import-meta'], +}; diff --git a/config/vite.config.ts b/config/vite.config.ts new file mode 100644 index 0000000000..71ce6c6f47 --- /dev/null +++ b/config/vite.config.ts @@ -0,0 +1,30 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsconfigPaths from 'vite-tsconfig-paths'; +import svgrPlugin from 'vite-plugin-svgr'; +import EnvironmentPlugin from 'vite-plugin-environment'; + +export default defineConfig({ + // depending on your application, base can also be "/" + build: { + outDir: 'build', + }, + base: '', + plugins: [ + react(), + viteTsconfigPaths(), + EnvironmentPlugin('all'), + svgrPlugin({ + svgrOptions: { + icon: true, + // ...svgr options (https://react-svgr.com/docs/options/) + }, + }), + ], + server: { + // this ensures that the browser opens upon server start + open: true, + // this sets a default port to 3000 + port: 4321, + }, +}); diff --git a/public/index.html b/index.html similarity index 64% rename from public/index.html rename to index.html index 3bd6e258e7..4375f88592 100644 --- a/public/index.html +++ b/index.html @@ -1,12 +1,12 @@ - +
- + - - + + - +@B;cpz)B6D9z#)g3sXMY
zaa+t!3HYuvB@O+u@4g)lef*d1D~Omxk-gd>S4(r}5P<}ooJ4LUYeJQ#SID{CgHb9M
zQMGWsWig-ExK0BozpQMR?D#V6fopnKu({2D)k3q+nm9V$z=x2f*R5avJok&PEsKU9
zCS!P@a+WawLUe-O9YGi4q+i^w-IwI_Cj+6u2-)ppNQt!;@+%h$$4;G(pPl(%Ne-SB
zHc5F@^Rz$4b$Ne?G(vrIm)>t|bl+e`UcGd_TiEl@X(%BTIc4+XTWfqel2Qf4PLNdP
z?fA%$K6JpCOcC9)2&Y{$E$Z7}i2D!{fn#BHn83R|<{Kp*qq-hO=XhMWv=w2J;-`t-ch8LD {t('actionItemStatus')}
;lE
z++~$Zv#)y
}
-
- Error occured while loading{' '}
- {actionItemCategoriesError
- ? 'Action Item Categories'
- : membersError
- ? 'Members List'
- : 'Action Items List'}{' '}
- Data
-
-
- {actionItemCategoriesError
- ? actionItemCategoriesError.message
- : membersError
- ? membersError.message
- : actionItemsError?.message}
-