Skip to content

Commit 4758e6d

Browse files
committed
Merge branch 'dev' of https://github.com/oslabs-beta/ReacType-v15 into Yoheze/websockets
2 parents 93b462c + 29565f4 commit 4758e6d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+405
-2129
lines changed

app/src/Dashboard/NavbarDash.tsx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@ import HomeIcon from '@mui/icons-material/Home';
1313
import Toolbar from '@mui/material/Toolbar';
1414
import Typography from '@mui/material/Typography';
1515
import { Link } from 'react-router-dom';
16-
import { styleContext } from '../containers/AppContainer';
16+
// import { styleContext } from '../containers/AppContainer';
1717
import Menu from '@mui/material/Menu';
1818
import MenuItem from '@mui/material/MenuItem';
1919
import SortIcon from '@mui/icons-material/Sort';
2020
import StarBorderIcon from '@mui/icons-material/StarBorder';
2121
import PersonIcon from '@mui/icons-material/Person';
2222
import greenLogo from '../public/icons/png/512x512.png';
23+
import {setStyle} from '../redux/reducers/slice/styleSlice'
24+
import { useSelector,useDispatch } from 'react-redux';
2325

2426
// NavBar text and button styling
2527
const useStyles = makeStyles((theme: Theme) => createStyles({
@@ -75,7 +77,9 @@ const StyledMenuItem = withStyles(theme => ({
7577
export default function NavBar(props) {
7678
// TO DO: import setStyle
7779
const classes = useStyles();
78-
const { style, setStyle } = useContext(styleContext);
80+
// const { style, setStyle } = useContext(styleContext);
81+
const style = useSelector(store => store.styleSlice);
82+
const dispatch = useDispatch();
7983
const toggling = () => setIsOpen(!isOpen);
8084
// toggle to open and close dropdown sorting menu
8185
const [isOpen, setIsOpen] = useState(false);
@@ -143,11 +147,17 @@ export default function NavBar(props) {
143147
style={{minWidth: '113.97px'}}
144148
endIcon={props.isThemeLight ? <Brightness3Icon/> : <Brightness5Icon/>}
145149
onClick={() => {
146-
!props.styles[0].backgroundColor
147-
? props.styles[1]({ backgroundColor: '#21262D' }) //dark mode color
148-
: props.styles[1]({ backgroundColor: null })
150+
!style.backgroundColor
151+
? dispatch(setStyle({ backgroundColor: '#21262D' })) //dark mode color
152+
: dispatch(setStyle( null ))
149153
props.isThemeLight ? props.setTheme(false) : props.setTheme(true);
150154
}}
155+
// onClick={() => {
156+
// !props.styles[0].backgroundColor
157+
// ? props.styles[1]({ backgroundColor: '#21262D' }) //dark mode color
158+
// : props.styles[1]({ backgroundColor: null })
159+
// props.isThemeLight ? props.setTheme(false) : props.setTheme(true);
160+
// }}
151161
>
152162
{props.isThemeLight ? 'Dark Mode' : 'Light Mode'}
153163
</Button>

app/src/Dashboard/ProjectContainer.tsx

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
import React, { useState, useContext, createContext } from 'react';
1+
import React, { useState} from 'react';
22
import { ThemeProvider, Theme, StyledEngineProvider, useTheme } from '@mui/material/styles';
33
import makeStyles from '@mui/styles/makeStyles';
44
import { useQuery } from '@apollo/client';
55
import Tabs from '@mui/material/Tabs';
66
import Tab from '@mui/material/Tab';
7-
87
import Box from '@mui/material/Box';
98
import { GET_PROJECTS } from './gqlStrings';
109
import Project from './Project';
1110
import NavBarDash from './NavbarDash';
12-
11+
import { useSelector } from 'react-redux';
1312
import { theme1, theme2 } from '../public/styles/theme';
1413

1514

@@ -23,10 +22,10 @@ declare module '@mui/styles/defaultTheme' {
2322
// 1) Impliment Apollo Provider in the top component in ./src/index.js, this allows children components access to the queried data
2423
// 2) useQuery hook will update the data stored in Apollo Client's cache and automatically trigger child components rendering
2524

26-
export const styleContext = createContext({
27-
style: null,
28-
setStyle: null
29-
});
25+
// export const styleContext = createContext({
26+
// style: null,
27+
// setStyle: null
28+
// });
3029

3130
// setting light and dark themes (navbar and background); linked to theme.ts
3231
const lightTheme = theme1;
@@ -84,11 +83,11 @@ const TabPanelItem = (props: TabPanelProps): JSX.Element => {
8483
const useStyles = makeStyles(theme => ({
8584
root: {
8685
flexGrow: 1,
87-
backgroundColor: theme.palette.background.paper,
86+
// backgroundColor: theme.palette.background.paper,
8887
display: 'flex'
8988
},
9089
tabs: {
91-
borderRight: `1px solid ${theme.palette.divider}`
90+
// borderRight: `1px solid ${theme.palette.divider}`
9291
}
9392
}));
9493
// End of prefab code to generate a tab panel
@@ -104,8 +103,9 @@ const ProjectContainer = (): JSX.Element => {
104103
const userSSID = window.localStorage.getItem('ssid') || 'unavailable';
105104
const username = window.localStorage.getItem('username') || 'unavailable';
106105
const [isThemeLight, setTheme] = useState(true);
107-
const initialStyle = useContext(styleContext);
108-
const [style, setStyle] = useState(initialStyle);
106+
// const initialStyle = useContext(styleContext);
107+
// const [style, setStyle] = useState(initialStyle);
108+
const style = useSelector(store => store.styleSlice)
109109
// hook for sorting menu
110110
const [selectedOption, setSelectedOption] = useState('RATING');
111111
const sortByRating = projects => {
@@ -163,7 +163,7 @@ const ProjectContainer = (): JSX.Element => {
163163
<div className={'dashboardContainer'}>
164164
<NavBarDash
165165
setTheme={setTheme}
166-
styles={[style, setStyle]}
166+
// styles={[style]}
167167
isThemeLight={isThemeLight}
168168
optionClicked={optionClicked}
169169
/>

app/src/components/App.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ import '../public/styles/style.css';
33
import { DndProvider } from 'react-dnd';
44
import { HTML5Backend } from 'react-dnd-html5-backend';
55
import AppContainer from '../containers/AppContainer';
6-
import StateContext from '../context/context';
7-
import initialState from '../context/initialState';
8-
import reducer from '../reducers/componentReducer';
96
import localforage from 'localforage';
107
import { saveProject } from '../helperFunctions/projectGetSaveDel';
118
import Cookies from 'js-cookie';
@@ -110,9 +107,9 @@ export const App = (): JSX.Element => {
110107
>
111108
ReacType
112109
</header>
113-
<StateContext.Provider value = {[state, dispatch]}>
110+
114111
<AppContainer />
115-
</StateContext.Provider>
112+
116113
</DndProvider>
117114
</div>
118115
);

app/src/components/ContextAPIManager/AssignTab/AssignContainer.tsx

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useContext, useState, Fragment, useEffect } from 'react';
1+
import React, { useState, Fragment } from 'react';
22
import DataTable from '../CreateTab/components/DataTable';
33
import ContextDropDown from './components/ContextDropDown';
44
import ComponentDropDown from './components/ComponentDropDrown';
@@ -7,34 +7,25 @@ import Grid from '@mui/material/Grid';
77
import ComponentTable from './components/ComponentTable';
88
import { Button } from '@mui/material';
99
import DoubleArrowIcon from '@mui/icons-material/DoubleArrow';
10-
// import * as actions from '../../../redux/actions/actions';
11-
import StateContext from '../../../context/context';
12-
import { addComponentToContext } from '../../../redux/reducers/slice/contextReducer'
13-
import { useSelector, useDispatch, useStore, } from 'react-redux';
10+
import { addComponentToContext } from '../../../redux/reducers/slice/contextReducer';
11+
import { useSelector, useDispatch, useStore } from 'react-redux';
1412
import { deleteElement } from '../../../redux/reducers/slice/appStateSlice';
1513

1614
const AssignContainer = () => {
17-
const store = useStore();
1815
const dispatch = useDispatch();
19-
20-
// const [state, setState] = useState([]);
2116
const defaultTableData = [{ key: 'Key', value: 'Value' }];
2217
const [tableState, setTableState] = React.useState(defaultTableData);
2318
const [contextInput, setContextInput] = React.useState(null);
2419
const [componentInput, setComponentInput] = React.useState(null);
2520
const [componentTable, setComponentTable] = useState([]);
26-
// const [stateContext, dispatchContext] = useContext(StateContext);
2721
const { state, contextParam } = useSelector((store) => ({
2822
state: store.appState,
29-
contextParam: store.contextSlice,
23+
contextParam: store.contextSlice
3024
}));
3125

32-
//fetching data from redux store
33-
// useEffect(() => {
34-
// setState(allContext);
35-
// }, [allContext]);
3626

37-
const renderTable = targetContext => {
27+
28+
const renderTable = (targetContext) => {
3829
if (targetContext === null || !targetContext.values) {
3930
setTableState(defaultTableData);
4031
} else {
@@ -43,7 +34,7 @@ const AssignContainer = () => {
4334
};
4435

4536
//construct data for table displaying component table
46-
const renderComponentTable = targetComponent => {
37+
const renderComponentTable = (targetComponent) => {
4738
//target Component is main
4839

4940
const listOfContexts = [];
@@ -52,7 +43,7 @@ const AssignContainer = () => {
5243
targetComponent !== null &&
5344
targetComponent.name
5445
) {
55-
contextParam.allContext.forEach(context => {
46+
contextParam.allContext.forEach((context) => {
5647
if (context.components.includes(targetComponent.name)) {
5748
listOfContexts.push(context.name);
5849
}
@@ -77,14 +68,7 @@ const AssignContainer = () => {
7768
})
7869
);
7970
//trigger generateCode(), update code preview tab
80-
dispatch(deleteElement({id:'FAKE_ID', contextParam: contextParam}))
81-
82-
// dispatchContext({
83-
// type: 'DELETE ELEMENT',
84-
// payload: 'FAKE_ID'
85-
// });
86-
87-
// setState(allContext);
71+
dispatch(deleteElement({ id: 'FAKE_ID', contextParam: contextParam }));
8872
renderComponentTable(componentInput);
8973
};
9074

app/src/components/ContextAPIManager/AssignTab/components/ComponentDropDrown.tsx

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ import React, { Fragment, useState, useEffect, useContext } from 'react';
22
import TextField from '@mui/material/TextField';
33
import Autocomplete, { createFilterOptions } from '@mui/material/Autocomplete';
44
import Box from '@mui/material/Box';
5-
import StateContext from '../../../../context/context';
5+
66
import { useSelector } from 'react-redux';
7+
import { Store } from 'redux';
78

89
const filter = createFilterOptions();
910

@@ -15,8 +16,11 @@ const ComponentDropDown = ({
1516
}) => {
1617
const { allContext } = contextStore;
1718
// const [componentList] = useContext(StateContext);
18-
const state = useSelector(store => store.appState)
19-
19+
const {state, isDarkMode} = useSelector(store =>({
20+
state: store.appState,
21+
isDarkMode: store.darkMode.isDarkMode
22+
} ))
23+
const color = isDarkMode ? "white":"black"
2024
const onChange = (event, newValue) => {
2125
if (typeof newValue === 'string') {
2226
setComponentInput({
@@ -66,11 +70,11 @@ const ComponentDropDown = ({
6670
return option.name;
6771
};
6872

69-
const renderOption = (props, option) => <li {...props}>{option.name}</li>;
73+
const renderOption = (props, option) => <li style={{ color: "black", border: "1px solid black" }} {...props}>{option.name}</li>;
7074

7175
return (
7276
<Fragment>
73-
<Box sx={{ display: 'flex', gap: 2, mb: 4 }}>
77+
<Box sx={{ display: 'flex', gap: 2, mb: 4}}>
7478
<Autocomplete
7579
id="autoCompleteContextField"
7680
value={componentInput}
@@ -82,15 +86,18 @@ const ComponentDropDown = ({
8286
options={state.components || []}
8387
getOptionLabel={getOptionLabel}
8488
renderOption={renderOption}
85-
sx={{ width: 425 }}
89+
sx={{ width: 425, border: "1px solid black" }}
8690
freeSolo
8791
renderInput={params => (
88-
<TextField {...params} label="Select Component" helperText='Select a component for your selected context to consume' />
92+
<TextField {...params} InputProps={{
93+
...params.InputProps,
94+
style: { color: color },
95+
}} label="Select Component" helperText='Select a component for your selected context to consume' />
8996
)}
9097
/>
9198
</Box>
9299
</Fragment>
93100
);
94101
};
95102

96-
export default ComponentDropDown;
103+
export default ComponentDropDown;

app/src/components/ContextAPIManager/AssignTab/components/ComponentTable.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,4 @@ export default function DataTable({ target }) {
4949
</Table>
5050
</TableContainer>
5151
);
52-
}
52+
}

app/src/components/ContextAPIManager/AssignTab/components/ContextDropDown.tsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import Autocomplete, { createFilterOptions } from '@mui/material/Autocomplete';
44
import Button from '@mui/material/Button';
55
import Box from '@mui/material/Box';
66
import { Typography } from '@mui/material';
7+
import { useSelector } from 'react-redux';
78

89
const filter = createFilterOptions();
910

@@ -15,6 +16,8 @@ const ContextDropDown = ({
1516
}) => {
1617
const { allContext } = contextStore;
1718

19+
const isDarkMode = useSelector(store => store.darkMode.isDarkMode)
20+
const color = isDarkMode ? "white":"black"
1821
const onChange = (event, newValue) => {
1922
if (typeof newValue === 'string') {
2023
setContextInput({
@@ -64,11 +67,11 @@ const ContextDropDown = ({
6467
return option.name;
6568
};
6669

67-
const renderOption = (props, option) => <li {...props}>{option.name}</li>;
70+
const renderOption = (props, option) => <li style={{ color:"black", border: "1px solid black" }} {...props}>{option.name}</li>;
6871

6972
return (
7073
<Fragment>
71-
<Box sx={{ display: 'flex', gap: 2, mb: 4 }}>
74+
<Box sx={{ display: 'flex', gap: 2, mb: 4, border:"1px black solid" }}>
7275
<Autocomplete
7376
id="autoCompleteContextField"
7477
value={contextInput}
@@ -83,12 +86,17 @@ const ContextDropDown = ({
8386
sx={{ width: 425 }}
8487
freeSolo
8588
renderInput={params => (
86-
<TextField {...params} label="Select Context" helperText='Select a context you would like to assign'/>
89+
<TextField {...params}
90+
InputProps={{
91+
...params.InputProps,
92+
style: { color },
93+
}}
94+
label="Select Context" helperText='Select a context you would like to assign'/>
8795
)}
8896
/>
8997
</Box>
9098
</Fragment>
9199
);
92100
};
93101

94-
export default ContextDropDown;
102+
export default ContextDropDown;

app/src/components/ContextAPIManager/AssignTab/components/ContextTable.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,4 @@ export default function ContextTable() {
6969
</Table>
7070
</TableContainer>
7171
);
72-
}
72+
}

app/src/components/ContextAPIManager/ContextManager.tsx

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
2+
13
import React, { useContext } from 'react';
24
import { makeStyles } from '@mui/styles';
35
import Box from '@mui/material/Box';
@@ -20,7 +22,10 @@ const useStyles = makeStyles({
2022
});
2123

2224
const ContextManager = (props): JSX.Element => {
23-
const isDarkMode = useSelector(state => state.darkMode.isDarkMode);
25+
const { isDarkMode, style } = useSelector((store) => ({
26+
isDarkMode: store.darkMode.isDarkMode,
27+
style: store.styleSlice
28+
}));
2429
const classes = useStyles();
2530
const [value, setValue] = React.useState<string>('1');
2631

@@ -29,17 +34,18 @@ const ContextManager = (props): JSX.Element => {
2934
};
3035

3136
const background_Color = isDarkMode ? '#21262b' : 'white'
37+
const color = isDarkMode ? 'white' : 'black'
3238

3339
return (
3440
<React.Fragment>
35-
<div className={classes.contextContainer} style={{backgroundColor: background_Color}}>
41+
<div className={classes.contextContainer} style={style.style}>
3642
<Box sx={{ width: '100%', typography: 'body1' }}>
37-
<TabContext value={value}>
43+
<TabContext value={value} sx={{color:color}}>
3844
<Box sx={{ borderBottom: 1, borderColor: 'divider' }}>
39-
<TabList onChange={handleChange} centered={true}>
40-
<Tab label="Create/Edit" value="1" />
41-
<Tab label="Assign" value="2" />
42-
<Tab label="Display" value="3" />
45+
<TabList onChange={handleChange} centered={true} sx={{color:color}}>
46+
<Tab style={ { color: color }}label="Create/Edit" value="1" />
47+
<Tab style={{ color: color }} label="Assign" value="2" />
48+
<Tab style={{ color: color }} label="Display" value="3" />
4349
</TabList>
4450
</Box>
4551
<TabPanel value="1">
@@ -58,4 +64,4 @@ const ContextManager = (props): JSX.Element => {
5864
);
5965
};
6066

61-
export default ContextManager;
67+
export default ContextManager;

0 commit comments

Comments
 (0)