Skip to content

Commit 096eab9

Browse files
committed
2024-11-01 - external-recip jsx
1 parent 5f07db4 commit 096eab9

7 files changed

+402
-1
lines changed

web-ui/index_external_recipient.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,6 @@
3939
To begin the development, run `npm start` or `yarn start`.
4040
To create a production bundle, use `npm run build` or `yarn build`.
4141
-->
42-
<script type="module" src="/src/index.jsx"></script>
42+
<script type="module" src="/src/index_feedback_external_recipient.jsx"></script>
4343
</body>
4444
</html>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
@import 'styles/variables.css';
2+
3+
.AppFeedbackExternalRecipient {
4+
display: flex;
5+
flex-direction: column;
6+
justify-content: center;
7+
8+
a,
9+
a:visited {
10+
color: var(--checkins-palette-primary-link);
11+
}
12+
13+
a:hover {
14+
color: var(--checkins-palette-primary-link-hover);
15+
}
16+
}
17+
18+
@media (min-width: 600px) {
19+
.App {
20+
margin-top: 65px;
21+
padding-left: var(--nav-width);
22+
}
23+
}
24+
25+
@media print {
26+
:root {
27+
--nav-width: 0px;
28+
}
29+
30+
.App {
31+
padding-left: 0;
32+
}
33+
}
34+
35+
.App-header {
36+
align-items: center;
37+
display: flex;
38+
flex-direction: column;
39+
font-size: calc(10px + 2vmin);
40+
justify-content: center;
41+
min-height: 100vh;
42+
}
43+
44+
textarea {
45+
resize: none;
46+
}
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
import React from 'react';
2+
import { Router } from 'react-router-dom';
3+
import { ErrorBoundary } from 'react-error-boundary';
4+
import { createBrowserHistory } from 'history';
5+
6+
import RoutesFeedbackExternalRecipient from './components/routes/RoutesFeedbackExternalRecipient';
7+
import ErrorFallback from './pages/ErrorBoundaryPage';
8+
import SnackBarWithContext from './components/snackbar/SnackBarWithContext';
9+
import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
10+
import { LocalizationProvider } from '@mui/x-date-pickers';
11+
import { DarkMode, LightMode } from '@mui/icons-material';
12+
13+
import {
14+
useColorScheme,
15+
experimental_extendTheme as extendTheme,
16+
Experimental_CssVarsProvider as CssVarsProvider
17+
} from '@mui/material/styles';
18+
19+
import './AppFeedbackExternalRecipient.css';
20+
import {AppFeedbackExternalRecipientContextProvider} from "./context/AppFeedbackExternalRecipientContext.jsx";
21+
22+
function getUserColorScheme() {
23+
if (window?.matchMedia('(prefers-color-scheme: dark)').matches) {
24+
return 'dark';
25+
} else if (window?.matchMedia('(prefers-color-scheme: light)').matches) {
26+
return 'light';
27+
} else {
28+
return 'light';
29+
}
30+
}
31+
32+
33+
const theme = extendTheme({
34+
cssVarPrefix: 'checkins',
35+
colorSchemes: {
36+
light: {
37+
palette: {
38+
secondary: {
39+
main: '#76c8d4'
40+
}
41+
}
42+
},
43+
dark: {
44+
palette: {
45+
secondary: {
46+
main: '#76c8d4'
47+
}
48+
}
49+
}
50+
},
51+
components: {
52+
MuiCssBaseline: {
53+
styleOverrides: {
54+
secondary: {
55+
main: '#f8b576'
56+
},
57+
body: {
58+
fontSize: '0.875rem',
59+
lineHeight: 1.43,
60+
letterSpacing: '0.01071rem'
61+
}
62+
}
63+
}
64+
}
65+
});
66+
67+
68+
getUserColorScheme();
69+
70+
function AppFeedbackExternalRecipient() {
71+
return (
72+
<CssVarsProvider theme={theme}>
73+
<LocalizationProvider dateAdapter={AdapterDateFns}>
74+
<Router>
75+
<AppFeedbackExternalRecipientContextProvider>
76+
<ErrorBoundary FallbackComponent={ErrorFallback}>
77+
<div>
78+
<div className="AppFeedbackExternalRecipient">
79+
<RoutesFeedbackExternalRecipient />
80+
</div>
81+
</div>
82+
</ErrorBoundary>
83+
<SnackBarWithContext />
84+
</AppFeedbackExternalRecipientContextProvider>
85+
</Router>
86+
</LocalizationProvider>
87+
</CssVarsProvider>
88+
);
89+
}
90+
91+
export default AppFeedbackExternalRecipient;
Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
1+
import React, { useContext } from 'react';
2+
import { Switch, Route } from 'react-router-dom';
3+
4+
import { AppContext } from '../../context/AppContext';
5+
6+
import AnniversaryReportPage from '../../pages/AnniversaryReportPage';
7+
import AnnualReviewReportPage from '../../pages/AnnualReviewReportPage';
8+
import BirthdayReportPage from '../../pages/BirthdayReportPage';
9+
import CertificationReportPage from '../../pages/CertificationReportPage';
10+
import CheckinsPage from '../../pages/CheckinsPage';
11+
import CheckinsReportPage from '../../pages/CheckinsReportPage';
12+
import EditPermissionsPage from '../../pages/PermissionsPage';
13+
import EditSkillsPage from '../../pages/EditSkillsPage';
14+
import GroupIcon from '@mui/icons-material/Group';
15+
import GuildsPage from '../../pages/GuildsPage';
16+
import Header from '../header/Header';
17+
import HomePage from '../../pages/HomePage';
18+
import MemberProfilePage from '../../pages/MemberProfilePage';
19+
import PeoplePage from '../../pages/PeoplePage';
20+
import PulsePage from '../../pages/PulsePage';
21+
import PulseReportPage from '../../pages/PulseReportPage';
22+
import Roles from '../admin/roles/Roles';
23+
import SettingsPage from '../../pages/SettingsPage';
24+
import SkillReportPage from '../../pages/SkillReportPage';
25+
import TeamSkillReportPage from '../../pages/TeamSkillReportPage';
26+
import TeamsPage from '../../pages/TeamsPage';
27+
import MeritReportPage from '../../pages/MeritReportPage';
28+
import Users from '../admin/users/Users';
29+
import VolunteerReportPage from '../../pages/VolunteerReportPage';
30+
31+
import { selectIsAdmin } from '../../context/selectors';
32+
import FeedbackRequestConfirmation from '../feedback_request_confirmation/FeedbackRequestConfirmation';
33+
import FeedbackRequestPage from '../../pages/FeedbackRequestPage';
34+
import ViewFeedbackPage from '../../pages/ViewFeedbackPage';
35+
import ViewFeedbackResponses from '../view_feedback_responses/ViewFeedbackResponses';
36+
import FeedbackSubmitConfirmation from '../feedback_submit_confirmation/FeedbackSubmitConfirmation';
37+
import FeedbackSubmitPage from '../../pages/FeedbackSubmitPage';
38+
import ReceivedRequestsPage from '../../pages/ReceivedRequestsPage';
39+
import EmailPage from '../../pages/EmailPage';
40+
import ReviewsPage from '../../pages/ReviewsPage';
41+
import SelfReviewsPage from '../../pages/SelfReviewsPage';
42+
import KudosPage from '../../pages/KudosPage';
43+
import ManageKudosPage from '../../pages/ManageKudosPage';
44+
import SkillCategoriesPage from '../../pages/SkillCategoriesPage';
45+
import SkillCategoryEditPage from '../../pages/SkillCategoryEditPage';
46+
import FeedbackRequestForExternalRecipientPage from "../../pages/FeedbackRequestForExternalRecipientPage.jsx";
47+
import {AppFeedbackExternalRecipientContext} from "../../context/AppFeedbackExternalRecipientContext.jsx";
48+
49+
export default function RoutesFeedbackExternalRecipient() {
50+
const { state } = useContext(AppFeedbackExternalRecipientContext);
51+
52+
return (
53+
<Switch>
54+
<Route path="/teams">
55+
<Header title="Teams">
56+
<GroupIcon fontSize="large" />
57+
</Header>
58+
<TeamsPage />
59+
</Route>
60+
<Route path="/guilds">
61+
<Header title="Guilds & Communities" />
62+
<GuildsPage />
63+
</Route>
64+
<Route exact path="/">
65+
<Header />
66+
<HomePage />
67+
</Route>
68+
<Route path="/people">
69+
<Header title="People" />
70+
<PeoplePage />
71+
</Route>
72+
<Route path="/pulse">
73+
<Header title="Pulse" />
74+
<PulsePage />
75+
</Route>
76+
<Route path="/checkins/:memberId?/:checkinId?">
77+
<Header title="Check-ins" />
78+
<CheckinsPage />
79+
</Route>
80+
<Route path="/profile/:memberId?">
81+
<Header title="Member Profile" />
82+
<MemberProfilePage />
83+
</Route>
84+
<Route exact path="/feedback/request/confirmation">
85+
<FeedbackRequestConfirmation />
86+
</Route>
87+
<Route path="/feedback/request">
88+
<FeedbackRequestPage />
89+
</Route>
90+
<Route exact path="/feedback/view">
91+
<ViewFeedbackPage />
92+
</Route>
93+
<Route exact path="/feedback/view/responses">
94+
<ViewFeedbackResponses />
95+
</Route>
96+
<Route exact path="/feedback/submit/confirmation">
97+
<FeedbackSubmitConfirmation />
98+
</Route>
99+
<Route path="/feedback/submit">
100+
<FeedbackSubmitPage />
101+
</Route>
102+
<Route path="/feedback/received-requests">
103+
<ReceivedRequestsPage />
104+
</Route>
105+
<Route path="/feedback/reviews">
106+
<ReviewsPage />
107+
</Route>
108+
<Route path="/feedback/self-reviews">
109+
<SelfReviewsPage />
110+
</Route>
111+
<Route exact path="/kudos">
112+
<Header title="Kudos" />
113+
<KudosPage />
114+
</Route>
115+
<Route path="/admin/edit-skills">
116+
<Header title="Skills" />
117+
<EditSkillsPage />
118+
</Route>
119+
<Route path="/admin/settings">
120+
<Header title="Settings" />
121+
<SettingsPage />
122+
</Route>
123+
<Route path="/admin/permissions">
124+
<Header title="Permissions" />
125+
<EditPermissionsPage />
126+
</Route>
127+
<Route path="/admin/skill-categories/:categoryId">
128+
<SkillCategoryEditPage />
129+
</Route>
130+
<Route path="/admin/skill-categories">
131+
<SkillCategoriesPage />
132+
</Route>
133+
<Route path="/checkins-reports">
134+
<Header title="Check-in Report" />
135+
<CheckinsReportPage />
136+
</Route>
137+
<Route path="/skills-reports">
138+
<Header title="Skill Report" />
139+
<SkillReportPage />
140+
</Route>
141+
<Route path="/team-skills-reports">
142+
<Header title="Team Skill Report" />
143+
<TeamSkillReportPage />
144+
</Route>
145+
<Route path="/anniversary-reports">
146+
<Header title="Anniversary Report" />
147+
<AnniversaryReportPage />
148+
</Route>
149+
<Route path="/birthday-reports">
150+
<Header title="Birthday Report" />
151+
<BirthdayReportPage />
152+
</Route>
153+
<Route path="/certification-reports">
154+
<Header title="Certification Report" />
155+
<CertificationReportPage />
156+
</Route>
157+
<Route path="/annual-review-reports">
158+
<Header title="Annual Review Report" />
159+
<AnnualReviewReportPage />
160+
</Route>
161+
<Route path="/merit-reports">
162+
<Header title="Merit Report" />
163+
<MeritReportPage />
164+
</Route>
165+
<Route path="/volunteer-reports">
166+
<Header title="Volunteering Report" />
167+
<VolunteerReportPage />
168+
</Route>
169+
<Route path="/pulse-reports">
170+
<Header title="Pulse Report" />
171+
<PulseReportPage />
172+
</Route>
173+
<Route path="/admin/roles">
174+
<Header title="Roles"></Header>
175+
<Roles />
176+
</Route>
177+
<Route path="/admin/users">
178+
<Header title="Users"></Header>
179+
<Users />
180+
</Route>
181+
<Route path="/admin/email">
182+
<Header title="Send Email"></Header>
183+
<EmailPage />
184+
</Route>
185+
<Route exact path="/feedback/request/confirmation">
186+
<FeedbackRequestConfirmation />
187+
</Route>
188+
<Route path="/feedback/request">
189+
<FeedbackRequestPage />
190+
</Route>
191+
<Route exact path="/feedback/view">
192+
<ViewFeedbackPage />
193+
</Route>
194+
<Route exact path="/feedback/view/responses">
195+
<ViewFeedbackResponses />
196+
</Route>
197+
<Route exact path="/feedback/submit/confirmation">
198+
<FeedbackSubmitConfirmation />
199+
</Route>
200+
<Route path="/feedback/submit">
201+
<FeedbackSubmitPage />
202+
</Route>
203+
<Route path="/feedbackExternalRecipient">
204+
<FeedbackRequestForExternalRecipientPage />
205+
</Route>
206+
<Route exact path="/admin/manage-kudos">
207+
<Header title="Manage Kudos"></Header>
208+
<ManageKudosPage />
209+
</Route>
210+
</Switch>
211+
);
212+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import React, { useEffect, useReducer, useMemo } from 'react';
2+
import { reducer, initialState } from './reducer';
3+
4+
const AppFeedbackExternalRecipientContext = React.createContext();
5+
6+
const AppFeedbackExternalRecipientContextProvider = props => {
7+
const [state, dispatch] = useReducer(
8+
reducer,
9+
props?.value?.state || initialState
10+
);
11+
12+
return (
13+
<AppFeedbackExternalRecipientContext.Provider value={props.value || value}>
14+
{props.children}
15+
</AppFeedbackExternalRecipientContext.Provider>
16+
);
17+
};
18+
19+
export { AppFeedbackExternalRecipientContext, AppFeedbackExternalRecipientContextProvider };
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
body {
2+
margin: 0;
3+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
4+
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
5+
sans-serif;
6+
-webkit-font-smoothing: antialiased;
7+
-moz-osx-font-smoothing: grayscale;
8+
}
9+
10+
code {
11+
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
12+
monospace;
13+
}

0 commit comments

Comments
 (0)